Zset有序集合

HeJin大约 2 分钟数据库技术Redis

在set的基础上,增加了一个值。

set k1 v1
zset k1 score1 v1
##########################################################################
# 1、存值取值
127.0.0.1:6379> zadd myset  1 one					# 添加一个值
(integer) 1
127.0.0.1:6379> zadd myset  2 two 3 three 4 four	# 添加多个值
(integer) 3
127.0.0.1:6379> ZRANGE myset 0 -1					# 获取所有值
1) "one"
2) "two"
3) "three"
4) "four"

##########################################################################
# 2、排序
127.0.0.1:6379> zadd salary 2500 xiaohong			# 添加3个用户
(integer) 1
127.0.0.1:6379> zadd salary 5000 zhangsan
(integer) 1
127.0.0.1:6379> zadd salary 500 hejin
(integer) 1
127.0.0.1:6379> ZRANGE salary 0 -1
1) "hejin"
2) "xiaohong"
3) "zhangsan"
127.0.0.1:6379> ZRANGEBYSCORE salary -inf +inf		# 显示全部的用户 从小到大排序
1) "hejin"
2) "xiaohong"
3) "zhangsan"
127.0.0.1:6379> ZRANGEBYSCORE salary 0 -1 
(empty array)
127.0.0.1:6379> ZRANGEBYSCORE salary +inf -inf 
(empty array)
127.0.0.1:6379> ZRANGEBYSCORE salary -inf +inf withscores # 显示全部的用户。从小到大排序。并且附带成绩
1) "hejin"
2) "500"
3) "xiaohong"
4) "2500"
5) "zhangsan"
6) "5000"
127.0.0.1:6379> ZRANGEBYSCORE salary -inf 2500 withscores	# 显示工资小于2500员工的升序排列信息
1) "hejin"
2) "500"
3) "xiaohong"
4) "2500"

127.0.0.1:6379> ZREVRANGE salary 0 -1						# 从大到小排序
1) "zhangsan"
2) "hejin"
127.0.0.1:6379> ZREVRANGE salary 0 -1 withscores			# 从大到小排序,带成绩
1) "zhangsan"
2) "5000"
3) "hejin"
4) "500"

##########################################################################
# 3、移除元素
127.0.0.1:6379> zrange salary 0 -1
1) "hejin"
2) "xiaohong"
3) "zhangsan"
127.0.0.1:6379> zrem salary xiaohong	# 移除有序集合中的指定元素
(integer) 1
127.0.0.1:6379> zrange salary 0 -1
1) "hejin"
2) "zhangsan"
127.0.0.1:6379> zcard salary			# 获取有序集合中的个数
(integer) 2

##########################################################################
# 4、获取指定区间的成员数量
127.0.0.1:6379> zadd myset 1 hello
(integer) 1
127.0.0.1:6379> zadd myset 2 world 3 hejin
(integer) 2
127.0.0.1:6379> ZRANGE myset 0 -1
1) "hello"
2) "world"
3) "hejin"
127.0.0.1:6379> zcount myset 1 3	# 获取指定区间的成员数量
(integer) 3
127.0.0.1:6379> zcount myset 1 2
(integer) 2

如果工作中有需要,查查官方文档。

案例思路

  • 工资表排序
  • 普通消息,重要消息。带权重进行判断
  • 排行榜