springboot2.2.X手冊:redis的7種類型100個方法全解析

目錄

Redis現有的數據類型:

String類型

Hash類型

List類型

Set類型

zSet類型


上一篇:springboot2.2.X手冊:項目從100M瘦身到100K,部署省事多了!

springboot2.2.X手冊:redis的7種類型100個方法全解析

 

Redis現有的數據類型:

1、String類型

一個鍵在原理上能存儲512MB的數據(小編沒有實驗過,一般不存那麼多),String類型在二進制上是安全的,可以存儲任何數據,但是前提是需要進行序列化。

2、Hash類型

每個 hash 可以存儲 2的32次方 - 1 鍵值對(429,496,729,6),差不多有40個億個鍵值對。

3、List類型

list類型可以用來存儲N個有序的字符串,與hash類型在數量上一樣,支持存儲2^32次方-1個元素。在操作元素上,list可以從兩端進行push(插入)和(pop)彈出元素,支持指定範圍的元素的讀取,支持指定下標的元素的讀取或者寫入。

4、Set類型

Set類型看作爲沒有排序的字符集合,和List類型一樣,我們也可以在該類型的數據值上執行添加、刪除或判斷某一元素是否存在等操作。需要說明的是,這些操作的時間複雜度爲O(1),即常量時間內完成次操作。Set可包含的最大元素數量是4294967295。

5、zSet類型

是set的一個升級版本,在set的基礎上增加了一個順序屬性,這一屬性在添加時可以指定,每次指定後,zset會自動重新按新的值調整順序

6、Sorted set類型

相比於set類型, sorted set可以看成是set的一個升級版,在set的基礎上新增了一個特性,就是順序排序,這個特性可以在每次進行數據的操作後,進行重新排序。

7、Stream類型

這是redis5.0最新出來的新的類型,一個非常強大的支持多播的可持久化的消息隊列,根據redis作者坦言,stream類型是借鑑了kafka的設計。

目前小編還沒找到與redistemplate,如果哪位同學看到了,麻煩評論告知一下。

springboot2.2.X手冊:redis的7種類型100個方法全解析

 

String類型

1、 判斷在redis中是不是存在對應的key值,有的話就返回true,沒有就返回false

redisTemplate.hasKey(key)

2、如果在redis中存在key值,就取出來

redisTemplate.opsForValue().get(key)

3、刪除redis中對應的key值

redisTemplate.delete(key)

4、批量刪除redis中對應的key值,其中keys是數組keys:Collection<K> keys

redisTemplate.delete(keys) 

5、把key值序列化成byte[]類型

redisTemplate.dump(key)

6、對傳入的key值設置過期時間

redisTemplate.expire(key, timeout, unit)
redisTemplate.expireAt(key, date)

7、模糊查詢key值,返回的是一個沒有重複的Set類型

redisTemplate.keys(pattern)

8、根據新的key的名稱修改redis中老的key的名稱

redisTemplate.rename(oldKey, newKey)

9、獲取key值的類型

redisTemplate.type(key)

10、重命名舊的key值

redisTemplate.renameIfAbsent(oldKey, newKey)

11、隨機從redis中獲取一個key

redisTemplate.randomKey()

12、獲取當前key的剩下的過期時間

redisTemplate.getExpire(key)

13、獲取剩餘的過期時間,同時設置時間單位

redisTemplate.getExpire(key, unit)

14、直接將key進行持久化

 redisTemplate.persist(key)

15、將當前數據庫的key移動到指定redis中數據庫當中

redisTemplate.move(key, dbIndex)

16、最簡單了,設置key跟value的值

redisTemplate.opsForValue().set(key, value)

17、設置key跟value的值,同時,設置過期時間

redisTemplate.opsForValue().set(key, value, timeout, unit)

18、截取key的子字符串

redisTemplate.opsForValue().get(key, start, end)

19、設置key跟value的值,同時獲取key的值

redisTemplate.opsForValue().getAndSet(key, value)

20、根據keys批量獲取值

redisTemplate.opsForValue().multiGet(keys)

21、獲取原來的key的值後在後面新增上新的字符串

redisTemplate.opsForValue().append(key, value)

22、增量方式增加double值

