Redis列表和集合类型学习

来源:互联网 发布:宁波plc编程招聘 编辑:程序博客网 时间:2024/06/06 09:37

列表类型
Redis中的列表类型时有序列表,而且是双向链表,取头尾部数据非常快,添加数据的时间复杂度非常的低
向两端增加元素
Lpush key value [value…]
Rpush key value [value…]
命令演示如下:
这里写图片描述

从列表两端弹出元素(弹出后即被移除)
从左端弹出:Lpop key
从右端弹出:Rpop key
命令演示如下:
这里写图片描述
获取列表中元素的个数
LLen key
演示如上图
获取列表片段(不会删除图片),左侧起点默认为0,右侧重点默认为-1
命令: Lrange key start stop
这里写图片描述

这里写图片描述
删除指定的值
Lrem key count value (count>0,删除从左边开始值为value的前count个元素;count=0,删除所有值为value的元素,count<0,删除从右边开始值为value的前-count个元素)
命令演示如下:
这里写图片描述
将列表当数组用
获取指定索引位置的元素值:Lindex key index (相当于数组中的key[index])
设置指定索引位置的元素值:Lset key index value(对key[index]赋值)
这里写图片描述
删除指定索引外的所有元素
Ltrim key start end (用法跟Lrange相似)
这里写图片描述
向列表中插入元素
Linsert key before|after pivot value (Linsert是从左到右查找值为pivot的元素,根据before或者after决定value的插入位置)
命令演示如下:
这里写图片描述
从演示中可以看出,插入数据只在找到的第一个元素处操作
将元素从一个列表转到另一个列表
命令RpopLpush source destination
很有趣的命令,看起来像是从源列表的右边弹出元素然后从左边写入目的列表
这里写图片描述
0从list列表右边转移到list1列表左边了

集合类型
集合里的元素具有唯一性,不具备有序性,
而列表类型则是具有有序性,不具备唯一性,这是两者最大的区别。
基本命令:
增加元素 Sadd key member [member…]
删除元素 Srem key member [member…]
获取全部元素: Smembers key
判断元素是否存在: Sismember key member
命令演示如下:
这里写图片描述
集合间的运算
差集运算 Sdiff key [key…] (相当于key1-key2-key3…)
交集运算 Sinter key [key…] (相当于 key1∩key2∩key3…)
并集运算 Sunion key [key…] (相当于 key1∪key2∪key3…)
命令演示如下:
这里写图片描述
运算并保存结果
Sdiffstore destination key [key…]
Sinterstore destination key [key…]
Suniondtore destination key [key …]
命令演示如下:
这里写图片描述
获取集合信息:
获取集合中元素个数:Scard key
随即获取集合中的元素:Srandmember key [count]
从集合中弹出一个元素:Spop key (随机弹出一个元素并移除)
命令演示如下:
这里写图片描述

有序集合类型
有序集合跟列表一样是有序的,跟集合一样,元素是唯一的
基本命令
增加元素:zadd key score member [score member…]
获取元素分数:zscore key member
获取排名在某个范围内的元素列表:
递增排序获取元素:zrange key start stop [withscores]
递减排序获取元素:zrevrange key start stop [withscores]
已存在的键的值还可以做修改:
增加某个元素的分数:zincrby key increment member
命令演示如下:
这里写图片描述
这里写图片描述

获取指定分数范围的元素:
Zrangebyscore key min max [withscores] [limit offset count] (不包含端点值可以在min,max前加左括号“(”,正负无穷表示为+inf、-inf,limit后offset是查询结果的第几个元素开始,count是取多少元素)
这里写图片描述
获取集合的信息
获取集合中元素的数量:zcard key
获取指定分数范围内元素的个数:zcount key min max
获取元素的排名:升序排序 zrank key member
降序排序 zrevrank key member
命令演示如下:
这里写图片描述
删除集合的元素
删除一个或多个元素:zrem key member [member..]
按照排名范围删除元素 zremrangebyrank key start stop
按照分数范围删除元素:zremrangebyscore key min max
命令演示如下:
这里写图片描述
集合间的运算
交集:zinterstore destination numkeys key [key…] [weights weight [weight …]] [aggregate sum|min|max]
并集: zunionstore destination numkeys key [key…] [weights weight [weight …]] [aggregate sum|min|max]
Numkeys:参与运算的键总数;
Weights :每个键的权重
Aggregate:相同元素在结果集的分数
命令演示如下:
这里写图片描述

原创粉丝点击