• 分布式监控开发 05 历史数据存储


    1、redis LIST 数据类型 

    在说历史数据存储的具体方式前,先说说redis的list类型。

    Redis目前支持5种数据类型,分别是:

    1. String(字符串)
    2. List(列表)
    3. Hash(字典)
    4. Set(集合)
    5. Sorted Set(有序集合)

    List(列表)

    Redis列表是简单的字符串列表,可以类比到C++中的std::list,简单的说就是一个链表或者说是一个队列。可以从头部或尾部向Redis列表添加元素。列表的最大长度为2^32 - 1,也即每个列表支持超过40亿个元素。

    Redis list的实现为一个双向链表,即可以支持反向查找和遍历,更方便操作,不过带来了部分额外的内存开销,Redis内部的很多实现,包括发送缓冲队列等也都是用的这个数据结构。

    应用场景

    Redis list的应用场景非常多,也是Redis最重要的数据结构之一,比如twitter的关注列表、粉丝列表等都可以用Redis的list结构来实现,再比如有的应用使用Redis的list类型实现一个简单的轻量级消息队列,生产者push,消费者pop/bpop。

    相关命令

    • 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"

    2、历史数据存储需求

    3、

     

  • 相关阅读:
    复制工程或修改工程名字后找不到第三方库解决方法
    描述文件不匹配的解决方法
    JSON Code3840错误
    swift介绍和语言概述
    swift
    新入行程序员应知的十个秘密
    signal SIGABRT
    属性,属性赋值及其内存管理
    HTTP网络请求
    使用类目删除可变字符串中重复字母的一个算法
  • 原文地址:https://www.cnblogs.com/yangliheng/p/6942112.html
Copyright © 2020-2023  润新知