专业编程基础技术教程

网站首页 > 基础教程 正文

Redis系列-数据类型sorted_set redis8种数据类型

ccvgpt 2024-10-12 13:48:42 基础教程 5 ℃

新的存储需求:数据排序有利于数据的有效展示,需要提供一种可以根据自身特征进行排序的方式

需要的存储结构:新的存储模型,可以保存可排序的数据

Redis系列-数据类型sorted_set redis8种数据类型

sorted_set类型:在set的存储结构基础上添加可排序字段


sorted_set 类型数据的基本操作

添加数据

zadd key score1 member1 [score2 member2]

获取全部数据

zrange key start stop [WITHSCORES] 正向排序

zrevrange key start stop [WITHSCORES] 反向排序

删除数据

zrem key member [member ...]

按条件获取数据

zrangebyscore key min max [WITHSCORES] [LIMIT]

zrevrangebyscore key max min [WITHSCORES]

条件删除数据

zremrangebyrank key start stop

zremrangebyscore key min max

注意:

min与max用于限定搜索查询的条件

start与stop用于限定查询范围,作用于索引,表示开始和结束索引

offset与count用于限定查询范围,作用于查询结果,表示开始位置和数据总量

获取集合数据总量

zcard key 查询一共有多少数据

zcount key min max 查询在这个score范围内一共有多少个数据

集合交、并操作 还可以对合集里面的数据进行最大、最小,平均值。

zinterstore destination numkeys key [key ...]

zunionstore destination numkeys key [key ...]


业务场景

票选广东十大杰出青年,各类综艺选秀海选投票

各类资源网站TOP10(电影,歌曲,文档,电商,游戏等)

聊天室活跃度统计

游戏好友亲密度

解决:

获取数据对应的索引(排名)

zrank key member

zrevrank key member

score值获取与修改

zscore key member

zincrby key increment member

使用:

使用zrank key member可以获取到前key中某个member的排名。在使用zscore key member获取其score的值得知其投票或者人气、点赞的值。如果后续还有点赞则使用zincrby key increment member 对其增加相应的数量即可。

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

score保存的数据存储空间是64位,如果是整数范围是-9007199254740992~9007199254740992

score保存的数据也可以是一个双精度的double值,基于双精度浮点数的特征,可能会丢失精度,使用时候要慎重

sorted_set 底层存储还是基于set结构的,因此数据不能重复,如果重复添加相同的数据,score值将被反复覆盖,保留最后一次修改的结果。

最近发表
标签列表