美文网首页
Redis数据类型学习

Redis数据类型学习

作者: 海的那一边 | 来源:发表于2021-10-08 18:52 被阅读0次

    以下是Redis支持的所有数据结构:

    • 二进制安全字符串。
    • 列表:根据插入顺序排序的字符串元素的集合。它们基本上是链表。
    • 集合:唯一的、未排序的字符串元素的集合。
    • 排序集合,类似于集合,但其中每个字符串元素都与一个浮点值相关联,称为score。元素总是按它们的分数排序。
    • 哈希,它是由与值关联的字段组成的映射。字段和值都是字符串。
    • 位数组(或简单的位图):使用特殊命令可以像处理位数组一样处理字符串值:您可以设置和清除单个位,计算所有设置为 1 的位,找到第一个设置或未设置的位,等等。
    • HyperLogLogs:这是一种概率数据结构,用于估计集合的基数。
    • Streams:提供抽象日志数据类型的类似地图条目的仅附加集合。

    Redis 字符串

    > set mykey somevalue
    OK
    > get mykey
    "somevalue"
    

    请注意,SET将替换已存储在键中的任何现有值。
    原子增量:

    > set counter 100
    OK
    > incr counter
    (integer) 101
    > incr counter
    (integer) 102
    > incrby counter 50
    (integer) 152
    

    在单个命令中设置或检索多个键的值:

    > mset a 10 b 20 c 30
    OK
    > mget a b c
    1) "10"
    2) "20"
    3) "30"
    

    更改、查询、删除:

    > set mykey hello
    OK
    > exists mykey
    (integer) 1
    > del mykey
    (integer) 1
    > exists mykey
    (integer) 0
    

    Redis 列表

    Redis 列表是通过链表实现的。这意味着即使列表中有数百万个元素,在列表的头部或尾部添加新元素的操作也是在常数时间内执行的。使用LPUSH命令在10个元素的列表头添加一个新元素的速度与在1000万个元素的列表头添加一个元素的速度是一样的。

    有什么缺点?在使用 Array 实现的列表(恒定时间索引访问)中通过索引访问元素非常快,而在由链表实现的列表中则没有那么快(其中操作需要的工作量与访问元素的索引成正比)。

    LPUSH命令将一个新元素到一个列表,在左侧(在头部),而RPUSH命令将一个新元素到一个列表,在右侧(在尾部)。LRANGE命令从列表中提取元素范围:

    > rpush mylist A
    (integer) 1
    > rpush mylist B
    (integer) 2
    > lpush mylist first
    (integer) 3
    > lrange mylist 0 -1
    1) "first"
    2) "A"
    3) "B"
    

    Redis 哈希

    > hmset user:1000 username antirez birthyear 1977 verified 1
    OK
    > hget user:1000 username
    "antirez"
    

    Redis 集

    Redis 集合是无序的字符串集合。
    sadd:添加元素。
    smembers:返回所有成员。

    > sadd myset 1 2 3
    (integer) 3
    > smembers myset
    1. 3
    2. 1
    3. 2
    

    不同集合的交集:

    > sinter tag:1:news tag:2:news tag:10:news tag:27:news
    ... results here ...
    

    Redis 排序集

    有序集合是一种类似于集合和哈希混合的数据类型。与集合一样,有序集合由唯一的、不重复的字符串元素组成,因此在某种意义上,有序集合也是一个集合。ZADD类似于SADD,但需要一个额外的参数(放置在要添加的元素之前),即分数。

    > zadd hackers 1940 "Alan Kay"
    (integer) 1
    > zadd hackers 1957 "Sophie Wilson"
    (integer) 1
    
    zrange hackers 0 -1 withscores
    

    0 和 -1 表示从元素索引 0 到最后一个元素。
    Redis 返回分数在负无穷大和 1950 之间的所有元素:

    zrangebyscore hackers -inf 1950
    

    查询一个元素在有序元素集中的位置是什么:

    zrank hackers "Anita Borg"
    (integer) 4
    

    学习链接:https://redis.io/topics/data-types-intro

    相关文章

      网友评论

          本文标题:Redis数据类型学习

          本文链接:https://www.haomeiwen.com/subject/iayxoltx.html