介绍
opsForHash主要用于操作Redis的hash的,使用方式:redisTemplate.opsForHash().方法名,比如
redisTemplate.opsForHash().delete("field");
以下各方法皆来自于Redis的命令,命令详细介绍参考https://blog.csdn.net/ppjsyw/article/details/125087623
一、设值
1.设置一个field
相关命令
hset key field value
方法
void put(H key, HK hashKey, HV value);
参数说明
- key:键名
- hashKey:字段名
- value:值
示例
redisTemplate.opsForHash().put("key","field","value");
2.设置多个field
相关命令
hset key field value [field value …]
方法
void putAll(H key, Map<? extends HK, ? extends HV> m);
说明
-
key:键名文章来源:https://www.toymoban.com/news/detail-428793.html
-
m:多个键值对的map
示例
Map map=new HashMap();
map.put("k1","v1");
map.put("k2","v2");
redisTemplate.opsForHash().putAll("key",map);
3.当field不存在时设置
相关命令
hsetnx key field value
方法
Boolean putIfAbsent(H key, HK hashKey, HV value);
参数说明
- 返回值:field存在为0,否则为1
- key:键名
- hashKey:字段名
- value:值
示例
redisTemplate.opsForHash().setIfPresent("key","field","value");
二.获取
1.获取field的值
相关命令
hget key field
方法
HV get(H key, Object hashKey);
说明
- 返回值:field的值
- key:键名
- hashKey:字段名
示例
redisTemplate.opsForHash().get("key","field");
2.获取多个field的值
相关命令
hmget key field [field …]
方法
List<HV> multiGet(H key, Collection<HK> hashKeys);
说明
- 返回值:多个field的值
- key:键名
- hashKeys:多个字段名
示例
List<String> list=new ArrayList<>();
list.add("k1");
list.add("k2");
redisTemplate.opsForHash().multiGet("key",list);
3.获取所有的field和value
相关命令
hgetall key
方法
Map<HK, HV> entries(H key);
说明
- 返回值:存储了键值对的一个map
- key:键名
示例
redisTemplate.opsForHash().entries("key");
4.获取key的所有field
相关命令
hkeys key
方法
Set<HK> keys(H key);
说明
- 返回值:key的所有field
- key:键名
示例
redisTemplate.opsForHash().keys("key");
5.获取key的所有value
相关命令
hvals key
方法
List<HV> values(H key);
说明
- 返回值:key的所有值
- key:键名
示例
redisTemplate.opsForHash().values("key");
三 .自增
1. 整数
相关命令
hincrby key field increment
方法
Long increment(H key, HK hashKey, long delta);
说明
- 返回值:自增后的值
- key:键名
- hashKey:字段名
- delta:要自增的数字
示例
redisTemplate.opsForHash().increment("key","field",10);
2. 小数
相关命令
hincrbyfloat key field increment
方法
Double increment(H key, HK hashKey, double delta);
说明
- 返回值:自增后的值
- key:键名
- hashKey:字段名
- delta:要自增的数字
示例
redisTemplate.opsForHash().increment("key","field",10.3);
三.随机
1.随机获取一个field
相关命令
hrandfield key [count [withvalues]]
方法
HK randomKey(H key);
说明
- 返回值:字段名
- key:键名
示例
redisTemplate.opsForHash().randomKey("key");
2.随机获取一个field并带value
相关命令
hrandfield key [count [withvalues]]
方法
Entry<HK, HV> randomEntry(H key);
说明
- 返回值:字段名和值
- key:键名
示例
redisTemplate.opsForHash().randomEntry("key");
3.随机获取多个field
相关命令
hrandfield key [count [withvalues]]
方法
List<HK> randomKeys(H key, long count);
说明
- 返回值:多个字段名
- key:键名
- count:需要获取几个field
示例
redisTemplate.opsForHash().randomKeys("key",3);
4.随机获取多个field并带value
相关命令
hrandfield key [count [withvalues]]
方法
Map<HK, HV> randomEntries(H key, long count);
说明
- 返回值:键值对的map
- key:键名
- count:需要获取几个field
示例
redisTemplate.opsForHash().randomEntries("key",3);
五.其他
1.获取field有多少个
相关命令
hlen key
方法
Long size(H key);
说明
- 返回值:field个数
- key:键名
示例
redisTemplate.opsForHash().size("key");
2.获取field的值的长度
相关命令
hstrlen key field
方法
Long lengthOfValue(H key, HK hashKey);
说明
- 返回值:值的长度
- key:键名
- hashKey:字段名
示例
redisTemplate.opsForHash().lengthOfValue("key","field");
3.删除field
相关命令
hdel key field [field …]
方法
Long delete(H key, Object... hashKeys);
说明
- 返回值:成功删除的field个数
- key:键名
- keys:要删除的字段名
示例
redisTemplate.opsForHash().delete("key","field1","field2");
4.field是否存在
相关命令
hexists key field
方法
Boolean hasKey(H key, Object hashKey);
说明
- 返回值:存在为true,否则为false
- key:键名
- hashKey:字段名
示例
redisTemplate.opsForHash().hasKey("key","field");
5.迭代
相关命令
hscan key cursor [match pattern] [Count count]
方法
Cursor<Entry<HK, HV>> scan(H key, ScanOptions options);
说明
-
Cursor<Entry<HK, HV>>:键值对和游标
-
key:键名
-
options:迭代参数文章来源地址https://www.toymoban.com/news/detail-428793.html
- ScanOptions.NONE:无任何参数
- ScanOptions.scanOptions().match():匹配Match
- ScanOptions.scanOptions().count():数量
示例
redisTemplate.opsForHash().scan("key",ScanOptions.scanOptions().match("*s*").build());
到了这里,关于RedisTemplet opsForHash中方法使用说明的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!