对redis的一次回眸之zset(五)

sorted_set

zadd key score member [score member …],在物理内存,根据分值从小到大,从左往走排,存储地址不随着命令发生变化。

zcount key min max 查找分值从min到max的数量

zscore key member 取得key下某个元素的分值

zincrby key increment member 对某个key下的元素的分值做加法

zrange key start stop 根据下标,取得从start到stop到元素

zrangebyscore key min max 根据分值,取得min到max的key

总结

zset首先是一个集合,但是比set多了排序的功能。包括根据内存存储顺序排序和根据分值排序。
zset是根据分值排序的,如果分值一样,则按照名称的字典序排序。

问题

zset的排序是怎么实现的,zset的增删改查的效率

zset底层是跳表skip list。往跳表插入新的元素的时候,首先会保证最底层有序,然后会随机往上跳层,以空间换取查询的速度。插入到上层元素的时候,找到附近有上层元素的位置,顺着指针找到上层元素,插入到合适的位置。

跳表可以看成是一种类平衡树,依据概率尽可能保证下一层的元素是上一层的2倍。

当整个跳表比较宽,元素比较多的时候,增删改查四个操作的综合平均效率是最稳定的,比其他数据结构要稳定。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值