boundHashOps主要用于操作Redis的字符串的,它可以先在boundHashOps(“key”)中写上key名,然后接方法名,这样以后的操作就不需要写key的名称,比如redisTemplate.boundHashOps(“key”).set(“value”);当我们需要对一个key同时做多个操作时,我们做如下操作:
Map map=new HashMap();
map.put("k1","v1");
map.put("k2","v2");
BoundHashOperations operations=redisTemplate.boundHashOps("key");
operations.putAll(map);
operations.delete("k1");
以下各方法皆来自于Redis的命令,命令详细介绍参考https://blog.csdn.net/ppjsyw/article/details/125087623
一、设值 1.设置一个field 相关命令hset key field value
方法void put(HK key, HV value);参数说明
- key:字段名
- value:值
redisTemplate.boundHashOps("key").put("field","value");
2.设置多个field
相关命令
hset key field value [field value …]
方法void putAll(Map extends HK, ? extends HV> m);说明
- m:多个键值对的map
Map map=new HashMap();
map.put("k1","v1");
map.put("k2","v2");
redisTemplate.boundHashOps("key").putAll(map);
3.当field不存在时设置
相关命令
hsetnx key field value
方法Boolean putIfAbsent(HK key, HV value);参数说明
- 返回值:field存在为0,否则为1
- key:字段名
- value:值
redisTemplate.boundHashOps("key").setIfPresent("value");
二.获取
1.获取field的值
相关命令
hget key field
方法HV get(Object member);说明
- 返回值:field的值
- member:字段名
redisTemplate.boundHashOps("key").get("field");
2.获取多个field的值
相关命令
hmget key field [field …]
方法List说明multiGet(Collection keys);
- 返回值:多个field的值
- keys:多个字段名
List3.获取所有的field和value 相关命令list=new ArrayList<>(); list.add("k1"); list.add("k2"); redisTemplate.boundHashOps("key").multiGet(list);
hgetall key
方法Map说明entries();
- 返回值:存储了键值对的一个map
redisTemplate.boundHashOps("key").entries();
4.获取key的所有field
相关命令
hkeys key
方法Set说明keys();
- 返回值:key的所有field
redisTemplate.boundHashOps("key").keys();
5.获取key的所有value
相关命令
hvals key
方法List说明values();
- 返回值:key的所有值
redisTemplate.boundHashOps("key").values();
三 .自增
1. 整数
相关命令
hincrby key field increment
方法Long increment(HK key, long delta);说明
- 返回值:自增后的值
- key:字段名
- delta:要自增的数字
redisTemplate.boundHashOps("key").increment("field",10);
2. 小数
相关命令
hincrbyfloat key field increment
方法Double increment(HK key, double delta);说明
- 返回值:自增后的值
- key:字段名
- delta:要自增的数字
redisTemplate.boundHashOps("key").increment("field",10.3);
三.随机
1.随机获取一个field
相关命令
hrandfield key [count [withvalues]]
方法HK randomKey();说明
- 返回值:字段名
redisTemplate.boundHashOps("key").randomKey();
2.随机获取一个field并带value
相关命令
hrandfield key [count [withvalues]]
方法Entry说明randomEntry();
- 返回值:字段名和值
redisTemplate.boundHashOps("key").randomEntry();
3.随机获取多个field
相关命令
hrandfield key [count [withvalues]]
方法List说明randomKeys(long count);
- 返回值:多个字段名
- count:需要获取几个field
redisTemplate.boundHashOps("key").randomKeys(3);
4.随机获取多个field并带value
相关命令
hrandfield key [count [withvalues]]
方法Map说明randomEntries(long count);
- 返回值:键值对的map
- count:需要获取几个field
redisTemplate.boundHashOps("key").randomEntries(3);
五.其他
1.获取field有多少个
相关命令
hlen key
方法Long size();说明
- 返回值:field个数
redisTemplate.boundHashOps("key").size();
2.获取field的值的长度
相关命令
hstrlen key field
方法Long lengthOfValue(HK hashKey);说明
- 返回值:值的长度
- hashKey:字段名
redisTemplate.boundHashOps("key").lengthOfValue("field");
3.删除field
相关命令
hdel key field [field …]
方法Long delete(Object... keys);说明
- 返回值:成功删除的field个数
- keys:要删除的字段名
redisTemplate.boundHashOps("key").delete("field1","field2");
4.field是否存在
相关命令
hexists key field
方法Long hasKey(Object key);说明
- 返回值:存在为1,否则为0
- keys:字段名
redisTemplate.boundHashOps("key").hasKey("field");
5.迭代
相关命令
hscan key cursor [match pattern] [Count count]
方法Cursor说明> scan(ScanOptions options);
-
Cursor
>:键值对和游标 -
options:迭代参数
- ScanOptions.NONE:无任何参数
- ScanOptions.scanOptions().match():匹配Match
- ScanOptions.scanOptions().count():数量
redisTemplate.boundHashOps("key").scan(ScanOptions.scanOptions().match("*s*").build());



