Redis的sorted-set

目录

 

sorted-set和set主要区别:

常用命令

使用场景


 

sorted-set和set主要区别:

sorted-set都有一个分数与之关联,redis利用分数进行从小到大排序。分数可以重复。

sorted-set中的成员在集合中的位置是有序的。

(游戏排名,微博热点)

常用命令

添加元素:zadd,已经存储在元素的时候,会用新的分数,替换原来的分数。个数不显示,值不添加。

127.0.0.1:6379> zadd mysort 70 zs 80 ls 90 ww
(integer) 3
127.0.0.1:6379> zadd mysort 100 zs
(integer) 0
127.0.0.1:6379> zadd mysort 60 hh
(integer) 1

获得元素:zscore mysort zs

127.0.0.1:6379> zscore mysort zs
"100"

获得具体成员的数量:zcard

127.0.0.1:6379> zcard mysort
(integer) 4

删除元素:zrem

127.0.0.1:6379> zrem mysort ww
(integer) 1
127.0.0.1:6379> zcard mysort
(integer) 3

范围查询:zrange 名字 0 -1(从开始到结束)

127.0.0.1:6379> zadd mysort 85 jack
(integer) 1
127.0.0.1:6379> zadd mysort 95 tom
(integer) 1
127.0.0.1:6379> zrange mysort 0 -1
1) "hh"
2) "ls"
3) "jack"
4) "tom"
5) "zs"

显示分数以及数值:(从小到大排序):zrange

127.0.0.1:6379> zrange mysort 0 -1 withscores
 1) "hh"
 2) "60"
 3) "ls"
 4) "80"
 5) "jack"
 6) "85"
 7) "tom"
 8) "95"
 9) "zs"
10) "100"

显示分数以及数值:(从大到小):zreverange

127.0.0.1:6379> zrevrange mysort 0 -1 withscores
 1) "zs"
 2) "100"
 3) "tom"
 4) "95"
 5) "jack"
 6) "85"
 7) "ls"
 8) "80"
 9) "hh"
10) "60"

根据排名范围删除元素:zremrangebyrank

127.0.0.1:6379> zremrangebyrank mysort 0 4
(integer) 5
127.0.0.1:6379>  smembers mysort
(empty list or set)

根据分数删除:zremrangebyscore,删除分数之间的值。

127.0.0.1:6379> zadd mysort 80 ls 90 ws 100 hh 
(integer) 3
127.0.0.1:6379> zremrangebyscore mysort 80 90
(integer) 2
127.0.0.1:6379> zrange mysort 0 -1
1) "hh"

根据分数查询

127.0.0.1:6379> zrangebyscore mysort 0 100
1) "zs"
2) "ls"
3) "ww"
4) "hh"
127.0.0.1:6379> zrangebyscore mysort 0 100 withscores
1) "zs"
2) "70"
3) "ls"
4) "80"
5) "ww"
6) "90"
7) "hh"
8) "100"

限制2个显示。

127.0.0.1:6379> zrangebyscore mysort 0 100 withscores limit 0 2
1) "zs"
2) "70"
3) "ls"
4) "80"

给分数添加

127.0.0.1:6379> zincrby mysort ls 3
(error) ERR value is not a valid float
127.0.0.1:6379> zincrby mysort 3 ls
"83"
127.0.0.1:6379> zsocre mysort ls
(error) ERR unknown command `zsocre`, with args beginning with: `mysort`, `ls`, 
127.0.0.1:6379> zscore mysort ls
"83"

查看个数,分数从80到90的

127.0.0.1:6379> zcount mysort 80 90
(integer) 2

使用场景

(1)用于大型游戏积分排行榜,变化的时候zadd可以更新玩家分数,zrange获取积分,多少用户的信息。

(2)构建索引数据。

 

Spring Boot是一个开源的Java开发框架,可以用来简化和加速Java应用程序的开发。它提供了很多开箱即用的特性和功能,包括对延时队列的支持。 延时队列是一种可以按照一定的时间顺序处理任务的队列,其中任务会在一定的延时时间后被执行。Spring Boot可以利用基于sorted-set的数据结构来实现延时队列。 在Spring Boot中,可以使用Redis作为存储延时队列的后端。Redis是一个开源的内存数据结构存储系统,支持多种数据结构,包括sorted-setSorted-setRedis的一种有序集合数据结构,可以根据元素的score值进行排序。 要实现基于sorted-set的延时队列,可以将任务的执行时间作为score值,将任务的内容作为value值,将任务存储在sorted-set中。当一个任务需要被执行时,可以通过定时任务或者其他方式,定时从sorted-set中获取score值小于当前时间的任务,并进行处理。处理完成后,可以从sorted-set中删除该任务。 基于sorted-set的实现延时队列有以下几个优点: 1. 实现简单:利用Redissorted-set数据结构,可以直接存储和获取有序的任务。 2. 高效性能:Redis是一个高性能的内存数据库,可以快速处理大量的任务。 3. 数据持久化:Redis可以将数据持久化到磁盘,保证任务的可靠存储。 总结来说,Spring Boot可以利用Redissorted-set数据结构来实现基于sorted-set的延时队列。这种实现简单高效,可以保证任务按照一定的延时顺序进行处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值