06 Redis的list、set、hash、sorted_set、skiplist

list组命令

集合,有序,值可重复,可以实现栈、队列、数组、阻塞队列。
LPUSH / RPUSH / LPOP / RPOP
在这里插入图片描述

栈,同向命令,先进后出

LPUSH / LPOP 或 RPUSH / RPOP
在这里插入图片描述

队列,反向命令,先进先出

LPUSH / RPOP 或 RPUSH / LPOP
在这里插入图片描述

数组

LLEN / LRANGE / LINDEX / LSET / LINSERT / LREM
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

阻塞队列

BLPOP / BRPOP
在这里插入图片描述
在这里插入图片描述
如图,现在没有任何key,然后在其它窗口,用BLPOP获取列表,会阻塞,直到有值
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

其它命令

BRPOPLPUSH、LPUSHX、LTRIM、RPUSHX
在这里插入图片描述


hash组命令

增删改查
  • 新增、修改
    命令:HSET
    描述:设置哈希属性值
    在这里插入图片描述
    命令:HSETNX
    描述:设置哈希属性值,只有属性不存在才能设置成功
    在这里插入图片描述
    命令:HMSET
    描述:设置一个哈希的多个属性值
    在这里插入图片描述
  • 查询
    命令:HEXISTS
    描述:确定一个哈希属性是否存在
    在这里插入图片描述
    命令:HGETALL
    描述:查询一个哈希的所有属性名和属性值
    在这里插入图片描述
    命令:HKEYS
    描述:获取一个哈希的所有属性名
    在这里插入图片描述
    命令:HLEN
    描述:查询一个哈希的属性数量
    在这里插入图片描述
    命令:HVALS
    描述:查询一个哈希所有属性值
    在这里插入图片描述
    命令:HGET
    描述:查询哈希属性值
    在这里插入图片描述
    命令:HMGET
    描述:查询一个哈希的多个属性值
    在这里插入图片描述
    命令:HSTRLEN
    描述:查询哈希属性值的字符串长度
    在这里插入图片描述
    命令:HSCAN
    描述:增量迭代哈希属性和相关值
    在这里插入图片描述
  • 删除
    命令:HDEL
    描述:删除一个或多个哈希属性值
    在这里插入图片描述
  • 数字类型哈希属性值计算
    命令:HINCRBY
    描述:数字类型的哈希属性值加上给定整数值
    在这里插入图片描述
    命令:HINCRBYFLOAT
    描述:数字类型的哈希属性值加上给定小数值
    在这里插入图片描述

set组命令

集合,去重,无序

增删查
  • 新增
    命令:SADD
    在这里插入图片描述
  • 查询
    命令: SCARD
    描述:查集合中元素的数量
    在这里插入图片描述
    命令:SISMEMBER
    描述:查询元素是否在集合中
    在这里插入图片描述
    命令:SMEMBERS
    描述:查询集合中所有元素
    在这里插入图片描述
    命令: SRANDMEMBER
    描述:随机查询集合中的一个或多个元素
    在这里插入图片描述
    命令:SSCAN
    描述:递增迭代集合元素
    在这里插入图片描述
  • 删除
    命令:SPOP
    描述:删除集合中一个或多个元素(指定数量),并返回被删除的元素
    在这里插入图片描述
    命令:SREM
    描述:删除集合中一个或多个元素(指定元素值),并返回被删除的元素
    在这里插入图片描述
交集、并集、差集、移动元素
  • 交集
    命令:SINTER
    描述:集合间的交集,返回交集
    在这里插入图片描述
    命令:SINTERSTORE
    描述:集合间的交集,把交集放到一个新的集合中,返回交集元素数量
    在这里插入图片描述

  • 并集
    命令:SUNION
    描述:集合间的并集,返回并集
    在这里插入图片描述
    命令:SUNIONSTORE
    描述: 集合间的并集,返回并集,把并集放到一个新的集合中,返回并集元素数量
    在这里插入图片描述

  • 差集
    命令:SDIFF
    描述:集合间的差集,从左向右,依次取差集,返回差集
    在这里插入图片描述
    命令:SDIFFSTORE
    描述:集合间的差集,从左向右,依次取差集,把差集放到一个新的集合中,返回差集元素数量
    在这里插入图片描述

  • 移动元素
    命令:SMOVE
    描述:移动元素,从左向右,把左侧集合中的某个元素,移动到右侧集合中
    在这里插入图片描述

