Redis的sorted set类型

Redis 有序集合命令

下表列出了 redis 有序集合的基本命令:

序号 命令及描述
1 ZADD key score1 member1 [score2 member2] 
向有序集合添加一个或多个成员,或者更新已存在成员的分数
2 ZCARD key 
获取有序集合的成员数
3 ZCOUNT key min max 
计算在有序集合中指定区间分数的成员数
4 ZINCRBY key increment member 
有序集合中对指定成员的分数加上增量 increment
5 ZINTERSTORE destination numkeys key [key ...] 
计算给定的一个或多个有序集的交集并将结果集存储在新的有序集合 key 中
6 ZLEXCOUNT key min max 
在有序集合中计算指定字典区间内成员数量
7 ZRANGE key start stop [WITHSCORES] 
通过索引区间返回有序集合指定区间内的成员
8 ZRANGEBYLEX key min max [LIMIT offset count] 
通过字典区间返回有序集合的成员
9 ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT] 
通过分数返回有序集合指定区间内的成员
10 ZRANK key member 
返回有序集合中指定成员的索引
11 ZREM key member [member ...] 
移除有序集合中的一个或多个成员
12 ZREMRANGEBYLEX key min max 
移除有序集合中给定的字典区间的所有成员
13 ZREMRANGEBYRANK key start stop 
移除有序集合中给定的排名区间的所有成员
14 ZREMRANGEBYSCORE key min max 
移除有序集合中给定的分数区间的所有成员
15 ZREVRANGE key start stop [WITHSCORES] 
返回有序集中指定区间内的成员,通过索引,分数从高到低
16 ZREVRANGEBYSCORE key max min [WITHSCORES] 
返回有序集中指定分数区间内的成员,分数从高到低排序
17 ZREVRANK key member 
返回有序集合中指定成员的排名,有序集成员按分数值递减(从大到小)排序
18 ZSCORE key member 
返回有序集中,成员的分数值
19 ZUNIONSTORE destination numkeys key [key ...] 
计算给定的一个或多个有序集的并集,并存储在新的 key 中
20
ZSCAN key cursor [MATCH pattern] [COUNT count] 
迭代有序集合中的元素(包括元素成员和元素分值)

127.0.0.1:6379> zadd scores 94 zs 100 ls
(integer) 2
127.0.0.1:6379> zdd scores 60 ww 47 zl
(error) ERR unknown command `zdd`, with args beginning with: `scores`, `60`, `ww`, `47`, `zl`,
127.0.0.1:6379> zadd scores 60 ww 47 zl
(integer) 2
127.0.0.1:6379> ZRANGE scores 0 -1
1) "zl"
2) "ww"
3) "zs"
4) "ls"
127.0.0.1:6379> ZREVRANGE scores 0 -1
1) "ls"
2) "zs"
3) "ww"
4) "zl"
127.0.0.1:6379> ZRANGE scores 0 -1 withscores
1) "zl"
2) "47"
3) "ww"
4) "60"
5) "zs"
6) "94"
7) "ls"
8) "100"
127.0.0.1:6379> ZREM scores ww
(integer) 1
127.0.0.1:6379> ZREVRANGE scores 0 -1
1) "ls"
2) "zs"
3) "zl"
127.0.0.1:6379> ZRANGEBYSCORE scores 50 80 withscores
(empty list or set)
127.0.0.1:6379> ZRANGEBYSCORE scores 40 80 withscores
1) "zl"
2) "47"
127.0.0.1:6379> ZRANGEBYSCORE scores 40 100 withscores limit 1
(error) ERR syntax error
127.0.0.1:6379> ZRANGEBYSCORE scores 40 100 withscores limit 0 1
1) "zl"
2) "47"
127.0.0.1:6379> ZRANGEBYSCORE scores 40 100 withscores limit 0 2
1) "zl"
2) "47"
3) "zs"
4) "94"
127.0.0.1:6379> ZREMRANGEBYRANK scores 0 0
(integer) 1
127.0.0.1:6379> ZRANGE scores 0 -1 withscores
1) "zs"
2) "94"
3) "ls"
4) "100"
127.0.0.1:6379> ZCARD scores
(integer) 2
127.0.0.1:6379> ZCOUNT scores 90 99
(integer) 1
127.0.0.1:6379> zadd s1 50 aa 60 bb 70 cc
(error) WRONGTYPE Operation against a key holding the wrong kind of value
127.0.0.1:6379> zadd s 50 aa 60 bb 70 cc
(integer) 3
127.0.0.1:6379> zadd s1 50 aa 70 bb
(error) WRONGTYPE Operation against a key holding the wrong kind of value
127.0.0.1:6379> zadd ss 50 aa 70 bb
(integer) 2
127.0.0.1:6379> ZINTERSTORE sss 2 s ss
(integer) 2
127.0.0.1:6379> ZRANGE sss 0 -1 withscores
1) "aa"
2) "100"
3) "bb"
4) "130"
127.0.0.1:6379> ZINTERSTORE de

