redis命令之set和zset的操作

redis里面常用的操作set类型(每个元素都是一个值)的命令:

sadd  key member1 [member2 member3 ....]:向key对应的set中添加

sinter set1 set2:交集 

sunion  set1 set2:并集

sdiff  set1 set2:差集 前后顺序影响结果

smembers key :查询所有元素

sismember oneset member:查询member是否在oneset 中,返回0或1

scard key:返回set的元素个数

smove sourceset  destinationset  member:把member从源集合sourceset移动到目标集合destinationset  

srem  oneset  value1 value2...:从oneset  表示的set中删除元素value1  value2....

redis里面的set与list有什么区别?

        set是无序的,因此没有像list那样的在头部插入还是在尾部插入的说法。set中放入的元素也没有先后之分。跟list相同的是,你也可以把set理解成一个箱子,往里面放东西就是了。

1.定义两个set,一个叫friends,元素有xinjiao qinghuai zhao qian;一个叫workmate,元素有fanfan caodan zhao  sun 

192.168.23.112:6379> sadd friends xinjiao qinghuai zhao qian
(integer) 4
192.168.23.112:6379> sadd workmate fanfan caodan zhao  sun
(integer) 4
192.168.23.112:6379> smembers workmate
1) "caodan"
2) "fanfan"
3) "sun"
4) "zhao"
192.168.23.112:6379> smembers workmate
1) "caodan"
2) "fanfan"
3) "sun"
4) "zhao"
192.168.23.112:6379> scard friends
(integer) 4

2.求集合set的交集、并集、差集

192.168.23.112:6379> sinter friends workmate
1) "zhao"
192.168.23.112:6379> sunion friends workmate
1) "qinghuai"
2) "sun"
3) "fanfan"
4) "qian"
5) "xinjiao"
6) "caodan"
7) "zhao"
192.168.23.112:6379> sdiff friends workmate
1) "xinjiao"
2) "qian"
3) "qinghuai"
192.168.23.112:6379> sdiff  workmate  friends
1) "fanfan"
2) "caodan"
3) "sun"

注意:这些集合的交集、并集、差集操作并不会影响redis集合里面的值,只是求出计算后的结果罢了。

3.判断一个元素在集合中是否存在用sismember,存在返回1,不存在返回0

192.168.23.112:6379> sismember friends haha
(integer) 0
192.168.23.112:6379> sismember friends zhao
(integer) 1

4.元素在集合之间的移动

192.168.23.112:6379> smove friends workmate qian
(integer) 1
192.168.23.112:6379> smembers friends
1) "xinjiao"
2) "qinghuai"
3) "zhao"
192.168.23.112:6379> smembers workmate
1) "caodan"
2) "fanfan"
3) "sun"
4) "zhao"
5) "qian"

说明:smove第一个参数是源头,第二个参数是目的地,第三个参数是要移动的值。

再来看看zset命令。

   zset在redis里面指的是sort set类型,顾名思义,这种类型就是可以排序的set,因为在zset里面的每个元素都是值和权的集合,redis里面常用的zset相关命令如下:

zadd zset1 score1 member1 [score2 member2....]:如 zadd topic 33 9 ,id位9的帖子点击量为33

zrevrange zset1 [start end] withscores:把zset1按权逆序排列,返回排列后的member,start end指定要操作的个数,下标从0开始,[]表示闭区间,下同,withscores可加可不加,表示是否显示member对应的权值

zrange zset1 [start end] withscores:和zrevrange类似,只不过是正常顺序排列,withscores可加可不加,表示是否显示score

zrank zset1 member:把名为zset1的sort set 按权从小到大排序,并返回member在排序后的zset中的下标(从0开始)

zrevrank zset1 member:类似zrank,唯一不同的是zrevrank是按权从大到小排序

zcard zset1:zset1里面的元素个数

zscore zset1 member:返回member对应的权值

zrem zset1  member:按member名称来删除指定元素

zincrby zset1 num member:按num的大小增加member在zset1中的权值,即修改menber的权值

zremrangebyrank zset1 [min max]:先按权按从小到大来排序,再删除下标在min和max之间的元素,min 和max分别指从0开始的下标

zcount zset1 [min max]:返回score值在min和max之间的元素个数

一、定义一个aihao的有序集合

192.168.23.112:6379> zadd aihao 100 play  50 work 60 read 90 money 88 film 0 sad 99  happy
(integer) 7

二、zrange与zrevrange,可以看到zrange就是取出aihao里面的members成员,并默认按权值从小到大的顺序排序 

192.168.23.112:6379> zrange aihao 0 100
1) "sad"
2) "work"
3) "read"
4) "film"
5) "money"
6) "happy"
7) "play"
192.168.23.112:6379> zrange aihao 0 100 withscores
 1) "sad"
 2) "0"
 3) "work"
 4) "50"
 5) "read"
 6) "60"
 7) "film"
 8) "88"
 9) "money"
10) "90"
11) "happy"
12) "99"
13) "play"
14) "100"
192.168.23.112:6379> zrevrange aihao 0 100
1) "play"
2) "happy"
3) "money"
4) "film"
5) "read"
6) "work"
7) "sad"
192.168.23.112:6379> zrevrange aihao 0 100 withscores
 1) "play"
 2) "100"
 3) "happy"
 4) "99"
 5) "money"
 6) "90"
 7) "film"
 8) "88"
 9) "read"
10) "60"
11) "work"
12) "50"
13) "sad"
14) "0"

三、zrank与zrevrank,拿zrank来说,其实就是先把aihao执行zrange排序,再取出happy在排序后的集合中的下标并返回

192.168.23.112:6379> zrank aihao happy
(integer) 5
192.168.23.112:6379> zrevrank aihao happy
(integer) 1

四、修改已有member的权值

192.168.23.112:6379> zincrby aihao 5 money
"95"
192.168.23.112:6379> zscore aihao money
"95"

五、zremrangebyrank 

192.168.23.112:6379> zrange aihao 0 100
1) "sad"
2) "work"
3) "read"
4) "film"
5) "money"
6) "happy"
7) "play"
192.168.23.112:6379> zremrangebyrank aihao 1 2
(integer) 2
192.168.23.112:6379> zrange aihao 0 100
1) "sad"
2) "film"
3) "money"
4) "happy"
5) "play"

六、zcount返回权值在指定区间内的元素个数

192.168.23.112:6379> zrange aihao 0 100 withscores
 1) "sad"
 2) "0"
 3) "film"
 4) "88"
 5) "money"
 6) "95"
 7) "happy"
 8) "99"
 9) "play"
10) "100"
192.168.23.112:6379> zcount aihao 0 90
(integer) 2
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值