redisTemplate.opsForValue().increment(key, increment)

23、通過increment(K key, long delta)方法以增量方式存儲long值(正值則自增,負值則自減)

redisTemplate.opsForValue().increment(key, increment)

34、不存在即新增map的操作

redisTemplate.opsForValue().multiSetIfAbsent(valueMap); 

35、增加map集合到redis

Map map = new HashMap();  
map.put("1","1");  
map.put("2","2");  
map.put("3","3");  
redisTemplate.opsForValue().multiSet(map);  

36、獲取指定key的字符串的長度

redisTemplate.opsForValue().size(key)

37、根據偏移量 offset 的值,覆蓋重寫value的值

redisTemplate.opsForValue().set(key, value, offset)

38、重新設置key對應的值,如果存在返回false,否則返回true

redisTemplate.opsForValue().setIfAbsent(key, value)

39、重新設置key的值並加入過期時間

redisTemplate.opsForValue().set(key, value, timeout, unit)

40、將二進制第offset位值變爲value

redisTemplate.opsForValue().setBit(key, offset, value)

41、對key所儲存的字符串值,獲取指定偏移量上的位(bit)

redisTemplate.opsForValue().getBit(key, offset)

springboot2.2.X手冊:redis的7種類型100個方法全解析

 

Hash類型

1、獲取map中指定的key值,如果存在則返回值,沒有就返回null

redisTemplate.opsForHash().get(key, field)

2、獲取變量中的map的鍵值對

redisTemplate.opsForHash().entries(key)

3、新增map值

redisTemplate.opsForHash().put(key, hashKey, value)

4、以map集合的形式添加鍵值對

redisTemplate.opsForHash().putAll(key, maps)

5、當hashKey不存在的時候,進行設置map的值

redisTemplate.opsForHash().putIfAbsent(key, hashKey, value)

6、刪除多個map的字段

redisTemplate.opsForHash().delete(key, fields)

7、查看hash表中指定字段是否存在

redisTemplate.opsForHash().hasKey(key, field)

8、給map中指定字段的整數值加上增量increment

redisTemplate.opsForHash().increment(key, field, increment)
redisTemplate.opsForHash().increment(key, field, delta)

9、獲取所有map中的所有字段

redisTemplate.opsForHash().keys(key)

10、獲取map中所有字段的數量

redisTemplate.opsForHash().size(key)

11、獲取hash表中存在的所有的值

redisTemplate.opsForHash().values(key)

12、查看匹配的鍵值對

redisTemplate.opsForHash().scan(key, options)

springboot2.2.X手冊:redis的7種類型100個方法全解析

 

List類型

1、根據索引獲取list中的值

redisTemplate.opsForList().index(key, index)

2、獲取list中開始索引到結束索引的所有值

redisTemplate.opsForList().range(key, start, end)

3、把值添加在list的最前面

redisTemplate.opsForList().leftPush(key, value)

4、直接把一個新的list添加到老的list上面去

redisTemplate.opsForList().leftPushAll(key, value)

5、List存在的時候就加入新的值

redisTemplate.opsForList().leftPushIfPresent(key, value)

6、在pivot值的索引的前面加上一個值

redisTemplate.opsForList().leftPush(key, pivot, value)

7、按照先進先出的順序來添加

redisTemplate.opsForList().rightPush(key, value)
redisTemplate.opsForList().rightPushAll(key, value)

8、在pivot元素的後面添加值

redisTemplate.opsForList().rightPush(key, pivot, value)

9、設置指定索引的值

redisTemplate.opsForList().set(key, index, value)

10、移除並獲取列表中第一個元素

redisTemplate.opsForList().leftPop(key)
redisTemplate.opsForList().leftPop(key, timeout, unit)

11、移除並獲取列表最後一個元素

redisTemplate.opsForList().rightPop(key)
redisTemplate.opsForList().rightPop(key, timeout, unit)

12、從一個隊列的右邊彈出一個元素並將這個元素放入另一個指定隊列的最左邊

redisTemplate.opsForList().rightPopAndLeftPush(sourceKey, destinationKey)
redisTemplate.opsForList().rightPopAndLeftPush(sourceKey, destinationKey, timeout, unit)

