redis 數據類型和概念
參考鏈接:https://redis.io/topics/data-types-intro
文章摘要:
概述
redis 能儲存 7 種數據結構,分別是:
strings 二進制安全的字符串
lists 有序字符串列表
sets 無重復無序字符串集合
sorted sets 無重復有序字符串集合
hashes 類似鍵值均為字符串的map
bitmaps 位數組,可由字符串轉化而來
HyperLogLogs 概率數據結構,用於估計集合基數
redis 的鍵要簡潔易懂,如“ comment:1234:reply-to ”
STRINGS
INCR INCRBY DECR DECRBY,這些命令是原子性的。這意味著可在並發條件下運行。
數據的生存時間可以設置。
LISTS
字符串列表是鏈表,特點是插入快、查找慢。
列表的兩個常用用途:存儲社交網絡更新和進程間通信。
列表適合實現隊列。命令 BRPOP BLPOP 用於解決阻塞問題。
HASHES
類似於 map。
SETS
適用於表示模型間的關系。
SORTED SETS
排序規則是先比較“分數”,再比較元素的值。
從這種集合中取元素時,允許按照字典順序設置範圍。
BITMAPS
bitmaps 並不是實際數據類型,而是對字符串進行位層面的修改。
位操作分為兩類,第一是對單個位修改,第二是對一定範圍的位進行統計。
bitmaps 優點之一是儲存信息時可極度節省空間。
SETBIT 命令用於設置單個位,當地址超出當前字符串長度時,自動延長字符串。
GETBIT 命令用於獲得指定位的值,當地址超出當前字符串長度時,返回0。
有 3 種命令用於操作bits。BITOP 用於不同字符串之間操作。BITCOUNT 統計 bits 中 1 的數量。BITPOS 尋找 0 或 1 最早出現的位置。
bitmaps 的用處有 2 個。第一是各種實時分析,第二是儲存與 ID 相關的低容量高性能數據。
例如你想知道網站用戶最大連續訪問天數,給每個用戶分配一個bitmap。用戶訪問時采用 SETBIT 命令,鍵是當前 unix 時間,值是 1。統計最長bit = 1的情況,除以 24 * 3600 就可以得到天數。這樣,一個小小的字符串就記錄了用戶每日訪問信息。
bitmaps 很容易分成多個鍵。一種方式是分成 M 個,鍵名是 bit-number/M 和序列號,用bit-number mod M 在集合內部進行查找。
HYPERLOGLOGS
這個數據結構用來計算集合元素的數量。HLL 可以節省大量內存。該數據結構的一個應用是,計數用戶的特定查詢動作。
redis 數據類型和概念