本文原創文章,轉載註明出處,部落格地址 https://segmentfault.com/u/to… 第一時間看後續精彩文章。覺得好的話,順手分享到朋友圈吧,感謝支援。
五種資料結構
型別 |
簡介 |
特性 |
場景 |
String(字串) |
二進位制安全 |
可以包含任何資料,比如jpg圖片或者序列化的物件,一個鍵最大能儲存512M |
— |
Hash(字典) |
鍵值對集合,即程式語言中的Map型別 |
適合儲存物件,並且可以像資料庫中update一個屬性一樣只修改某一項屬性值(Memcached中需要取出整個字串反序列化成物件修改完再序列化存回去) |
儲存、讀取、修改使用者屬性 |
List(列表) |
連結串列(雙向連結串列) |
增刪快,提供了操作某一段元素的API |
1,最新訊息排行等功能(比如朋友圈的時間線) 2,訊息佇列 |
Set(集合) |
雜湊表實現,元素不重複 |
1,新增、刪除,查詢的複雜度都是O(1) 2,為集合提供了求交集、並集、差集等操作 |
1,共同好友 2,利用唯一性,統計訪問網站的所有獨立ip 3,好用推薦時,根據tag求交集,大於某個閾值就可以推薦 |
Sorted Set(有序集合) |
將Set中的元素增加一個權重引數score,元素按score有序排列 |
資料插入集合時,已經進行天然排序 |
1,排行榜 2,帶權重的訊息佇列 |
其他功能使用場景
型別 |
特性 |
場景 |
訂閱-釋出系統 |
釋出與訂閱,可以對某一個key值進行訊息釋出及訊息訂閱,當一個key值進行了訊息釋出後,所有訂閱它的客戶端都會收到訊息 |
用作實時訊息系統,比如普通的即時聊天,群聊等功能 |
事務 |
1,Redis的Transactions提供的並不是嚴格的ACID(原子性,一致性,隔離性,永續性)的事務,但是提供了基本的命令打包執行的功能 2,Watch功能,對一個key進行watch,再執行Transactions,在這個過程中,如果這個Watched的值進行了修改,Transactions會發現並拒絕執行 |
— |
過期 |
設定key的過期時間,過期後該資料自動被清除 |
登入session或token |