Redis 之數據結構
字符串(String)
- 字符串是redis最簡單的數據類型。字符串是二進制安全的,所以Redis字符串能包含任意類型的數據。 例如:JPGE圖片、序列化Ruby對象。
- 一個字符串最多能存儲512M字節內容 ·利用INCR命令簇(incr decr incrby)來把字符串當做院子計數器。
- 使用Append命令在字符串後添加內容。 ·使用GETRANGE和SETRANGE命令來範圍訪問(時間複雜度 0(N) ,0開始,-1末位。
- 在小空間裏編碼大量數據,或者使用getbit和setbit 創建bloom過濾器
set stringtestkey “hello world hello redis” #OK
getrange stringtestkey 0 1 #”he”
getrange stringtestkey -5 -1 #”redis”
getrange stringtestkey 10 100 #”hello redis”
setrange stringtestkey 23 “test” #”hello world hello redistest”
setrange keybu0 2 “test” #”\x00\x00test”
列表(List)
- Redis列表是簡單的字符串列表,按插入順序排序。可以從列表頭部(左邊)或者尾部(右邊)添加元素。
- lpush在頭部插入元素,rpush在尾部插入元素
- 一個列表最多可以包含2^(32-1)個元素,訪問頭部或者尾部很快,訪問表中間元素很慢
- Redis 列表可以處理一些有趣的事,例如:
- 時間線 lpush存入,lrange取出最近插入條目
- lpush ltrim創建和維護一個永遠不會超過指定元素數量數目的列表,同時記住最後N個元素
- 等待添加
集合(Sets)
- redis 集合是一個無序字符串集合。0(1)時間複雜度完成添加刪除測試元素是否存在
- Redis集合有唯一性特性,多次添加先相同元素最終只會存在一個元素 3.
- 一個Redis列表十分有趣的事是,它們支持一些服務端的命令從現有的集合出發去進行集合運算。 所以你可以在很短的時間內完成合並(union),求交(intersection), 找出不同元素的操作。
- 一個集合最多可以包含2^(32-1)個元素(4294967295,每個集合超過40億個元素)。
- 你可以用Redis集合做很多有趣的事,例如你可以:
- 用集合跟蹤一個獨特的事。想要知道所有訪問某個博客文章的獨立IP?只要每次都用SADD來處理一個頁面訪問。那麼你可以肯定重複的IP是不會插入的。
- Redis集合能很好的表示關係。你可以創建一個tagging系統,然後用集合來代表單個tag。接下來你可以用SADD命令把所有擁有tag的對象的所有ID添加進集合,這樣來表示這個特定的tag。如果你想要同時有3個不同tag的所有對象的所有ID,那麼你需要使用SINTER.
- 使用SPOP或者SRANDMEMBER命令隨機地獲取元素。