Redis基本數據類型及使用場景

這個問題應該算是比較簡單的了,工作一兩年的朋友基本都會遇到過,此文僅做梳理。

一、基本數據類型分爲5種:String、hash、list、set、zset(有序集合)

二、使用場景:

1、String

        命令:set key value

        這個沒有什麼好說的,最常規的也就是set/get操作,value 可以是String 也可以是數字,一般做一些複雜的計數功能的緩存。

        可以做分佈式鎖,使用 setnx key value (當key不存在時,將key的值設置爲value,並返回1,可以表示獲取鎖資源。如果key存在,則setnx不做操作,表示獲取鎖失敗)。當然這其中還存在很多問題,比如訪問資源無響應就會導致無法釋放鎖,從而堆積想要獲取鎖的線程,那麼我們可以使用以下原子命令來設置 set key value NX PX seconds ---> NX 不存在  PX 過期時間。

        也可以做分佈式全局唯一id,直接獲取一段userId的最大值,緩存到本地慢慢累加,快到userId的最大值時,再去獲取一段,一個用戶服務宕機了,也頂多一小段userId沒有用到。

2、hash

        命令:set key field value 

        這裏的value存放的是結構化的對象,比較方便操作其中的某個字段。在做單點登錄的時候,就可以用這種數據結構存書用戶的信息,以cookieId作爲key,設置過期時間,就能模擬出session的效果。

3、list

        使用list數據結構,可以做簡單的消息隊列的功能(當然比不上專業的消息中間件),另一個就是可以利用lrange命令做分頁,性能還是不錯的。

4、set

       用於去重,比如抽獎、點贊等只能參與一次的操作。另外可以利用交集、並集、差集等操作,計算共同喜好、全部喜好及個人獨自喜好等功能。

5、zset

        zset相比於set來說多了一個參數score,集合中的所有元素可以通過score進行排序,比如應用排行榜、音樂排行榜等。

 

 

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