RedisTemplate操作哈希數據
- 概述
- 常用方法
- 添加哈希數據
- 添加hashMap值
- 判斷hashkey
- 獲取哈希數據
- 獲取屬性值
- 獲取hashMap值。
- 獲取鍵值對。
- 獲取map鍵是否有值
- 判斷是否有map鍵。
- 獲取鍵。
- 獲取長度。
- 集合方式獲取值。
- 匹配獲取鍵值對
- 自增
- 以double值大小自增。
- 以long值大小自增。
- 修改刪除
- 修改哈希數據中的某個屬性值
- 刪除哈希數據中的某個屬性值
- 刪除哈希表
主頁傳送門:📀 傳送
概述
??Redis是一個開源的內存數據結構存儲系統,它可以用作數據庫、緩存和消息代理。Redis 的核心是提供數據類型的集合,在Redis中,有多種數據結構,如字符串、列表、集合、有序集合和哈希表,它可以幫助解決從緩存到隊列再到事件處理的各種問題。
??RedisTemplate是Spring Data Redis提供的一個用于操作Redis的模板類,它提供了豐富的方法來操作Redis中的哈希數據。
常用方法
??本文來介紹下一些常用的使用RedisTemplate操作哈希數據的方法及簡單示例。
添加哈希數據
??向Redis中的哈希表中添加數據,可以使用opsForHash()
方法獲取哈希操作對象,然后調用putAll()
方法。
示例:
@Resource
private RedisTemplate<String, Object> redisTemplate;public void addHashData(String key, Map<String, Object> hashData) {redisTemplate.opsForHash().putAll(key, hashData);Map newMap = new HashMap(); newMap.put("map3","map3-3"); newMap.put("map5","map5-5"); redisTemplate.opsForHash().putAll("hashValue",newMap); map = redisTemplate.opsForHash().entries("hashValue"); System.out.println("通過putAll(H key, Map<? extends HK,? extends HV> m)方法以map集合的形式添加鍵值對:" + map);
}
添加hashMap值
??向Redis中的哈希表中添加hashMap值,可以使用opsForHash()
方法獲取哈希操作對象,然后調用put(H key, HK hashKey, HV value)
方法。
示例:
@Resource
private RedisTemplate<String, Object> redisTemplate;public void addHashMapValue(String key, String hashKey, String value) {redisTemplate.opsForHash().put("hashValue","map1","map1-1"); redisTemplate.opsForHash().put("hashValue","map2","map2-2"); redisTemplate.opsForHash().put(key, hashKey, value);
}
判斷hashkey
??Redis中的哈希表判斷hashkey是否存在,可以使用putIfAbsent(H key, HK hashKey, HV value)
方法判斷hashkey是否存在,如果hashKey存在,啥也不操作,如果hashKey不存在,則新增。
示例:
redisTemplate.opsForHash().putIfAbsent("hashValue","map6","map6-6"); map = redisTemplate.opsForHash().entries("hashValue"); System.out.println("通過putIfAbsent(H key, HK hashKey, HV value)方法添加不存在于變量中的鍵值對:" + map);
獲取哈希數據
??從Redis中的哈希表中獲取數據,可以使用opsForHash()
方法獲取哈希操作對象,然后調用entries()
方法。
示例:
public Map<Object, Object> getHashData(String key) {return redisTemplate.opsForHash().entries(key);
}
獲取屬性值
??從Redis中的哈希表中獲取某個屬性的值,可以使用opsForHash()
方法獲取哈希操作對象,然后調用get()
方法:
示例:
public Object getHashDataValue(String key, String field) {return redisTemplate.opsForHash().get(key, field);
}
獲取hashMap值。
?? 獲取指定變量中的hashMap值,通過values(H key)方法獲取變量中的hashMap值
示例:
values(H key)
List<Object> hashList = redisTemplate.opsForHash().values("hashValue");
System.out.println("通過values(H key)方法獲取變量中的hashMap值:" + hashList);
獲取鍵值對。
?? 通過entries(H key)方法獲取變量中的鍵值對
示例:
entries(H key)
Map<Object,Object> map = redisTemplate.opsForHash().entries("hashValue");
System.out.println("通過entries(H key)方法獲取變量中的鍵值對:" + map);
獲取map鍵是否有值
??獲取變量中的指定map鍵是否有值,如果存在該map鍵則獲取值,沒有則返回null。
示例:
get(H key, Object hashKey)Object mapValue = redisTemplate.opsForHash().get("hashValue","map1"); System.out.println("通過get(H key, Object hashKey)方法獲取map鍵的值:" + mapValue);
判斷是否有map鍵。
?? 通過hasKey(H key, Object hashKey)方法判斷變量中是否存在map鍵
示例:
hasKey(H key, Object hashKey)boolean hashKeyBoolean = redisTemplate.opsForHash().hasKey("hashValue","map3"); System.out.println("通過hasKey(H key, Object hashKey)方法判斷變量中是否存在map鍵:" + hashKeyBoolean);
獲取鍵。
?? 通過keys(H key)方法獲取變量中的鍵
示例:
keys(H key)Set<Object> keySet = redisTemplate.opsForHash().keys("hashValue"); System.out.println("通過keys(H key)方法獲取變量中的鍵:" + keySet);
獲取長度。
?? 通過size(H key)方法獲取變量的長度
示例:
size(H key)long hashLength = redisTemplate.opsForHash().size("hashValue"); System.out.println("通過size(H key)方法獲取變量的長度:" + hashLength);
集合方式獲取值。
?? 通過multiGet(H key, Collection hashKeys)方法以集合的方式獲取變量中的值
示例:
multiGet(H key, Collection<HK> hashKeys)List<Object> list = new ArrayList<Object>(); list.add("map1"); list.add("map2"); List mapValueList = redisTemplate.opsForHash().multiGet("hashValue",list); System.out.println("通過multiGet(H key, Collection<HK> hashKeys)方法以集合的方式獲取變量中的值:"+mapValueList);
匹配獲取鍵值對
?? 匹配獲取鍵值對,通過scan(H key, ScanOptions options)方法獲取匹配鍵值對,ScanOptions.NONE為獲取全部鍵對,ScanOptions.scanOptions().match(“map1”).build() 匹配獲取鍵位map1的鍵值對,不能模糊匹配。
示例:
scan(H key, ScanOptions options)Cursor<Map.Entry<Object,Object>> cursor = redisTemplate.opsForHash().scan("hashValue",ScanOptions.scanOptions().match("map1").build()); //Cursor<Map.Entry<Object,Object>> cursor = redisTemplate.opsForHash().scan("hashValue",ScanOptions.NONE); while (cursor.hasNext()){ Map.Entry<Object,Object> entry = cursor.next(); System.out.println("通過scan(H key, ScanOptions options)方法獲取匹配鍵值對:" + entry.getKey() + "---->" + entry.getValue()); }
自增
以double值大小自增。
?? 通過increment(H key, HK hashKey, double delta)方法使變量中的鍵以值的大小進行自增長
示例:
increment(H key, HK hashKey, double delta) double hashIncDouble = redisTemplate.opsForHash().increment("hashInc","map1",3);
System.out.println("通過increment(H key, HK hashKey, double delta)方法使變量中的鍵以值的大小進行自增長:" + hashIncDouble);
以long值大小自增。
?? 通過increment(H key, HK hashKey, long delta)方法使變量中的鍵以值的大小進行自增長
示例:
increment(H key, HK hashKey, long delta)long hashIncLong = redisTemplate.opsForHash().increment("hashInc","map2",6);
System.out.println("通過increment(H key, HK hashKey, long delta)方法使變量中的鍵以值的大小進行自增長:" + hashIncLong);
修改刪除
修改哈希數據中的某個屬性值
?? 修改Redis中的哈希表中某個屬性的值,可以使用opsForHash()
方法獲取哈希操作對象,然后調用put()
方法。
示例:
public void updateHashDataValue(String key, String field, Object newValue) {redisTemplate.opsForHash().put(key, field, newValue);
}
刪除哈希數據中的某個屬性值
?? 從Redis中的哈希表中刪除某個屬性的值,可以使用opsForHash()
方法獲取哈希操作對象,然后調用delete()
方法。
示例:
public void deleteHashDataValue(String key, String field) {redisTemplate.opsForHash().delete(key, field);
}
刪除哈希表
?? 要刪除Redis中的整個哈希表,可以使用delete()
方法。示例:
public void deleteHashTable(String key) {redisTemplate.delete(key);delete(H key, Object... hashKeys)刪除變量中的鍵值對,可以傳入多個參數,刪除多個鍵值對。redisTemplate.opsForHash().delete("hashValue","map1","map2"); map = redisTemplate.opsForHash().entries("hashValue"); System.out.println("通過delete(H key, Object... hashKeys)方法刪除變量中的鍵值對后剩余的:" + map);
}
如果喜歡的話,歡迎 🤞關注 👍點贊 💬評論 🤝收藏 🙌一起討論你的支持就是我??創作的動力! 💞💞💞