业务场景

票选广东十大杰出青年,各类综艺选秀海选投票各类资源网站TOP10(电影,歌曲,文档,电商,游戏等)
聊天室活跃度统计
游戏好友亲密度

127.0.0.1:6379> ZADD movies 143 aa 97 bb 200 cc
(integer) 3
127.0.0.1:6379> ZRAnk movies bb
(integer) 0
127.0.0.1:6379> ZRAnk movies cc
(integer) 2
127.0.0.1:6379> ZREVRANk movies bb
(integer) 2
127.0.0.1:6379> ZSCORE movies aa
"143"
127.0.0.1:6379> ZINCRBY movies 1 aa
"144"
127.0.0.1:6379> ZSCORE movies aa
"144"
127.0.0.1:6379>

业务场景
基础服务+增值服务类网站会设定各位会员的试用,让用户充分体验会员优势。例如观影试用VIP、游戏
VIP体验、云盘下载体验VIP、数据查看体验VIP。当VIP体验到期后,如果有效管理此类信息。即便对于正式
VIP用户也存在对应的管理方式。
网站会定期开启投票、讨论,限时进行,逾期作废。如何有效管理此类过期信息。

127.0.0.1:6379> zadd tx 19021090 uid:001
(integer) 1
127.0.0.1:6379> zadd tx 19234290 uid:007
(integer) 1
127.0.0.1:6379> zadd tx 1923429083 uid:008
(integer) 1
127.0.0.1:6379> zrange tx 0 -1 withscores
1) "uid:001"
2) "19021090"
3) "uid:007"
4) "19234290"
5) "uid:008"
6) "1923429083"
127.0.0.1:6379> time
1) "1584619821"
2) "452034"
127.0.0.1:6379>

业务场景
任务/消息权重设定应用
当任务或者消息待处理,形成了任务队列或消息队列时,对于高优先级的任务要保障对其优先处理,如
何实现任务权重管理。

127.0.0.1:6379> ZADD tasks 4 order:id:001
(integer) 1
127.0.0.1:6379> ZADD tasks 1 order:id:002
(integer) 1
127.0.0.1:6379> ZADD tasks 9 order:id:003
(integer) 1
127.0.0.1:6379> ZREVRANGE task 0 -1 withscores
(empty list or set)
127.0.0.1:6379>
127.0.0.1:6379> ZREVRANGE tasks 0 -1 withscores
1) "order:id:003"
2) "9"
3) "order:id:001"
4) "4"
5) "order:id:002"
6) "1"
127.0.0.1:6379> ZREVRANGE tasks 0 0
1) "order:id:003"
127.0.0.1:6379> ZREM tasks order:id:003
(integer) 1
127.0.0.1:6379> ZREVRANGE tasks 0 -1 withscores
1) "order:id:001"
2) "4"
3) "order:id:002"
4) "1"
127.0.0.1:6379>

sorted_set 类型数据操作的注意事项

score保存的数据存储空间是64位,如果是整数范围是-9007199254740992~9007199254740992
score保存的数据也可以是一个双精度的double值,基于双精度浮点数的特征,可能会丢失精度,使用时候要慎重
sorted_set 底层存储还是基于set结构的,因此数据不能重复,如果重复添加相同的数据,score值将被反复覆盖,保留最后一次修改的结果

原文地址:https://www.cnblogs.com/dalianpai/p/12527126.html

时间: 2024-10-09 18:57:24

Redis的sorted set类型的相关文章

redis之sorted sets类型及操作

