Redis的list、hash、set、sorted_set

上一篇我们聊了Redis的String类型,我们都知道Redis有五大类型,除了String,还剩list、hash、set、sorted_set。同时,Redis命令的首字母很多都是和类型直接相关的,比如list中的 l ,一部分表示是list类型(除了表示left的 l )、hash的 h、set的 s,那为啥sorted_set就直接是 z 了呢,很简单,s 不是已经表示set了吗,Redis就直接取26个字母的最后一个 z来表示sorted_set(是不是简单粗暴)。

一、list

Redis中的 list 和Java中的list类似,元素允许重复,并且是有序的,这个顺序表示里面元素的顺序和你元素插入的顺序相同。

1、lpush key value [value…]:在一个key前面插入一个或多个值

2、rpush key value [value…]:给一个key追加一个或多个值

3、lpop key:移除并得到key的第一个元素

4、rpop key:移除并得到key的最后一个元素

5、lrange key start stop:得到key start到stop之间的元素

6、lindex key index:得到key下标index处的值

7、lset key index value:把key下标为index的值设置为value

8、lrem key count value:从key删除count个value;count值为正数从前往后删,负数从后往前删,count为0删除所有value。

9、linsert key before|after pivot value:在key中值为pivot的前或后插入value

10、llen key:得到key的长度

11、blpop key [key …] timeout:移除并得到key第一个元素,阻塞等待timeout直到有一个元素。timeout为0则会一直等待。

12、ltrim key start stop:删除key中start和stop两端的元素

通过不同命令的组合使用,我们可以使用list完成如下的功能:

lpush和lpop,rpush和rpop:同向命令,功能类似于栈
lpush和rpop,rpush和lpop:反向命令,功能类似于队列
lindex和lset:可以实现数组的功能
blpop:阻塞,单播队列(FIFO)

二、hash

Redis中的 hash 类型表示value也为键值对

1、hset key field value:给key中field设置值为value

2、hmset key field value [field value …]:给key中多个字段设置值

3、hget key field:得到key中field字段的值

4、hmget key field [field …]:得到key中多个filed字段的值

5、hkeys key:得到key中所有的字段

6、hvals key:得到key中所有字段对应的值

7、hgetall key:得到key中所有的字段及对应的值

8、hincrbyfloat key field increment:给key中field字段加increment(也可以做减法)

三、set

Redis中的 set 类型也可以类比于Java中的set类型,表示里面的元素是去重的,无序的。

1、sadd key member [member …]:增加一个或多个值到set中

2、smembers key:得到set中所有的值(客户端调用此方法比较消耗主机网卡IO)

3、srem key member [member …]:删除set中的一个或多个值

4、sinter key [key …]:取多个set的交集

5、sinterstore destination key [key …]:取多个set的交集,结果存储于destination

6、sunion key [key …]:取多个set的并集

7、sunionstore destination key [key …]:取多个set的并集,结果存储于destination

8、sdiff key [key …]:取多个set的差集,以左边集合为主

9、sdiffstore destination key [key …]:取多个set的差集,结果存储于destination

10、srandmember key [count]:从key中随机取count个值,count为正表示取出结果不能重复,count为负表示取出结果可以重复(count默认为1)

11、spop key [count]:从key中随机删除count个值,返回删除的值(count默认为1)

从set的特点,以及srandmember 或spop的功能,可以想到一个应用场景是:抽奖

四、sorted_set

我们知道list中元素重复,并且有序;set中元素是去重,并且无序。而这个sorted_set有点像是二者的结合体,它表示元素去重、但有序。但是这个顺序是表示里面的元素已经排好序的意思,和list中有序表示的概念是有区别的。

1、zadd key score member[score member …]:增加一个或多个值到member中,如果存在则更新分数

2、zrange key start stop[withscores]:正序返回start到stop之间的值

3、zrevrange key start stop [withscores]:按分数从高到低返回start到stop之间的值

4、zrangebyscore key min max [withscores]:按分数返回min到max之间的值

5、zscore key member:得到member的分数

6、zrank key member:返回member在sorted_set中的索引值

7、zincrby key increment member:给member的score值加increment

8、zunionstore destination numkeys key [key …] [weights weight] [aggregate sum|min|max]:多个sorted_set求并集,结果赋值给destination

从sorted_set的特点可以想到有一个比较合适的应用场景就是各种各样的排行榜,比如歌曲排行榜。

以上仅列举了部分比较常见的各个类型的命令,关于更多的命令可以使用help @xxx ,查看xxx 组的所有帮助信息

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值