redis列表,集合,有序集合

上传人:第*** 文档编号:61907701 上传时间:2018-12-14 格式:DOCX 页数:12 大小:289.22KB
返回 下载 相关 举报
redis列表,集合,有序集合_第1页
第1页 / 共12页
redis列表,集合,有序集合_第2页
第2页 / 共12页
redis列表,集合,有序集合_第3页
第3页 / 共12页
redis列表,集合,有序集合_第4页
第4页 / 共12页
redis列表,集合,有序集合_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《redis列表,集合,有序集合》由会员分享,可在线阅读,更多相关《redis列表,集合,有序集合(12页珍藏版)》请在金锄头文库上搜索。

1、Redis数据类型之列表类型(List)向列表两端增加元素。LPUSH key value value .RPUSH key value value .向列表左边增加元素127.0.0.1:6379 lpush l:list 2 1 3(integer) 3在redis中的存在为: 3 1 2 对应的index分别为:0 1 2向列表后边增加元素127.0.0.1:6379 rpush r:list 1 2 3(integer) 3在redis中的存在为: 1 2 3 对应的index分别为: 0 1 2 从列表两端弹出元素LPOP key(从左边弹出元素)RPOP key (从右边弹出元素)

2、LPOP命令从列表左边弹出一个元素,会分两步完成,第一步是将列表左边的元素从列表中移除,第二步是返回被移除的元素值。127.0.0.1:6379 lpop l:list3“127.0.0.1:6379 rpop r:list3“思考:如何利用以上命令模拟队列操作?(使用rpush 和 lpop命令或者lpush和rpop命令)获取列表中元素的个数LLEN key127.0.0.1:6379 llen l:list (这个 l:list 就是一个key的名字,“:list”没有任何意思)(integer) 2获取列表片段LRANGE key start stopLRANGE命令是列表类型最常用的

3、命令之一,获取列表中的某一片段,将返回start、stop之间的所有元素(包含两端的元素),索引从0开始。索引可以是负数,如:“-1”代表最后边的一个元素。127.0.0.1:6379 lrange l:list 0 21) 12) 2删除列表中指定的值LREM key count valueLREM命令会删除列表中前count个值为value的元素,返回实际删除的元素个数。根据count值的不同,该命令的执行方式会有所不同:l 当count0时, LREM会从列表左边开始删除。l 当count0时, LREM会从列表后边开始删除。l 当count=0时, LREM删除所有值为value的元素

4、。获得/设置指定索引的元素值LINDEX key indexLSET key index value获得指定列表片段只保留列表指定片段,指定范围和LRANGE一致LTRIM key start stop向列表中插入元素LINSERT key BEFORE|AFTER pivot value该命令首先会在列表中从左到右查找值为pivot的元素,然后根据第二个参数是BEFORE还是AFTER来决定将value插入到该元素的前面还是后面。当pivot元素不存在的时候,插入失败,返回: -1 疑问点:将元素从一个列表转移到另一个列表中RPOPLPUSH source destinationRedis数

5、据类型之集合(Set)集合类型列表类型存储内容最多2的32次方 1 个字符串最多2的32次方 1 个字符串有序性否是唯一性是否集合类型的常用操作是向集合中加入或删除元素、判断某个元素是否存在等,由于集合类型的Redis内部是使用值为空的散列表实现,所有这些操作的时间复杂度都为0(1)。Redis还提供了多个集合之间的交集、并集、差集的运算。增加/删除元素SADD key member member .SREM key member member .127.0.0.1:6379 sadd set a b c(integer) 3127.0.0.1:6379 sadd set a (因为是重复元素

6、,所以添加失败,返回0)(integer) 0127.0.0.1:6379 srem set c d (因为rem c d 中只能rem c,因为set中没有d,所以返回1)(integer) 1获得集合中的所有元素SMEMBERS key127.0.0.1:6379 smembers set1) b2) a”判断元素是否在集合中无论集合中有多少元素都可以极速的返回结果。SISMEMBER key member127.0.0.1:6379 sismember set a(integer) 1127.0.0.1:6379 sismember set h(integer) 0集合的差集(diffe

7、rent)运算 A-B,属于A并且不属于B的元素构成的集合。SDIFF key key .127.0.0.1:6379 sadd setA 1 2 3(integer) 3127.0.0.1:6379 sadd setB 2 3 4(integer) 3127.0.0.1:6379 sdiff setA setB1) 1127.0.0.1:6379 sdiff setB setA1) 4集合的交集(intersection)运算 A B,属于A且属于B的元素构成的集合。SINTER key key .127.0.0.1:6379 sinter setA setB1) 22) 3集合的并集(un

8、ion)运算 A B,属于A或者属于B的元素构成的集合。SUNION key key .127.0.0.1:6379 sunion setA setB1) 12) 23) 34) 4获得集合中元素的个数SCARD key127.0.0.1:6379 smembers setA1) 12) 23) 3127.0.0.1:6379 scard setA(integer) 3从集合中弹出一个元素SPOP key127.0.0.1:6379 spop setA2“注意:由于集合是无序的,所有SPOP命令会从集合中随机选择一个元素弹出Redis 之有序集合(Sorted Set)在集合类型的基础上有序集

