zoukankan      html  css  js  c++  java
  • Redis数据结构(六)

    Redis数据结构(Sort-set)(游戏排名和微博热点话题排名上应用):
    特点:可存储有序但不重复的数据,根据分数指定存储顺序

    1 Sort-set和Set的区别:
    (1)sort的每个成员都是以一个分数的形式在redis中存储的,redis通过分数对集合中的元素进行从小到大的排序。
    (2)成员是唯一的,但是分数是可以重复的。
    (3)删除增加,更新一个成员都是非常快速的。
    (4)时间复杂度为集合中成员个数的一个对数
    2 Sort-set中的成员在集合中的位置是有序的:

    存储Sort-set常用命令:
    (1)添加元素
    zadd 列名 [分数 值]...
    zadd mysort 80 张三 90 里斯 100 龙舞
    注:如果分数已存在,会用新的分数替换原有的分数

    (2)获得元素
    zscore mysort 张三
    查分数:zscore 列名 值
    zscore mysort 张三
    查数量:zcard 列名
    zcard mysort
    (3)删除元素
    单删:zrem 列名 值...;范围删除:zremrangebyrank 列名 [begin,end]
    zrem mysort 张三 里斯
    (4)范围查询
    升序查值:zrange 列名 [begin,end] <withscores>(两者可为正负数,负数则从反方向开始计数,正数从0开始,负数从-1开始)(withscores带分数,可选项)
    zrange mysort 0 -1
    zrange mysort 0 -1 withscores 由小到大排序

    降序查值:zrevrange 列名 [begin,end] <withscores>(两者可为正负数,负数则从反方向开始计数,正数从0开始,负数从-1开始)(withscores带分数,可选项)
    zrevrange mysort 0 -1
    zrevrange mysort 0 -1 withscores 由大到小排序

    排名范围删除
    zremrangebyrank mysort 0 4
    按照分数删除
    zremrangebyscore mysort 80 100

    (5)扩展名令
    返回某个范围的成员,并按照由低到高排序
    分数查值:zrangebyscore 列名 [begin,end] <withscores>
    zrangebyscore mysort 0 100 withscores


    分页查值:zrangebyscore 列名 [begin,end] <withscores limit [begin,end]>
    zrangebyscore mysort 0 100 withscores limit 0 2

    设置指定成员,增加的分数
    zincrby mysort 3 里斯
    查看下
    zscore mysort 里斯

    获取分数在某个之间的成员的个数
    zcount mysort 80 90

    使用场景
    (1)如大型在线游戏积分排行榜
    (2)构建索引数据

  • 相关阅读:
    统计中的精度和召回率的解释
    人工智能在医疗行业中的应用
    解决Myeclipse在调试(debug)时无法显示变量值问题(转载)
    溢出的问题
    返回引用和对象遇到的坑
    vmWare上网配置(转载)
    linux内核相关的术语(转载)
    一个死锁问题
    Ethernet,token ring,FDDI,ATM,WLAN(转载)
    kmalloc与vmalloc
  • 原文地址:https://www.cnblogs.com/liuyangfirst/p/7099567.html
Copyright © 2011-2022 走看看