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)构建索引数据

  • 相关阅读:
    read、write 与recv、send区别 gethostname
    网络粘包问题解决办法
    C++中 =default 和 =delete 使用
    c++ unordered_map 自定义key
    c++ list的坑
    c++ vector 的坑
    对于RBAC与shiro的一些思考
    求两个数的最大公约数&求N个数的最大公约数
    Nginx是什么?有什么用?
    如何做可靠的分布式锁,Redlock真的可行么
  • 原文地址:https://www.cnblogs.com/liuyangfirst/p/7099567.html
Copyright © 2011-2022 走看看