redis中set,zset命令
2020-09-23 本文已影响0人
小鱼_a563
一.set基本命令
1.添加(sadd),查看(smembers)一个set,判断(sismember)一个元素是否存在
myredis:0>sadd myset hello #添加一个myset集合
"1"
myredis:0>sadd myset word
"1"
myredis:0>sadd myset xiaoyu
"1"
myredis:0>smembers myset #查看myset集合中所有的值
1) "hello"
2) "xiaoyu"
3) "word"
myredis:0>sismember myset word #判断一个元素是否存在
"1"
myredis:0>scard myset #查看set中有多少个元素
"2"
######################################################################################
2.删除
myredis:0>spop myset #随机删除一个元素
"hello"
myredis:0>spop myset #随机删除一个元素
"xiaoyu"
myredis:0>smembers myset
1) "word"
myredis:0>srem myset hello #删除指定元素
"1"
######################################################################################
3.set是一个无序不重复的集合。随机一个元素(可以使用抽奖程序)
myredis:0>srandmember myset #随机set集合中一个元素
"word"
myredis:0>srandmember myset 2 #随机set集合中两个元素
1) "xiaoyu"
2) "xiaogou"
######################################################################################
4.把一个set中的元素移动到另外一个set集合中
myredis:0>smembers myset
1) "xiaogou"
2) "xiaoyu"
3) "word"
4) "yuanyuan"
myredis:0>sadd myset2 my
"1"
myredis:0>smove myset myset2 xiaoyu #把一个set中的元素移动到另外一个set集合中
"1"
myredis:0>smembers myset
1) "xiaogou"
2) "word"
3) "yuanyuan"
myredis:0>smembers myset2
1) "xiaoyu"
2) "my"
######################################################################################
######################################################################################
二.set使用场景
myredis:0>smembers myset
1) "c"
2) "a"
3) "b"
myredis:0>smembers myset2
1) "d"
2) "c"
3) "e"
1.微博,B站等社交网站中有共同关注,共同好友
- 差集
myredis:0>sdiff myset myset2
1) "a"
2) "b"
- 并集
myredis:0>sunion myset myset2
1) "b"
2) "c"
3) "a"
4) "d"
5) "e"
- 交集
myredis:0>SINTER myset myset2
1) "c"
三.zet基本命令
- 在set基础上,增加了一个值,set k1 v1,zset k1 score1 v1
1.存储,查看
myredis:0>zadd k1 1 one 2 two 3 three #存储key为k1的数据
"3"
myredis:0>zrange k1 0 3 #按照下标查看数据
1) "one"
2) "two"
3) "three"
myredis:0>zrange k1 0 -1 #查看所有的值
1) "one"
2) "two"
3) "three"
############################################################################
2.排序
myredis:0>zadd salary 2000 xiaohong 5000 xiaoyu 500 xiaogou
"3"
myredis:0>zrangebyscore salary -inf +inf #按照scores从小到大正序排列,只显示value
1) "xiaogou"
2) "xiaohong"
3) "xiaoyu"
myredis:0>zrevrange salary 0 -1 #按照scores从大到小倒序排列,只显示value
1) "xiaoyu"
2) "xiaohong"
myredis:0>zrangebyscore salary -inf +inf withscores #在负无穷和正无穷之间按照scores正序排列,并且显示score和value
1) "xiaogou"
2) "500"
3) "xiaohong"
4) "2000"
5) "xiaoyu"
6) "5000"
myredis:0>zrangebyscore salary -inf 3000 withscores #在负无穷和3000之间按照scores正序排列,并且显示score和value
1) "xiaogou"
2) "500"
3) "xiaohong"
4) "2000"
############################################################################
3.移除元素
myredis:0>zrem salary xiaogou #移除指定的元素
"1"
myredis:0>zrange salary 0 -1
1) "xiaohong"
2) "xiaoyu"
myredis:0>zcard salary #查看集合中元素个数
"2"
############################################################################
4.按照区间之间的元素个数
myredis:0>zrange salary 0 6000 withscores
1) "xiaohong"
2) "2000"
3) "xi"
4) "3000"
5) "xiaoyu"
6) "5000"
myredis:0>zcount salary 0 4000 #查看某个key 中scores的0到4000的元素个数
"2"
############################################################################
zset总结
- set的有序版本:可以实现成绩排序,工资等排序
- 排行榜应用的实现,取TOP N的实现