redis基本命令之二:集合、有序集合

5 集合类型

5.1 增加/删除元素

Sad key number [number …]

Srem key number [number …]

Sadd命令用来向集合中增加一个或多个元素,如果键不存在则会自动创建。因此在一个集合中不能有相同的元素,所以如果要加入的元素已经存在于集合中就会忽略这个元素。

5.2 获取集合中的所有元素

smembers key

smembers命令会返回集合中的所有元素

5.3判断元素是否在集合中

Sismember key number

判断一个元素是否在集合中是一个时间复杂度为O(1)的操作,无论集合中有多少个元素,sismember 命令始终可以极快地返回结果。当值存在时sismember命令返回1,当值不存在或键不存在时返回0

5.4 集合间运算

Sdiff key [key …]

Sinter key [key …]

Sunion key [key …]

         Sdiff命令用例对多个集合执行差集运算。集合A和集合B的差集表示为A-B,代表所有属于A且不属于B的元素构成的集合

         Sinter命令用来对多个集合执行交集运算。集合A与集合B的交集表示为AB.代表所有属于A且属于B的元素构成的集合

       Sunion命令用来对多个集合执行并集运算。集合A与集合B的并集可以表示为AUB。代表所有属于A或属于B的元素。

5.5 获得集合中元素个数

Scard key

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

Sdiffstore destination key [key …]

Sinterstore destination key [key …]

Sunionstore destination key [key …]

5.7 随机获得集合中的元素

Srandmember key [count]

Srandmember命令用来随机从集合中获取一个元素。

         还可以传递count参数来一次随机获得多个元素,根据count的正负不同,具体表现也不同。

         (1)当count为正数时,srandmember会随机从集合里获得count个不重复的元素。如果count的值大于集合中的元素个数,则srandmember会返回集合中的全部元素。

         (2)当count为负数是,srandmember会随机从集合里获得|count|个的元素,这些元素有可能相同。

5.8 从集合中弹出一个元素

Spop key

6 有序集合类型

         有序集合类型的特点从它的名字中就可以猜到,它与上一节介绍的集合类型的区别就是“有序”二字。

         在集合类型的基础上有序集合类型为集合中的每个元素都关联了一个分数,这使得我们不仅可以完成插入、删除、和判断元素是否存在等集合类型支持的操作,还能够获得分数最高(或最低)的前N个元素、获得知道分数范围内的元素等与分数有关的操作。虽然那集合中每个元素都是不同的,但是它们的分数却可以相同。

         有序集合类型在某些方面和列表类型有些相似。

         (1)二者都是有序的。

         (2)二者都可以获得某一范围的元素。

         但是二者有着很大的差别,这使得它们的应用场景也是不同的。

         (1)列表类型是通过链表实现的,获取靠近两端的数据速度极快,而当元素增多后,访问中间数据的速度会较慢,所以它更加适合实现如“新鲜事”或“日志”这样很少访问中间元素的应用。

         (2)有序集合类型是使用散列表和跳跃表实现的,所以即使读取位于中间部分的数据速度也很快。

         (3)列表中不能简单地调整某个元素的位置,但是有序集合可以(通过更改这个元素的分数)

         (4)有序集合要比列表类型更耗费内存。

6.1 增加元素

Zadd key score member [score member …]

         Zadd命令用来想有序集合中加入一个元素和钙元素的分数,如果该元素已经存在则会用新的分数替换原有的分数。Zadd命令的返回值是新加入到集合中的元素格式。

      6.2 获得元素的分数

         Zscorekey member

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

Zrange key start stop [withscores]

Zrevrange key start stop [withscores]

         Zrange命令会按照元素分数从小到大的顺序返回索引从Start到stop之间的所有元素(包含两端的元素)。Zrange命令与lrange命令十分相似,如索引都是从0开始,负数代表从后向前查找。如果需要获得元素的分数的话可以在zrange命令的尾部加上withscores参数。

6.4 获得指定分数范围的元素

Zrangebyscore key min max [withscores] [limitoffset count]

Zrangebyscore命令参数虽然多,但是都很好理解。该命令按照元素分数从小到大的顺序返回分数在min和max之间的元素。

6.5 增加某个元素的分数

Zincrby key increment member

         Zincrby命令可以增加一个元素的分数,返回值是更改后的分数。

6.6 获得集合中元素的数量

Zcard key

6.7 获得指定分数范围内的元素个数

Zcount key min max

6.8 删除一个或多个元素

Zrem key member [member …]

6.9 按照排名范围删除元素

Zremrangebyrank key start stop

6.10 按照分数范围删除元素

Zremrangebyscore key min max

6.11 获得元素的排名

Zrank key member

Zrevrank key member

6.12 计算有序集合的交集

         Zinterstoredestination numkeys key [key …] [weights weight [weight …]] [aggregatesum|min|max]

猜你喜欢

转载自blog.csdn.net/longshengguoji/article/details/50855904