一、redis LIST 數據類型
在說歷史數據存儲的具體方式前,先說說redis的list類型。redis
Redis目前支持5種數據類型,分別是:數據結構
- String(字符串)
- List(列表)
- Hash(字典)
- Set(集合)
- Sorted Set(有序集合)
List(列表)
Redis列表是簡單的字符串列表,能夠類比到C++中的std::list,簡單的說就是一個鏈表或者說是一個隊列。能夠從頭部或尾部向Redis列表添加元素。列表的最大長度爲2^32 - 1,也即每一個列表支持超過40億個元素。spa
Redis list的實現爲一個雙向鏈表,便可以支持反向查找和遍歷,更方便操做,不過帶來了部分額外的內存開銷,Redis內部的不少實現,包括髮送緩衝隊列等也都是用的這個數據結構。code
應用場景
Redis list的應用場景很是多,也是Redis最重要的數據結構之一,好比twitter的關注列表、粉絲列表等均可以用Redis的list結構來實現,再好比有的應用使用Redis的list類型實現一個簡單的輕量級消息隊列,生產者push,消費者pop/bpop。blog
相關命令
- BLPOP
BLPOP key1 [key2 ] timeout 取出並獲取列表中的第一個元素,或阻塞,直到有可用
- BRPOP
BRPOP key1 [key2 ] timeout 取出並獲取列表中的最後一個元素,或阻塞,直到有可用
- BRPOPLPUSH
BRPOPLPUSH source destination timeout 從列表中彈出一個值,它推到另外一個列表並返回它;或阻塞,直到有可用
- LINDEX
LINDEX key index 從一個列表其索引獲取對應的元素
- LINSERT
LINSERT key BEFORE|AFTER pivot value 在列表中的其餘元素以後或以前插入一個元素
- LLEN
LLEN key 獲取列表的長度
- LPOP
LPOP key 獲取並取出列表中的第一個元素
- LPUSH
LPUSH key value1 [value2] 在前面加上一個或多個值的列表
- LPUSHX
LPUSHX key value 在前面加上一個值列表,僅當列表中存在
- LRANGE
LRANGE key start stop 從一個列表獲取各類元素
- LREM
LREM key count value 從列表中刪除元素
- LSET
LSET key index value 在列表中的索引設置一個元素的值
- LTRIM
LTRIM key start stop 修剪列表到指定的範圍內
- RPOP
RPOP key 取出並獲取列表中的最後一個元素
- RPOPLPUSH
RPOPLPUSH source destination 刪除最後一個元素的列表,將其附加到另外一個列表並返回它
- RPUSH
RPUSH key value1 [value2] 添加一個或多個值到列表
- RPUSHX
RPUSHX key value 添加一個值列表,僅當列表中存在
使用示例
redis 127.0.0.1:6379> lpush list1 redis
(integer) 1
redis 127.0.0.1:6379> lpush list1 hello
(integer) 2
redis 127.0.0.1:6379> rpush list1 world
(integer) 3
redis 127.0.0.1:6379> llen list1
(integer) 3
redis 127.0.0.1:6379> lrange list1 0 3
1) "hello"
2) "redis"
3) "world"
redis 127.0.0.1:6379> lpop list1
"hello"
redis 127.0.0.1:6379> rpop list1
"world"
redis 127.0.0.1:6379> lrange list1 0 3
1) "redis"
二、歷史數據存儲需求
三、索引