redis五大类型用法
本文内容纲要:
Redis五大类型:字符串(String)、哈希/散列/字典(Hash)、列表(List)、集合(Set)、有序集合(sorted set)五种
Controller:@ResourceRedisTemplate<String,String>redisTemplate;
总括:
redisTemplate.opsForValue();//操作字符串
redisTemplate.opsForHash();//操作hash
redisTemplate.opsForList();//操作list
redisTemplate.opsForSet();//操作set
redisTemplate.opsForZSet();//操作有序set
String:
1.redisTemplate.opsForValue().set(key,value));
2.redisTemplate.opsForValue().get(key));
3.redisTemplate.opsForValue().get(key,start,end);
4.redisTemplate.opsForValue().getAndSet(key,value);
5.redisTemplate.opsForValue().getBit(key,offset);//下方注释
6.redisTemplate.opsForValue().multiGet(keys);7.redisTemplate.opsForValue().setBit(key,offset,value);//下方注释8.redisTemplate.opsForValue().set(Kkey,Vvalue,longtimeout,TimeUnitunit);//TimeUnit是timeout的类型,如毫秒\秒\天等9.redisTemplate.opsForValue().setIfAbsent(key,value);10.redisTemplate.opsForValue().set(Kkey,Vvalue,longoffset);//博主此处未做java验证11.redisTemplate.opsForValue().size(key));12.redisTemplate.opsForValue().multiGet(Collection<K>keys);13.redisTemplate.opsForValue().multiSetIfAbsent(Map<?extendsK,?extendsV>m);14.同815\16\17\18\19.redisTemplate.opsForValue().increment(Kkey,longdelta);或.increment(Kkey,doubledelta);
20.redisTemplate.opsForValue().append(key,value);//在key键对应值的右面追加值value
可以看到并没有删除等方法,博主研究了一下可以这样:21.delkey------21.redisTemplate.opsForValue().getOperations().delete(key);
11.setBit(key,offset,value):key键对应的值value对应的ascii码,在offset的位置(从左向右数)变为value.(此处感谢@参考文章对我理解的帮助),由于二进制只有0和1,此处value只能取0和1,如图,其他值是超出范围的
.getBit(key,offset):获取键对应值的ascii码的在offset处位值.
@ascii码对照表
Hash:
1.redisTemplate.opsForHash().delete(Hkey,Object...hashKeys);//...表示可以传入多个map的key,用,隔开。或用数组传值
2.redisTemplate.opsForHash().hasKey(key,hashKey);
3.redisTemplate.opsForHash().get(key,hashKey);
4.redisTemplate.opsForHash().entries(key);//返回map集合
5、6.redisTemplate.opsForHash().increment(Hkey,HKhashKey,longdelta);//或increment(Hkey,HKhashKey,doubledelta);;
7.redisTemplate.opsForHash().keys(key);//返回map的key集合Set
8.redisTemplate.opsForHash().size(key);
9.redisTemplate.opsForHash().multiGet(Hkey,Collection<HK>hashKeys);
10.redisTemplate.opsForHash().putAll(Hkey,Map<?extendsHK,?extendsHV>m);
11.redisTemplate.opsForHash().put(key,hashKey,value);
12.redisTemplate.opsForHash().putIfAbsent(key,hashKey,value);
13.redisTemplate.opsForHash().values(key);//返回map中的value集合List;
| 命令 | 说明 | |
|---|---|---|
| 1 | HDELkeyfield2[field2] | 删除一个或多个哈希字段。 |
| 2 | HEXISTSkeyfield | 判断是否存在散列字段。 |
| 3 | HGETkeyfield | 获取存储在指定键的哈希字段的值。 |
| 4 | HGETALLkey | 获取存储在指定键的哈希中的所有字段和值 |
| 5 | HINCRBYkeyfieldincrement | 将哈希字段的整数值按给定数字增加 |
| 6 | HINCRBYFLOATkeyfieldincrement | 将哈希字段的浮点值按给定数值增加 |
| 7 | HKEYSkey | 获取哈希中的所有字段 |
| 8 | HLENkey | 获取散列中的字段数量 |
| 9 | HMGETkeyfield1[field2] | 获取所有给定哈希字段的值 |
| 10 | HMSETkeyfield1value1[field2value2] | 为多个哈希字段分别设置它们的值 |
| 11 | HSETkeyfieldvalue | 设置散列字段的字符串值 |
| 12 | HSETNXkeyfieldvalue | 仅当字段不存在时,才设置散列字段的值 |
| 13 | HVALSkey | 获取哈希中的所有值 |
List:
redisTemplate.opsForList().leftPush(key, value);//从左向右存压栈
redisTemplate.opsForList().leftPop(key);//从左出栈
redisTemplate.opsForList().size(key);//队/栈长
redisTemplate.opsForList().range(key, start, end);//范围检索,返回List
redisTemplate.opsForList().remove(key, i, value);//移除key中值为value的i个,返回删除的个数;如果没有这个元素则返回0
redisTemplate.opsForList().index(key, index);//检索
redisTemplate.opsForList().set(key, index, value);//赋值
redisTemplate.opsForList().trim(key, start, end);//裁剪,void,删除除了[start,end]以外的所有元素
redisTemplate.opsForList().rightPopAndLeftPush(StringsourceKey,StringdestinationKey);//将源key的队列的右边的一个值删除,然后塞入目标key的队列的左边,返回这个值
注意:要缓存的对象必须实现Serializable接口,因为Spring会将对象先序列化再存入Redis,否则报异常nestedexceptionisjava.lang.IllegalArgumentException:DefaultSerializerrequiresaSerializable……//;;/
| 命令 | 说明 | |
|---|---|---|
| 1 | BLPOPkey1[key2]timeout | 删除并获取列表中的第一个元素,或阻塞,直到有一个元素可用 |
| 2 | BRPOPkey1[key2]timeout | 删除并获取列表中的最后一个元素,或阻塞,直到有一个元素可用 |
| 3 | BRPOPLPUSHsourcedestinationtimeout | 从列表中弹出值,将其推送到另一个列表并返回它;或阻塞,直到一个可用 |
| 4 | LINDEXkeyindex | 通过其索引从列表获取元素 |
| 5 | LINSERTkeyBEFORE/AFTERpivotvalue | 在列表中的另一个元素之前或之后插入元素 |
| 6 | LLENkey | 获取列表的长度 |
| 7 | LPOPkey | 删除并获取列表中的第一个元素 |
| 8 | LPUSHkeyvalue1[value2] | 将一个或多个值添加到列表 |
| 9 | LPUSHXkeyvalue | 仅当列表存在时,才向列表添加值 |
| 10 | LRANGEkeystartstop | 从列表中获取一系列元素 |
| 11 | LREMkeycountvalue | 从列表中删除元素 |
| 12 | LSETkeyindexvalue | 通过索引在列表中设置元素的值 |
| 13 | LTRIMkeystartstop | 修剪列表的指定范围 |
| 14 | RPOPkey | 删除并获取列表中的最后一个元素 |
| 15 | RPOPLPUSHsourcedestination | 删除列表中的最后一个元素,将其附加到另一个列表并返回 |
| 16 | RPUSHkeyvalue1[value2] | 将一个或多个值附加到列表 |
| 17 | RPUSHXkeyvalue | 仅当列表存在时才将值附加到列表 |
Set:
redisTemplate.opsForValue().getAndSet(key,value)
| |
命令 | 说明 |
|---|---|---|
| 1 | SADDkeymember1[member2] | 将一个或多个成员添加到集合 |
| 2 | SCARDkey | 获取集合中的成员数 |
| 3 | SDIFFkey1[key2] | 减去多个集合 |
| 4 | SDIFFSTOREdestinationkey1[key2] | 减去多个集并将结果集存储在键中 |
| 5 | SINTERkey1[key2] | 相交多个集合 |
| 6 | SINTERSTOREdestinationkey1[key2] | 交叉多个集合并将结果集存储在键中 |
| 7 | SISMEMBERkeymember | 判断确定给定值是否是集合的成员 |
| 8 | SMOVEsourcedestinationmember | 将成员从一个集合移动到另一个集合 |
| 9 | SPOPkey | 从集合中删除并返回随机成员 |
| 10 | SRANDMEMBERkey[count] | 从集合中获取一个或多个随机成员 |
| 11 | SREMkeymember1[member2] | 从集合中删除一个或多个成员 |
| 12 | SUNIONkey1[key2] | 添加多个集合 |
| 13 | SUNIONSTOREdestinationkey1[key2] | 添加多个集并将结果集存储在键中 |
| 14 | SSCANkeycursor[MATCHpattern][COUNTcount] | 递增地迭代集合中的元素 |
艾玛,太累了,写着写着发现不用这么麻烦,看到文章中的表了吗?若在java中找不到相应方法就对照表中的一些”字段“在java中找,肯定能找到,而且基本不会浪费多少时间。关于List与Set万能的后人补充吧!
本文内容总结:
原文链接:https://www.cnblogs.com/yanan7890/p/6617305.html热门推荐
10 香港老妈结婚祝福语简短
11 毕业立体贺卡祝福语简短
12 简短新年年会祝福语
13 评论小品祝福语大全简短
14 恭喜师兄结婚祝福语简短
15 员工集体辞职祝福语简短
16 高中新生祝福语 简短
17 装修祝福语男生搞笑简短
18 生日开业蛋糕祝福语简短