• redis学习(二)


    集合

    添加/删除元素

    SADD key member1 member2 ...

    SREM key member1 member2 ...

    获得集合中的所有元素

    SMEMBERS key

    127.0.0.1:6380> sadd car benz baoma xiandai
    (integer) 3
    127.0.0.1:6380> smembers car
    1) "baoma"
    2) "xiandai"
    3) "benz"
    127.0.0.1:6380> srem car benz
    (integer) 1
    127.0.0.1:6380> smembers car
    1) "baoma"
    2) "xiandai"
    127.0.0.1:6380> 

    判断某个元素是否在集合中,存在则返回1,不存在则返回0

    SISMEMBER key  member

    127.0.0.1:6380> sismember car xiandai
    (integer) 1
    127.0.0.1:6380> sismember car benz
    (integer) 0
    127.0.0.1:6380> 

    集合间的运算

    SDIFF key1 key2...   即A-B={x|x∈A且x∈/B}

    SINTER key1 key2...   即A∩B={x|x∈A且x∈B}

    SUNION key1 key2 ... 即AUB={x|x∈A 或x∈B}

    127.0.0.1:6380> sadd a 1 2 3 4 
    (integer) 4
    127.0.0.1:6380> sadd b 3 4 5 6
    (integer) 4
    127.0.0.1:6380> sdiff a b
    1) "1"
    2) "2"
    127.0.0.1:6380> sinter a b
    1) "3"
    2) "4"
    127.0.0.1:6380> sunion a b
    1) "1"
    2) "2"
    3) "3"
    4) "4"
    5) "5"
    6) "6"
    127.0.0.1:6380> 

    进行集合运算并将结果存储

    SDIFFSTORE destination key [key …]
    SINTERSTORE destination key [key …]
    SUNIONSTORE destination key [key …]

    SDIFFSTORE命令和SDIFF命令功能一样,唯一的区别就是前者不会直接返回运算结果,而是将结果存储在destination键中。

    SDIFFSTORE命令常用于需要进行多步集合运算的场景中,如需要先计算差集再将结果和其他键计算交集。

    获取集合中元素的个数:

    SCARD key

    随机获得集合中的元素

    SRANDMEMBER key [count]

    (1)当count为正数时,SRANDMEMBER会随机从集合里获得count个不重复的元素。如果count的值大于集合中的元素个数,则SRANDMEMBER会返回集合中的全部元素。(2)当count为负数时,SRANDMEMBER会随机从集合里获得|count|个的元素,这些元素有可能相同。

    127.0.0.1:6380> srandmember a 2
    1) "4"
    2) "2"
    127.0.0.1:6380> srandmember a
    "3"
    127.0.0.1:6380> 

    从集合中弹出一个元素

    SPOP KEY  这个随机弹出的

    127.0.0.1:6380> smembers a
    1) "1"
    2) "2"
    3) "3"
    4) "4"
    127.0.0.1:6380> spop a
    "1"
    127.0.0.1:6380> spop a
    "3"
    127.0.0.1:6380> smembers a
    1) "2"
    2) "4"
    127.0.0.1:6380> 

     有序集合

    有序集合类型在某些方面和列表类型有些相似。
    (1)二者都是有序的。
    (2)二者都可以获得某一范围的元素。
    但是二者有着很大的区别,这使得它们的应用场景也是不同的。
    (1)列表类型是通过链表实现的,获取靠近两端的数据速度极快,而当元素增多后,访问中间数据的速度会较慢,所以它更加适合实现如“新鲜事”或“日志”这样很少访问中间元素的
    应用。
    (2)有序集合类型是使用散列表和跳跃表(Skip list)实现的,所以即使读取位于中间部分的数据速度也很快(时间复杂度是O(log(N)))。
    (3)列表中不能简单地调整某个元素的位置,但是有序集合可以(通过更改这个元素的分数)。
    (4)有序集合要比列表类型更耗费内存。有序集合类型算得上是 Redis的5种数据类型中最高级的类型了,在学习时可以与列表类型和集合类型对照理解。

    增加元素

    ZADD key scord member [scord member ...]

    修改某个元素的分数

    ZADD key scord member

    获取元素的分数

    ZSCORE key member

    127.0.0.1:6380> zadd cheeron 90 math 80 english 89 chinese
    (integer) 3
    127.0.0.1:6380> zadd cheeron 87 english
    (integer) 0
    127.0.0.1:6380> zscore cheeron math
    "90"
    127.0.0.1:6380> zscore cheeron english
    "87"
    127.0.0.1:6380> 

    获得排名在某个范围的元素列表

    ZRANGE key start stop [WITHSCORES]

    ZREVRANGE key start stop [WITHSCORES]

    ZRANGE命令会按照元素分数从小到大的顺序返回索引从start到stop之间的所有元素(包含两端的元素)。ZRANGE命令与LRANGE命令十分相似,如索引都是从0开始,负数代表从后向前查找(-1表示最后一个元素)。

    127.0.0.1:6380> zrange cheeron 0 2
    1) "english"
    2) "chinese"
    3) "math"
    127.0.0.1:6380> zrange cheeron 1 -1
    1) "chinese"
    2) "math"
    127.0.0.1:6380> zrange cheeron 2 0
    (empty list or set)

    如果需要同时获得元素的分数的话可以在ZRANGE命令的尾部加上WITHSCORES参数

    127.0.0.1:6380> zrange cheeron 0 -1 withscores
    1) "english"
    2) "87"
    3) "chinese"
    4) "89"
    5) "math"
    6) "90"
    127.0.0.1:6380> 

    获得指定分数范围的元素

    ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]
    ZRANGEBYSCORE命令参数虽然多,但是都很好理解。该命令按照元素分数从小到大的顺序返回分数在min和max之间(包含min和max)的元素:

    加了"("则表示不包含的意思

    127.0.0.1:6380> zrangebyscore cheeron 80 90
    1) "english"
    2) "chinese"
    3) "math"
    127.0.0.1:6380> zrangebyscore cheeron 80 (90
    1) "english"
    2) "chinese"
    127.0.0.1:6380> 
  • 相关阅读:
    Hive_进阶
    日志分析_统计每日各时段的的PV,UV
    Sqoop_mysql,hive,hdfs导入导出操作
    Sqoop_ 简单介绍
    Sqoop_ 从 hive 导到mysql常遇九问题总结(转)
    MySql_设置编码
    Linux_MySql_yum_安装
    Hive_DDL与DML
    UI自动化持续化集成
    HDU 5073 数学题
  • 原文地址:https://www.cnblogs.com/cheerong/p/4424466.html
Copyright © 2020-2023  润新知