RedisTemplate opsForHash 方法
常用方法
1.添加:putAll()和put()和putIfAbsent()
void putAll(H key, Map<? extends HK,? extends HV> m);
以map集合的形式添加键值对
String redisHash = "redisHash";
Map<String,Object> map = new HashMap<>(2);
map.put("name","凯恩");
map.put("age",21);
redisTemplate.opsForHash().putAll(redisHash,map);
void put(H var1, HK var2, HV var3);
单次通过key-value添加键值对
List<String> list = new ArrayList<>();
list.add("1");
list.add("2");
list.add("3");
redisTemplate.opsForHash().put(redisHash,"courseList",list);
判断key值是否存在,存在则不操作返回false,不存在则添加
Boolean birthday = redisTemplate.opsForHash().putIfAbsent(redisHash, "birthday", new Date());//true
Boolean name= redisTemplate.opsForHash().putIfAbsent(redisHash, "name", "哈里");//false
2.取值:entries()和get()和multiGet()
Map<HK, HV> entries(H var1);
通过key获取键值对
String redisHash = "redisHash";
Map<String,Object> map = redisTemplate.opsForHash().entries(redisHash);
//{name=凯恩, birthday=Fri Apr 16 12:11:23 CST 2021, age=21, courseList=[1, 2, 3]}
Map<HK, HV> entries(H var1);
获取指定变量中的值
List<String> list = (List<String>) redisTemplate.opsForHash().get(redisHash, "List");
//[1, 2, 3]
以集合的方式获取指定变量中的值
String redisHash = "redisHash";
List<String> list = new ArrayList<>();
list.add("name");
list.add("courseList");
List<Object> valueList = redisTemplate.opsForHash().multiGet(redisHash, list);
//[凯恩, [1, 2, 3]]
3.获取:keys()和values()和hasKey()
Set keys(H var1);
获取变量中的key
String redisHash = "redisHash";
Set<String> keys = redisTemplate.opsForHash().keys(redisHash);
//[name, age, courseList, birthday]
List values(H var1);
获取变量中的value
List<Object> list = redisTemplate.opsForHash().values(redisHash);
//[凯恩, 21, [1, 2, 3], Fri Apr 16 14:23:23 CST 2021]
List values(H var1);
判断变量中是否有指定的key
Boolean name = redisTemplate.opsForHash().hasKey(redisHash, "name");//true
Boolean name1 = redisTemplate.opsForHash().hasKey(redisHash, "name1");//false
4.长度:size()和lengthOfValue()
Long size(H var1);
获取变量的长度
String redisHash = "redisHash";
Long size = redisTemplate.opsForHash().size(redisHash); //4
Long lengthOfValue(H var1, HK var2);
变量中对应的value的字节长度,key值存在结果为0
Long nameLength = redisTemplate.opsForHash().lengthOfValue(redisHash,"name"); //8
Long nameLength2 = redisTemplate.opsForHash().lengthOfValue(redisHash,"name1"); //0
4.值自增长:increment()
Long increment(H var1, HK var2, long var3);
使变量中的键以long值的大小进行自增长
String redisHash = "redisHash";
Long age = redisTemplate.opsForHash().increment(redisHash, "age", 20);//41
Double increment(H var1, HK var2, double var3);
使变量中的键以double值的大小进行自增长
Double age = redisTemplate.opsForHash().increment(redisHash, "age", 20.1);//61.1
5.匹配获取键值对:scan()
Cursor<Entry<HK, HV>> scan(H var1, ScanOptions var2);
匹配获取键值对,ScanOptions.NONE为获取全部键对
String redisHash = "redisHash";
//匹配key包含a的变量
Cursor<Map.Entry<String, Object>> cursor = redisTemplate.opsForHash().scan(redisHash,
ScanOptions.scanOptions().match("*a*").build());
while (cursor.hasNext()){
Map.Entry<String, Object> map = cursor.next();
System.out.println(map.getKey()+":"+map.getValue());
}
//name:凯恩
//age:21
//birthday:Fri Apr 16 14:23:23 CST 2021
Cursor<Map.Entry<String, Object>> cursor = redisTemplate.opsForHash().scan(redisHash,
ScanOptions.NONE);
while (cursor.hasNext()){
Map.Entry<String, Object> map = cursor.next();
System.out.println(map.getKey()+":"+map.getValue());
}
//name:凯恩
//age:21
//courseList:[1, 2, 3]
//birthday:Fri Apr 16 14:23:23 CST 2021
6.删除:delete()
Long delete(H var1, Object... var2);
删除变量中的键值对,可以传入多个参数,删除多个键值对,返回删除数量
String redisHash = "redisHash";
Long number = redisTemplate.opsForHash().delete(redisHash, "name","age");//2