redis zset

zadd stu:1 100 math 99 english 98 history : 添加stu:1 科目 分数

zrange user_rank 0 -1 withscores : 从小到大遍历

zrevrange user_rank 0 -1 withscores : 从大到小遍历

zremrangebyscore user_rank 0 50 : 删除分数 0 到 50 的 // 50不能用-1

zremrangebyrank user_rank 0 1: 删除 0 到1 名的成员, (从小到大的排名)

zcard user_rank : 统计成员个数

zrem user_rank music : 删除成员music

获取最大值 zrevrangebyscore stu:2 +inf -inf withscores limit 0 1

从大到小遍历 zrevrangebyscore stu:2 +inf -inf withscores

获取最小值 zrangebyscore stu:2 -inf +inf withscores limit 0 1

从小到大遍历 zrangebyscore stu:2 -inf +inf withscores

在Redis中+inf表示正无穷,-inf表示负无穷。

list

expire stu:3 10 // 给任意key设置过期时间

命令

说明

ZADD

用于将一个或多个成员添加到有序集合中,或者更新已存在成员的 score 值

ZCARD

获取有序集合中成员的数量

ZCOUNT

用于统计有序集合中指定 score 值范围内的元素个数

ZINCRBY

用于增加有序集合中成员的分值

ZINTERSTORE

求两个或者多个有序集合的交集,并将所得结果存储在新的 key 中

ZRANGE

返回有序集合中指定索引区间内的成员数量

ZRANGEBYLEX

返回有序集中指定字典区间内的成员数量

ZRANGEBYSCORE

返回有序集合中指定分数区间内的成员

ZRANK

返回有序集合中指定成员的排名

ZREM

移除有序集合中的一个或多个成员

ZREMRANGEBYRANK

移除有序集合中指定排名区间内的所有成员

ZREMRANGEBYSCORE

移除有序集合中指定分数区间内的所有成员

ZREVRANGE

返回有序集中指定区间内的成员,通过索引,分数从高到低

ZREVRANK

返回有序集合中指定成员的排名,有序集成员按分数值递减(从大到小)排序

ZSCORE

返回有序集中,指定成员的分数值

ZUNIONSTORE

求两个或多个有序集合的并集,并将返回结果存储在新的 key 中

zset 的实现的数据结构

1. hash    key  是member ,   value是score ,, 便于通过key(元素)获取score(分值)

2. 跳表.   key 是元素的socre. 每个节点有:保存数据的robj指针,分值score字段,后退指针backward便于回溯, 因此跳跃表的层数是随机的,但通常情况下不会超过log(N)层,其中N是跳跃表中元素的个数

zset 为什么用跳表不用红黑树,

跳表支持范围查找, 并且实现起来也简单

[value,score]键值对数量少于128个;每个元素的长度小于64字节。 是使用ziplist这种结构本身并不直接包含哈希表

其他时候使用另一种存储方式(HashMap+skipList)

当需要定位到第十名的时候.从头部开始:查找过程从跳跃表的头部节点开始。

hash,hash 的作用就是关联元素 value 和权重 score,保障元素 value 的唯一性,可以通过元素 value 找到相应的 score 值。

跳跃表,跳跃表的目的在于给元素 value 排序,根据 score 的范围获取元素列表

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值