应用场景
  • 抽奖场景1
    主播准备了3个礼物,在所有粉丝中抽取3个幸运的粉丝,每人一件奖品
    命令:SRANDMEMBER fans 3
    描述:从fans集合中随机取出去重的3个元素
    注意:count如果是正数,则取出去重的元素
    在这里插入图片描述
  • 抽奖场景2
    主播准备了3个礼物,在所有粉丝中抽取幸运的粉丝,粉丝获奖数量不限制
    命令:SRANDMEMBER fans -3
    描述:从fans集合中随机取出可以重复的3个元素
    注意:count如果是复数,则取出可以重复的元素
    在这里插入图片描述
  • 抽奖场景3
    公司年终派发购物卡,10张购物卡派发给全部员工(只有3个员工)
    命令:SRANDMEMBER employee -10
    描述:员工集合employee中3个人随机分配10张购物卡,一定不能去重,否则每次都是3个员工没人1张卡了;不去重,则3个人随机分配10张卡。
    注意:count如果是复数,则取出可以重复的元素
    在这里插入图片描述
  • 抽奖场景4
    公司年会抽奖,一次只抽一张,获奖的员工不能再次参与抽奖
    命令:SPOP employee 1
    描述:员工集合employee中,每次随机抽取1个员工中奖,同时中奖员工从员工集合中去掉
    注意:也可以一次抽取多人,把1改成其它数字即可
    在这里插入图片描述

sorted_set组命令

增删改查
  • 新增修改
    命令:ZADD
    描述:新增一个或多个元素,或者修改元素的分数。排序集合中如果没有这个元素,就新增;如果有,就修改分数。
    在这里插入图片描述
    命令:ZINCRBY
    描述:排序集合元素增加分数
    在这里插入图片描述
  • 查询
    命令:ZRANGE
    描述:查询一个排序集合内,一个范围内的元素,索引范围,可以选择是否显示分数,索引从低到高
    在这里插入图片描述
    命令:ZREVRANGE
    描述:查询一个排序集合内,一个范围内的元素,索引范围,可以选择是否显示分数,索引从高到低
    在这里插入图片描述
    命令:ZRANGEBYSCORE
    描述:查询一个排序集合内,一个范围内的元素,分数范围,可以选择是否显示分数,分数从低到高
    在这里插入图片描述
    命令:ZREVRANGEBYSCORE
    描述:查询一个排序集合内,一个范围内的元素,分数范围,可以选择是否显示分数,分数从高到低在这里插入图片描述
    命令:ZRANK
    描述:确定排序集合中一个元素的索引,分数从低到高
    在这里插入图片描述
    命令:ZREVRANK
    描述:确定排序集合中一个元素的索引,分数从高到低
    在这里插入图片描述
    命令:ZCARD
    描述:查询一个排序集合中元素的数量
    在这里插入图片描述
    命令:ZCOUNT
    描述:查询一个排序集合中元素的数量,在给定的分数范围内
    在这里插入图片描述
    命令:ZSCAN
    描述:模糊查询
    在这里插入图片描述
    命令:ZSCORE
    描述:查询一个排序集合中一个元素的分数
    在这里插入图片描述
  • 删除
    命令:ZREM
    描述:删除一个排序集合中的一个或多个元素
    在这里插入图片描述
    命令:ZREMRANGEBYRANK
    描述:删除一个排序集合中的,给定“索引”范围内的所有元素
    在这里插入图片描述
    命令:ZREMRANGEBYSCORE
    描述:删除一个排序集合中的,给定“分数”范围内的所有元素
    在这里插入图片描述
交集、并集

准备两个有序集合k1、k2
在这里插入图片描述

  • 交集
    命令:ZINTERSTORE
    描述:两个有序集合取交集,存入一个新的有序集合。可以指定权重、算法。
    不带权重、算法,默认使用sum算法
    在这里插入图片描述
    加上权重,k1权重1,k2权重0.5,则相同元素的分数:k1 + 0.5 * k2
    在这里插入图片描述
    加上min/max算法
    在这里插入图片描述
  • 并集
    命令:ZUNIONSTORE
    描述:两个有序集合取并集,存入一个新的有序集合。可以指定权重、算法。
    不带权重、算法,默认使用sum算法
    在这里插入图片描述
    加上权重,k1权重1,k2权重0.5,则相同元素的分数:k1 + 0.5 * k2
    在这里插入图片描述
    加上min/max算法
    在这里插入图片描述
其它命令

ZRANGEBYLEX、ZREMRANGEBYLEX、ZREVRANGEBYLEX、ZLEXCOUNT
这些命令是依赖字典排序的,默认是以ASCII字符集的顺序进行排列,如果成员字符串包含utf-8这类字符集的内容,就会影响返回结果,所以建议不要使用。


skiplist

排序是怎么实现的,增删改查的速度为什么这么快?
答:使用skiplist跳跃表。

对比链表,从前往后依次查询,随着数据量增大,性能下降。
跳跃表,是多层的链表。一个元素可能出现在多层中。从高层往低层查,牺牲空间换性能。
插入后,随机造层,为后来的查询加速。
平衡树。
数据量少的时候,可能没有链表速度快,也可能量少的时候不用跳跃表。数量到一定程度再从链表换成跳跃表。跳跃表在数量不断增大的情况下,可以保持速度比较平衡稳定。而链表在数量不断增大时,速度会下降。
在这里插入图片描述


上一篇《05 Redis的String类型&bitmap》
下一篇《07 Redis消息订阅、pipeline、事务、modules、布隆过滤器、缓存LRU》

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值