簡介
根據 官網檔案 的解釋,可以了解 Redis 基礎資料型別的一些基本資訊:

對于 Redis 來說,存盤的 key 值都是字串型別,討論資料型別的時候,指的都是存盤的 value 值,這里主要是包括 5 種資料型別:String、List、Set、Hash、SortedSet,
如果想要了解 Redis 基礎資料型別支持的命令,可以查看 官方檔案,篩選對應資料型別即可,
String
String 是最基本的 Redis 資料型別,其是二進制安全的,這表示 String 可以存盤任何型別的資料,如字串、數字、圖片、序列化物件等等,
官方檔案 提供了部分對 String 資料型別的說明,具體 String 資料型別支持的命令也可以通過訪問 這里 查看,
有一點需要注意,String 資料型別最高支持存盤 512MB 長度的資料,
通常情況,String 資料型別會使用在以下場景:
- 資料快取:直接存盤字串、序列化資料、圖片、視頻等資料
- 計數器:使用
INCRBY這樣的增量命令實作原子計數器 - 分布式鎖:使用多引數的
SET命令實作分布式鎖
List
Redis 的 List 資料型別是一個雙端鏈表,因此 List 隨機存取的效率比較低,不過可以像使用鏈表一樣實作鏈式堆疊、鏈式佇列等功能,
官方檔案 提供了部分對 List 資料型別的說明,具體 List 資料型別支持的命令也可以通過訪問 這里 查看,
有一點需要注意,List 資料型別最大支持存盤 \(2^{32} - 1\)(約 42 億) 個元素,
通常情況,List 資料型別會使用在以下場景:
- 堆疊:聯合使用
LPUSH命令和LPOP命令即可實作堆疊 - 佇列:聯合使用
LPUSH命令和RPOP命令即可實作佇列 - 有限集合:聯合使用
LPUSH命令和LTRIM命令即可實作有限集合 - 訊息佇列:聯合使用
LPUSH命令和BRPOP命令即可實作延時訊息佇列
Set
Set 是一個無序不重復集合,并且現有命令實作集合的交集、并集、差集等功能,但頻繁使用這些功能會影響 Redis 服務器的性能,建議謹慎使用,
官方檔案 提供了部分對 Set 資料型別的說明,具體 Set 資料型別支持的命令也可以通過訪問 這里 查看,
同 List 資料型別一樣,Set 資料型別最大支持存盤 \(2^{32} - 1\)(約 42 億) 個元素,
通常情況,Set 資料型別會使用在以下場景:
- 標簽:不同的標簽存盤在不同集合中,既可以查詢是否存在相同標簽,也可以聚合不同標簽
- 共同好友:不同用戶的好友存盤在不同集合中,使用交集可以得到共同好友
- 獨立 IP:利用 Set 的元素唯一性,可以快速實時統計網站的獨立 IP
Hash
Redis 的 Hash 資料型別存盤著字串 field 和字串 value 的映射關系,特別適合存盤 key-value 結構,
官方檔案 提供了部分對 Hash 資料型別的說明,具體 Hash 資料型別支持的命令也可以通過訪問 這里 查看,
每個 Hash 資料型別最多可以存盤 \(2^{32} - 1\)(約 42 億) 個鍵值對,實際上,Hash 資料型別僅受 Redis 所部署的記憶體限制,
通常情況,Hash 資料型別會使用在以下場景:
- 資料快取:對比于存盤 JSON 字串的 String 型別,Hash 更直觀、更節省空間、更靈活
SortedSet
SortedSet 資料型別有點類似于 Set 資料型別,不同之處在于 SortedSet 資料型別支持按照給定的分數對資料進行排序,
SortedSet 中的集合通過哈希表實作,在實際使用中,添加、洗掉、查找的效率都非常高,
官方檔案 提供了部分對 Hash 資料型別的說明,具體 Hash 資料型別支持的命令也可以通過訪問 這里 查看,
大多數 SortedSet 操作的復雜度是 O(log(N)),其中 N 是成員數,部分批量查詢命令的時間復雜度可以達到 O(log(N) + M),這里的 M 是回傳的結果數,
通常情況,SortedSet 資料型別會使用在以下場景:
- 排行榜:排行榜需要按照某個規則排序,將這個規則值存盤成分數,即可實作排行榜的功能
- 權重佇列:通過將任務的權重存盤成分數,作業執行緒可以按照分數的倒序來獲取作業任務
其他資料型別
Redis 中最常見的資料型別就是 String、List、Set、Hash、SortedSet 這 5 種,也是最初支持的資料型別,
當然,Redis 也有一些不常見、卻適用于特殊場景的資料型別,了解這些資料型別也是很必要的,
Stream 是 Redis 5.0 版本新增的資料型別,其本身類似于 append-only 日志,實際上給 Redis 的發布、訂閱功能提供了持久化和主備復制功能,可以讓任何客戶端訪問任何時刻的資料,并且能記住每一個客戶端的訪問位置,還能保證訊息不丟失,
Geospatial 是 Redis 3.2 版本新增的資料型別,此型別主要用于存盤地理位置資訊,并且 Redis 提供了常見的地理位置查詢命令,
HyperLogLog 是 Redis 2.8.9 版本新增的資料型別,主要用于做基數統計的演算法,其使用不超過 12 KB 的存盤,且僅達到 0.81% 的標準錯誤率,應用場景也是十分特殊,
Bitmap 是 String 資料型別的擴展,是定義在 String 資料型別上的面向位的操作,其最大的優點是當存盤資訊時可以節省極大的空間,
首發于「程式員翔仔」,點擊查看更多,
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/547714.html
標籤:NoSQL
上一篇:SQL之連表查詢
