一、opsForValue
簡單的Key-Value
操作
1、set(K key, V value)
該方法是向Redis新增一個key-value
,由方法參數可知k-v
可以是泛型,也就是說我們k-v
不一定要是傳統的String-String
,還可以是Object-Object
。
redisTemplate.opsForValue().set("lcy",'lcy');
User user1 = new User("柳成蔭",22);
User user2 = new User("柳成蔭",22);
User user3 = new User("九月清晨",23);
redisTemplate.opsForValue().set(user1,user3);
2、get(Object key)
該方法就從Redis中取key對應的value
// 沿用上面的代碼
redisTemplate.opsForValue().get("lcy");
// 以對象爲key的,只要對象屬性全都相同就可以獲取到
redisTemplate.opsForValue().get(user2);
3、set(K key, V value, long timeout, TimeUnit unit)
該方法在原有的set
基礎上增加了過期時間
,即設定一個時間,過了這個時間,這對key-value
就會被Redis刪除
// 300秒後過期
redisTemplate.opsForValue().set("lcy","lcy",300,TimeUnit.SECONDS);
4、其他不常用的方法
其他不常用的方法可以參考:opsForValue使用說明
二、opsForList
針對List集合
的相關操作。
1、leftPush(K key, V value)
向集合左邊添加元素值
// 添加完之後,在list中是這樣的:[c,b,a]
redisTemplate.opsForList().leftPush("list","a");
redisTemplate.opsForList().leftPush("list","b");
redisTemplate.opsForList().leftPush("list","c");
2、leftPushAll(K key, V …values)
向集合左邊批量添加元素,參數可以是數組
、多參數
、集合
// 整個過程完之後,list中是這樣的:[3,2,1,a]
redisTemplate.opsForList().leftPush("list","a");
List list = new LinkedList();
list.add("1");
list.add("2");
list.add("3");
redisTemplate.opsForList().leftPushAll("list",list);
3、leftPop(K key)
移除集合左邊的第一個元素並返回這個元素
redisTemplate.opsForList().leftPush("list","a");
redisTemplate.opsForList().leftPush("list","b");
// 移除之後,str爲b,list中剩餘元素爲:a
String str = redisTemplate.opsForList().leftPop("list");
既然有左邊
的操作,那肯定也有右邊
的操作,即把上訴方法的left
改成right
即可。
4、其他不常用的方法
其他不常用的方法可以參考:opsForList使用說明
三、opsForHash
針對Hash
類型的相關操作。
1、put(H key, HK hashKey, HV value)
這是新增一個Hash值,key
爲外層的Hash的key值,hashKey
爲內層Hash的key值,value
爲內層Hash的key對應的value。也就是說hashKey-value
就是key
的value。
// 下面代碼表示key值爲hashKey的裏面存入兩個hash類型(hash1、hash2)
redisTemplate.opsForHash().put("hashKey","hash1","hash1-value");
redisTemplate.opsForHash().put("hashKey","hash2","hash2-value");
2、get(H key, Object hashKey)
獲取內層hashKey對應的value
Object hashValue = redisTemplate.opsForHash().get("hashKey","hash1");
3、values(H key)
獲取外層Key的存儲的所有hash
,並將其封裝在一個Map
對象返回。
// 這個map裏就存在着hash1和hash1-value、hash2和hash2-value
Map hashKey = redisTemplate.opsForHash().entries("hashKey");
4、hasKey(H key, Object hashKey)
該方法是判斷Key中是否存在hashKey這個鍵值對。
Boolean hasKey = redisTemplate.opsForHash().hasKey("hashKey", "hash1");
5、keys(H key)、entries(H key)
前者獲取所有key,後者獲取所有key對應的value
List hashKey1 = redisTemplate.opsForHash().values("hashKey");
System.out.println(hashKey1);
Set hashKey2 = redisTemplate.opsForHash().keys("hashKey");
System.out.println(hashKey2);
6、size(H key)
獲取Hash的長度。
long hashLength = redisTemplate.opsForHash().size("hashKey");
7、putAll(H key, Map<? extends HK,? extends HV> m)
以Map集合的形式添加鍵值對。
Map map = new HashMap();
map.put("lcy","lcy");
map.put("jyqc","jyqc");
redisTemplate.opsForHash().putAll("hashKey",map);
8、其他不常用方法
其他不常用的方法可以參考:opsForHash的使用
四、opsForSet
針對Set
類型的相關操作。
1、add(K key, V… values)
向key對應的value值中批量添加值,可以是集合
、數組
、多參數
List list = new ArrayList();
list.add("lcy");
list.add("jyqc");
redisTemplate.opsForSet().add("Set",list);
2、members(K key)
獲取key對應的value
Set set = redisTemplate.opsForSet().members("Set");
3、size(K key)
獲取key對應的值的長度。
Long set1 = redisTemplate.opsForSet().size("Set");
4、isMember(K key, Object o)
檢查給定的元素是否在Set變量中。
Boolean member = redisTemplate.opsForSet().isMember("Set", "lcy");
5、pop(K key)
彈出變量中的元素。
Object set2 = redisTemplate.opsForSet().pop("Set");
6、remove(K key, Object… values)
批量移除元素。可以是集合
、數組
、多參數
Long set3 = redisTemplate.opsForSet().remove("Set", list);
7、randomMember(K key)
隨機獲取變量中的一個元素。
Object set4 = redisTemplate.opsForSet().randomMember("Set");
8、randomMembers(K key, long count)
隨機獲取變量中的count個元素。
List set5 = redisTemplate.opsForSet().randomMembers("Set",5);
9、delete(H key, Object… hashKeys)
刪除Key變量中的鍵值對,可以傳入多個參數,刪除多個鍵值對。可以是集合
、數組
、多參數
redisTemplate.opsForHash().delete("hashKey",list);
10、其他不常用的方法
其他不常用的方法可以參考:opsForSet的使用
五、opsForZSet
針對ZSet
的相關操作。zSet
也是一種集合,根據score
分數進行從小到大
排序
1、add(K key, V value, double score)
添加元素到變量中同時指定元素的分值
。
// 排序結果爲:[A,D,B,C]
redisTemplate.opsForZSet().add("zSetKey","A",1);
redisTemplate.opsForZSet().add("zSetKey","B",3);
redisTemplate.opsForZSet().add("zSetKey","C",5);
redisTemplate.opsForZSet().add("zSetKey","D",2);
2、range(K key, long start, long end)
獲取變量指定區間的元素,從下標0
開始。
// 獲取的結果爲[A,D,B]
Set zSetKey = redisTemplate.opsForZSet().range("zSetKey", 0, 2);
System.out.println(zSetKey);
3、score(K key, Object o)
獲取元素的分值。
Double score = redisTemplate.opsForZSet().score("zSet", "B");
4、其他方法
其他的方法可以參考:opsForZSet的用法
六、所有的鍵值對都可以通過delete刪除
// 刪除一個Key
redisTemplate.delete("hashKey");
// 刪除多個Key - 可以是集合、數組、多參數
redisTemplate.delete(list);