redis可以用作數據庫、緩存和消息中間件。
## 一、String(字符串)類型
String是最常用的一種數據類型,普通的key/ value 存儲都可以歸為此類
常用使用場景:
1、緩存結構體信息
2、計數功能
## 二、Hash
Hash對象的鍵是一個字符串類型,值是一個鍵值對集合。
應用場景:該類型非常適合于存儲對象的信息(結構體信息)。如一個用戶有姓名,密碼,年齡等信息。
## 三、List
可以向Redis列表的頭部或尾部添加元素。
在插入時,如果該鍵并不存在,Redis 將為該鍵創建一個新的鏈表,如果這個鍵已經存在,則是向 list 添加元素。
應用場景:
1、list列表結構常用來做異步隊列使用
2、list可用于秒殺搶購場景
## 四、set
Redis 的 Set 是 String 類型的無序集合。集合成員是唯一的,這就意味著集合中不能出現重復的數據。Redis 中集合是通過哈希表實現的,所以添加,刪除,查找的復雜度都是 O(1)。
用在一些去重的場景里,例如每個用戶只能參與一次活動、一個用戶只能中獎一次等等去重場景
應用場景:
1、Redis set對外提供的功能與list類似是一個列表的功能,特殊之處在于set是可以自動排重的,當你需要存儲一個列表數據,又不希望出現重復數據時,set是一個很好的選擇,并且set提供了判斷某個成員是否在一個set集合內的重要接口,這個也是list所不能提供的。
2、Sets 集合的概念就是一堆不重復值的組合。利用Redis提供的Sets數據結構,可以存儲一些集合性的數據,比如在微博應用中,可以將一個用戶所有的關注人存在一個集合中,將其所有粉絲存在一個集合。
3、Redis還為集合提供了求交集、并集、差集等操作,可以非常方便的實現如共同關注、共同喜好、二度好友等功能,對上面的所有集合操作,你還可以使用不同的命令選擇將結果返回給客戶端還是存集到一個新的集合中。
## 五、zset (有序集合類型)
Redis 有序集合和集合一樣也是string類型元素的集合,且不允許重復的成員。不同的是每個元素都會關聯一個double類型的分數。redis正是通過分數來為集合中的成員進行從小到大的排序。有序集合的成員是唯一的,但分數(score)卻可以重復。集合是通過哈希表實現的,所以添加,刪除,查找的復雜度都是O(1)。
應用場景:
1、Redis sorted set的使用場景與set類似,區別是set不是自動有序的,而sorted set可以通過用戶額外提供一個優先級(score)的參數來為成員排序,并且是插入有序的,即自動排序。當你需要一個有序的并且不重復的集合列表,那么可以選擇sorted set數據結構,比如twitter 的public timeline可以以發表時間作為score來存儲,這樣獲取時就是自動按時間排好序的。
2、另外還可以用Sorted Sets來做帶權重的隊列,比如普通消息的score為1,重要消息的score為2,然后工作線程可以選擇按score的倒序來獲取工作任務。讓重要的任務優先執行。
推薦:[https://blog.csdn.net/l1028386804/article/details/120756390](https://blog.csdn.net/l1028386804/article/details/120756390)