介绍
主要用于操作Redis的Hash,使用方式:redisTemplate.boundHashOps(“键名”).方法名();
以下各方法皆来自于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<HV> multiGet(Collection<HK> keys);
说明
- 返回值:多个field的值
- keys:多个字段名
示例
List<String> list=new ArrayList<>();
list.add("k1");
list.add("k2");
redisTemplate.boundHashOps("key").multiGet(list);
3.获取所有的field和value
相关命令
hgetall key
方法
Map<HK, HV> entries();
说明
- 返回值:存储了键值对的一个map
示例
redisTemplate.boundHashOps("key").entries();
4.获取key的所有field
相关命令
hkeys key
方法
Set<HK> keys();
说明
- 返回值:key的所有field
示例
redisTemplate.boundHashOps("key").keys();
5.获取key的所有value
相关命令
hvals key
方法
List<HV> 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<HK, HV> randomEntry();
说明
- 返回值:字段名和值
示例
redisTemplate.boundHashOps("key").randomEntry();
3.随机获取多个field
相关命令
hrandfield key [count [withvalues]]
方法
List<HK> randomKeys(long count);
说明
- 返回值:多个字段名
- count:需要获取几个field
示例
redisTemplate.boundHashOps("key").randomKeys(3);
4.随机获取多个field并带value
相关命令
hrandfield key [count [withvalues]]
方法
Map<HK, HV> 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<Entry<HK, HV>> scan(ScanOptions options);
说明
-
Cursor<Entry<HK, HV>>:键值对和游标
-
options:迭代参数
- ScanOptions.NONE:无任何参数
- ScanOptions.scanOptions().match():匹配Match
- ScanOptions.scanOptions().count():数量
示例
redisTemplate.boundHashOps("key").scan(ScanOptions.scanOptions().match("*s*").build());