9、合类型为集合中的每个元素都关联一个分数,这使得我们不仅可以完成插入、删除和判断元素是否存在在集合中,还能够获得分数最高或最低的前N个元素、获取指定分数范围内的元素等与分数有关的操作。在某些方面有序集合和列表类型有些相似。1、二者都是有序的。2、二者都可以获得某一范围的元素。但是,二者有着很大区别:1、列表类型是通过链表实现的,获取靠近两端的数据速度极快,而当元素增多后,访问中间数据的速度会变慢。2、有序集合类型使用散列表实现,所有即使读取位于中间部分的数据也很快。3、列表中不能简单的调整某个元素的位置,但是有序集合可以(通过更改分数实现)4、有序集合要比列表类型更耗内存。增加元素向有序集合中加

10、入一个元素和该元素的分数,如果该元素已经存在则会用新的分数替换原有的分数。返回值是新加入到集合中的元素个数,不包含之前已经存在的元素。注:member可以看成elementZADD key score member score member .127.0.0.1:6379 zadd scoreboard 80 zhangsan 89 lisi 94 wangwu(integer) 3127.0.0.1:6379 zadd scoreboard 97 lisi(integer) 0获取元素的分数ZSCORE key member127.0.0.1:6379 zscore scoreboard l

11、isi97获得排名在某个范围的元素列表ZRANGE key start stop WITHSCORESZREVRANGE key start stop WITHSCORES该命令会按照元素分数从小到大的顺序返回索引从start到stop之间的所有元素(包含两端的元素)。127.0.0.1:6379 zrange scoreboard 0 21) zhangsan2) wangwu3) lisi“如果需要获得元素的分数的可以在命令尾部加上WITHSCORES参数127.0.0.1:6379 zrange scoreboard 0 1 WITHSCORES1) zhangsan2) 803) wa

12、ngwu4) 94获得指定分数范围的元素ZRANGEBYSCORE key min max WITHSCORES LIMIT offset count127.0.0.1:6379 ZRANGEBYSCORE scoreboard 90 97 WITHSCORES(其中包括90 97)1) wangwu2) 943) lisi4) 97127.0.0.1:6379 ZRANGEBYSCORE scoreboard 90 (97 WITHSCORES(其中只包括90,不包括97)1) wangwu2) 94“127.0.0.1:6379 ZRANGEBYSCORE scoreboard 70 10

13、0 limit 1 2(其中包括70和100,且有分页效果,1代表startIndex,2代表size)1) wangwu2) lisi127.0.0.1:6379 zrangebyscore scoreboard 85 100 limit 0 2 withscores增加某个元素的分数返回值是更改后的分数。ZINCRBY key increment member给lisi加4分127.0.0.1:6379 ZINCRBY scoreboard 4 lisi101“(其中101为增加后相加后的结果。另外如果member不存在,那么就会以这个分数创建一个member)获得集合中元素的数量ZCAR

14、D key127.0.0.1:6379 ZCARD scoreboard(integer) 3获得指定分数范围内的元素个数ZCOUNT key min max127.0.0.1:6379 ZCOUNT scoreboard 80 90(integer) 1(其中如果min/max有“(”的时候就不包括当前值,不允许有“)”,否则报error)按照排名范围删除元素ZREMRANGEBYRANK key start stop127.0.0.1:6379 ZREMRANGEBYRANK scoreboard 0 1(integer) 2 127.0.0.1:6379 ZRANGE scoreboard 0 -11) lisi按照分数范围删除元素ZREMRANGEBYSCORE key scoreStart scoreStop127.0.0.1:6379 zadd scoreboard 84 zhangsan(in

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号