13、刪除集合中值等於value的元素

redisTemplate.opsForList().remove(key, index, value)

14、剪裁List列表

redisTemplate.opsForList().trim(key, start, end)

15、獲取list的大小

redisTemplate.opsForList().size(key)

springboot2.2.X手冊:redis的7種類型100個方法全解析

 

Set類型

1、添加元素

redisTemplate.opsForSet().add(key, values)

2、移除元素

redisTemplate.opsForSet().remove(key, values)

3、刪除一個隨機元素,並返回來

redisTemplate.opsForSet().pop(key)

4、獲取集合的大小

redisTemplate.opsForSet().size(key)

5、判斷集合中是否存在value值

redisTemplate.opsForSet().isMember(key, value)

6、獲取兩個集合的交集並返回一個集合

redisTemplate.opsForSet().intersect(key, otherKey)

7、獲取key集合與otherKey集合的兩個交集,並存儲到destKey

redisTemplate.opsForSet().intersectAndStore(key, otherKey, destKey)

8、key集合與多個集合的交集存儲到destKey無序集合中

redisTemplate.opsForSet().intersectAndStore(key, otherKeys, destKey)

9、獲取多個集合的並集

redisTemplate.opsForSet().union(key, otherKeys)

10、獲取多個集合的並集並存儲到destKey

redisTemplate.opsForSet().unionAndStore(key, otherKey, destKey)

11、獲取差集

redisTemplate.opsForSet().difference(key, otherKeys)

12、獲取差集並存儲到destKey

redisTemplate.opsForSet().differenceAndStore(key, otherKey, destKey)

13、隨機獲取集合中的一個元素

redisTemplate.opsForSet().randomMember(key)

14、獲取集合中的所有元素

redisTemplate.opsForSet().members(key)

15、隨機獲取集合中count個值

redisTemplate.opsForSet().randomMembers(key, count)

16、隨機獲取集合中count個值,但是去重

redisTemplate.opsForSet().distinctRandomMembers(key, count)

17、遍歷set

redisTemplate.opsForSet().scan(key, options)

springboot2.2.X手冊:redis的7種類型100個方法全解析

 

zSet類型

1、添加元素,從小到大排序

redisTemplate.opsForZSet().add(key, value, score)

2、刪除多個values的值

redisTemplate.opsForZSet().remove(key, values)

3、增加元素的score值同時返回增加後的值

redisTemplate.opsForZSet().incrementScore(key, value, delta)

4、返回元素在集合的從小到大排名

redisTemplate.opsForZSet().rank(key, value)

5、返回元素在集合的由大到小排名

redisTemplate.opsForZSet().reverseRank(key, value)

6、獲取集合中指定區間的元素

redisTemplate.opsForZSet().reverseRangeWithScores(key, start,end)

7、查詢集合中的元素並從小到大排序

redisTemplate.opsForZSet().reverseRangeByScore(key, min, max)
redisTemplate.opsForZSet().reverseRangeByScoreWithScores(key, min, max)

8、從高到低的排序,然後獲取最小與最大值之間的值

redisTemplate.opsForZSet().reverseRangeByScore(key, min, max, start, end)

9、根據score值獲取元素數量

redisTemplate.opsForZSet().count(key, min, max)

10、獲取集合的大小

redisTemplate.opsForZSet().size(key)
redisTemplate.opsForZSet().zCard(key)

11、獲取集合中key、value元素的score值

redisTemplate.opsForZSet().score(key, value)

12、移除指定索引元素

redisTemplate.opsForZSet().removeRange(key, start, end)

13、移除指定score範圍的集合成員

redisTemplate.opsForZSet().removeRangeByScore(key, min, max)

14、獲取key和otherKey的並集並存儲在destKey中

redisTemplate.opsForZSet().unionAndStore(key, otherKey, destKey)

15、獲取key和otherKey的交集並存儲在destKey中

redisTemplate.opsForZSet().intersectAndStore(key, otherKey, destKey)

--END--

作者:@溪雲閣

原創作品,抄襲必究,轉載註明出處

如需要源碼,轉發,關注後私信我

部分圖片或代碼來源網絡,如侵權請聯繫刪除,謝謝!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章