sorted sets类型及操作 sorted set是set的一个升级版本,它在set的基础上增加了一个顺序属性,这一属性在添加修改元素的时候可以指定,每次指定后,zset会自动重新按新的值调整顺序.可以理解为有两列的mysql表,一列存value,一列存顺序.操作中key理解为zset的名字. 和set一样sorted set也是string类型元素的集合,不同的是每个元素都会关联一个double类型的score.sorted set的实现是skip list和hash table的混合体.

Redis数据类型之SORTEDSET类型

Web程序猿博客:http://blog.csdn.net/thinkercode sorted set类型-特点 sorted set 是 set 的一个升级版本,它在 set 的基础上增加了一个顺序属性,这一属性在添加修改元素的时候可以指定,每次指定后,zset 会自动重新按新的值调整顺序.可以理解为有两列的 mysql 表,一列存 value,一列存顺序.操作中 key 理解为 zset 的名字. 和 set 一样 sorted set 也是 string 类型元素的集合,不同的是每个元素

Redis学习笔记---字符串类型

补充 上篇笔记博客中有些有些关键点未提到,现在这里补充下 redis help 命令 help命令应该是我们使用任何一款软件产品经常用到的命令,有时候通过help命令能够更快的获取相关帮助,而不仅仅通过百度.同样,在Redis中的help命名写的就非常简洁易懂,虽然是只有英文版的帮助信息,但是只要有一定应用基础的人都可以看懂,如: 127.0.0.1:6379> help redis-cli 3.0.2 Type: "help @<group>" to get a l

尚硅谷redis学习4-数据类型

redis的数据类型包括String,Hash(类似于JAVA里的map),List,Set,Zset(sorted Set) String(字符串) string是redis最基本的类型,你可以理解成与Memcached一模一样的类型,一个key对应一个value. string类型是二进制安全的.意思是redis的string可以包含任何数据.比如jpg图片或者序列化的对象 . string类型是Redis最基本的数据类型,一个redis中字符串value最多可以是512M Hash(哈希)

Redis 四:存储类型之有序集合

有序集合似乎更大的操作是由于加了一个叫做“分子”的东西 事实上就好像普通的数据,只是为这个数据加了一个纯数字的标识, 通过操作这些标识来得到我们想要的数据! 分子可以是整形,也可以是双精度浮点型: ==================================================== 1.zadd num 100 a 80 b 70 c 添加一个叫num的有序集合,a元素为100分,b元素为80分.... 2.zscore num a 获取num集合中元素名为a的分子 ====

Redis 三:存储类型之字符串

1.赋值单个: set a 100 [赋值多个:mset a 100 b 200 c 300] 2.取值单个: get a [取值多个:mget a b c] 3.数字递增 incr a 在a的基础上+1,那就是返回101 如果预先的值为0,那么返回1,如果预先的值不是整形,则返回错误“is not an integer...” 3.1 数字递减 decr 用法跟上面一样 decr 4.约定(命名方式) 对象类型:对象ID:对象属性 user:100:friends 存储用户id为100的好友列

Redis 四:存储类型之无序集合

1.sadd num a b c 向num集合中添加abc三个元素 2.srem num b 从num集合中删除b元素 3.smembers num 获取num集合中所有的元素 4.sismember num c 判断c是否存在num集合中 ============================= 5.运算 sadd num a b c sadd num2 a b c d 差集(计算左边比右边多出来的那部分): sdiff num num 2 返回空 sdiff num2 num 返回d 交集

redis string和hash类型操作

Redis 的数据类型 String类型及操作 String是最简单的类型,一个Key对应一个Value,sting类型是二进制安全的.Redis的string可以包含任何数据,比如jpg图片或者序列化的对象. 例子: set name gxj get name 输出:gxj Setnx:设置key对应的值为string类型的value,如果key 已经存在,则返回0,nx是not exist的意思. 例子: set name zjz 回车:则返回0,如果不存在,则会设置值 setex: 设置k

Redis 四:存储类型之散列类型

1.散列类型表达方式简介: =========================================== 键 字段 值 =========================================== 前轮 --->富士康 后轮 --->苹果 宝马: 挡风玻璃 --->加多宝 座椅 --->王老吉 方向盘 --->恒大冰泉 =========================================== 散列类型更好的作用于同一个对象,不同属性,对应不同