RedisTemplate - 常用集合之opsFor系列

鏈接

一、opsForValue

簡(jiǎn)單的Key-Value操作

1、set(K key, V value)

該方法是向Redis新增一個(gè)key-value,由方法參數(shù)可知k-v可以是泛型,也就是說(shuō)我們k-v不一定要是傳統(tǒng)的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對(duì)應(yīng)的value

// 沿用上面的代碼
redisTemplate.opsForValue().get("lcy");
// 以對(duì)象為key的,只要對(duì)象屬性全都相同就可以獲取到
redisTemplate.opsForValue().get(user2);

3、set(K key, V value, long timeout, TimeUnit unit)

該方法在原有的set基礎(chǔ)上增加了過(guò)期時(shí)間,即設(shè)定一個(gè)時(shí)間,過(guò)了這個(gè)時(shí)間,這對(duì)key-value就會(huì)被Redis刪除

// 300秒后過(guò)期
redisTemplate.opsForValue().set("lcy","lcy",300,TimeUnit.SECONDS);

4、其他不常用的方法

其他不常用的方法可以參考:opsForValue使用說(shuō)明

二、opsForList

針對(duì)List集合的相關(guān)操作。

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)

向集合左邊批量添加元素,參數(shù)可以是數(shù)組、多參數(shù)、集合

// 整個(gè)過(guò)程完之后,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)

移除集合左邊的第一個(gè)元素并返回這個(gè)元素

redisTemplate.opsForList().leftPush("list","a");
redisTemplate.opsForList().leftPush("list","b");
// 移除之后,str為b,list中剩余元素為:a
String str = redisTemplate.opsForList().leftPop("list");
既然有左邊的操作,那肯定也有右邊的操作,即把上訴方法的left改成right即可。

4、其他不常用的方法

其他不常用的方法可以參考:opsForList使用說(shuō)明

三、opsForHash

針對(duì)Hash類型的相關(guān)操作。

1、put(H key, HK hashKey, HV value)

這是新增一個(gè)Hash值,key為外層的Hash的key值,hashKey為內(nèi)層Hash的key值,value為內(nèi)層Hash的key對(duì)應(yīng)的value。也就是說(shuō)hashKey-value就是key的value。

// 下面代碼表示key值為hashKey的里面存入兩個(gè)hash類型(hash1、hash2)
redisTemplate.opsForHash().put("hashKey","hash1","hash1-value");
redisTemplate.opsForHash().put("hashKey","hash2","hash2-value");

2、get(H key, Object hashKey)

獲取內(nèi)層hashKey對(duì)應(yīng)的value

Object hashValue = redisTemplate.opsForHash().get("hashKey","hash1");

3、values(H key)

獲取外層Key的存儲(chǔ)的所有hash,并將其封裝在一個(gè)Map對(duì)象返回。

// 這個(gè)map里就存在著hash1和hash1-value、hash2和hash2-value
Map hashKey = redisTemplate.opsForHash().entries("hashKey");

4、hasKey(H key, Object hashKey)

該方法是判斷Key中是否存在hashKey這個(gè)鍵值對(duì)。

Boolean hasKey = redisTemplate.opsForHash().hasKey("hashKey", "hash1");

5、keys(H key)、entries(H key)

前者獲取所有key,后者獲取所有key對(duì)應(yīng)的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的長(zhǎng)度。

long hashLength = redisTemplate.opsForHash().size("hashKey");

7、putAll(H key, Map<? extends HK,? extends HV> m)

以Map集合的形式添加鍵值對(duì)。

Map map = new HashMap();
map.put("lcy","lcy");
map.put("jyqc","jyqc");
redisTemplate.opsForHash().putAll("hashKey",map);

8、其他不常用方法

其他不常用的方法可以參考:opsForHash的使用

四、opsForSet

針對(duì)Set類型的相關(guān)操作。

1、add(K key, V… values)

向key對(duì)應(yīng)的value值中批量添加值,可以是集合、數(shù)組、多參數(shù)

List list = new ArrayList();
list.add("lcy");
list.add("jyqc");
redisTemplate.opsForSet().add("Set",list);

2、members(K key)

獲取key對(duì)應(yīng)的value

Set set = redisTemplate.opsForSet().members("Set");

3、size(K key)

獲取key對(duì)應(yīng)的值的長(zhǎng)度。

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)

批量移除元素??梢允羌?、數(shù)組、多參數(shù)

Long set3 = redisTemplate.opsForSet().remove("Set", list);

7、randomMember(K key)

隨機(jī)獲取變量中的一個(gè)元素。

Object set4 = redisTemplate.opsForSet().randomMember("Set");

8、randomMembers(K key, long count)

隨機(jī)獲取變量中的count個(gè)元素。

List set5 = redisTemplate.opsForSet().randomMembers("Set",5);

9、delete(H key, Object… hashKeys)

刪除Key變量中的鍵值對(duì),可以傳入多個(gè)參數(shù),刪除多個(gè)鍵值對(duì)。可以是集合、數(shù)組、多參數(shù)

redisTemplate.opsForHash().delete("hashKey",list);

10、其他不常用的方法

其他不常用的方法可以參考:opsForSet的使用

五、opsForZSet

針對(duì)ZSet的相關(guān)操作。zSet也是一種集合,根據(jù)score分?jǐn)?shù)進(jìn)行從小到大排序

1、add(K key, V value, double score)

添加元素到變量中同時(shí)指定元素的分值。

// 排序結(jié)果為:[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)

獲取變量指定區(qū)間的元素,從下標(biāo)0開(kāi)始。

// 獲取的結(jié)果為[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的用法

六、所有的鍵值對(duì)都可以通過(guò)delete刪除

// 刪除一個(gè)Key
redisTemplate.delete("hashKey");
// 刪除多個(gè)Key - 可以是集合、數(shù)組、多參數(shù)
redisTemplate.delete(list);
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容