分佈式監控開發 05 歷史數據存儲

一、redis LIST 數據類型 

在說歷史數據存儲的具體方式前,先說說redis的list類型。redis

Redis目前支持5種數據類型,分別是:數據結構

  1. String(字符串)
  2. List(列表)
  3. Hash(字典)
  4. Set(集合)
  5. 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"

 

二、歷史數據存儲需求

 

三、索引

相關文章
相關標籤/搜索