存储Sorted-Set

Sorted-Set和Set的区别

Sorted-Set中的成员在集合中的位置是有序的

存储Sorted-set常用命令

添加元素

获得元素

删除元素

范围查询

扩展命令

zadd 添加元素 里面包括评分和值

127.0.0.1:6379> zadd sort1 5 a 4 b 6 c

(integer) 3

我们添加集合sort1 元素是a,b,c 评分分别是5,4,6

集合里的排序是根据评分从小到大排序的;

zrange是查找元素 -1代表是最后一个

127.0.0.1:6379> zrange sort1 0 -1

1) "b"

2) "a"

3) "c"

假如我们继续添加元素

这里分两种情况

假如次元素集合里面已经有了,则覆盖

我们继续添加b 此时评分改成7

127.0.0.1:6379> zadd sort1 7 b

(integer) 0

通过zscore 获取b的评分

127.0.0.1:6379> zscore sort1 b

"7"

发现已经修改了;

127.0.0.1:6379> zrange sort1 0 -1

1) "a"

2) "c"

3) "b"

假如添加的元素不在集合里,则添加进去

127.0.0.1:6379> zadd sort1 9 d

(integer) 1

127.0.0.1:6379> zrange sort1 0 -1

1) "a"

2) "c"

3) "b"

4) "d"

删除元素zrem

127.0.0.1:6379> zrem sort1 b

(integer) 1

127.0.0.1:6379> zrange sort1 0 -1

1) "a"

2) "c"

3) "d"

zcard 查看集合里的元素个数

127.0.0.1:6379> zcard sort1

(integer) 3

withscores  把评分也显示出来

127.0.0.1:6379> zrange sort1 0 -1 withscores

1) "a"

2) "5"

3) "c"

4) "6"

5) "d"

6) "9"

zrevrange 降序排列

127.0.0.1:6379> zrevrange sort1 0 -1 withscores

1) "d"

2) "9"

3) "c"

4) "6"

5) "a"

6) "5"

我们再加两个元素

127.0.0.1:6379> zadd sort1 10 e  5 f

(integer) 2

zremrangebyrank 根据排名来删除元素  删除3个

127.0.0.1:6379> zremrangebyrank sort1 0 2

(integer) 3

127.0.0.1:6379> zrange sort1 0 -1 withscores

1) "d"

2) "9"

3) "e"

4) "10"

再添加元素

127.0.0.1:6379> zadd sort1 11 f 16 g 18 h

(integer) 3

127.0.0.1:6379> zrange sort1 0 -1 withscores

1) "d"

2) "9"

3) "e"

4) "10"

5) "f"

6) "11"

7) "g"

8) "16"

9) "h"

10) "18"

zremrangebyscore 根据具体评分范围来删除元素

127.0.0.1:6379> zremrangebyscore sort1 10 16

(integer) 3

127.0.0.1:6379> zrange sort1 0 -1 withscores

1) "d"

2) "9"

3) "h"

4) "18"

再添加元素

127.0.0.1:6379> zadd sort1 20 i 23 j 30 k

(integer) 3

127.0.0.1:6379> zrange sort1 0 -1 withscores

1) "d"

2) "9"

3) "h"

4) "18"

5) "i"

6) "20"

7) "j"

8) "23"

9) "k"

10) "30"

zrangebyscore 根据评分范围来查找元素

127.0.0.1:6379> zrangebyscore sort1 18 23 withscores

1) "h"

2) "18"

3) "i"

4) "20"

5) "j"

6) "23"

limit 限定查找起始 类似分页

127.0.0.1:6379> zrangebyscore sort1 18 23 withscores limit 0 2

1) "h"

2) "18"

3) "i"

4) "20"

zincrby 给指定元素加分

127.0.0.1:6379> zincrby sort1 5 h

"23"

127.0.0.1:6379> zrange sort1 0 -1 withscores

1) "d"

2) "9"

3) "i"

4) "20"

5) "h"

6) "23"

7) "j"

8) "23"

9) "k"

10) "30"

zcount 查找指定评分范围的元素个数

127.0.0.1:6379> zcount sort1 20 23

(integer) 3

Sorted-Set使用场景

大型在线游戏积分排行榜

构建索引数据

Redis的数据结构之sorted-set的更多相关文章

  1. 聊一聊Redis的数据结构

    如果没有记错的话,应该是在两个月前把 我们经常看到此类的文章: Redis的五种数据结构 Redis的数据结构以及对应的使用场景 其实以数据结构这个词去说明Redis的String.Hash.List ...

  2. Redis常用数据结构

    Redis常用数据结构包括字符串(strings),列表(lists),哈希(hashes),集合(sets),有序集合(sorted sets). redis的key最大不能超过512M,可通过re ...

  3. Redis的数据结构、通用操作及其特性

    Redis的数据结构 五种数据类型: 字符串(String).字符串列表(list).字符串集合(set).有序字符串集合(sorted set).哈希(hash) key定义的注意点: 不要过长,不 ...

  4. 你真的懂redis的数据结构了吗?redis内部数据结构和外部数据结构揭秘

    Redis有哪些数据结构? 字符串String.字典Hash.列表List.集合Set.有序集合SortedSet. 很多人面试时都遇到过这种场景吧? 其实除了上面的几种常见数据结构,还需要加上数据结 ...

  5. Redis的数据结构

    Redis的数据结构 redis是一种高级的key-value的存储系统,其中value支持五种数据类型. 字符串(String) 哈希(hash) 字符串列表(list) 字符串集合(set) 有序 ...

  6. redis内部数据结构深入浅出

    最大感受,无论从设计还是源码,Redis都尽量做到简单,其中运用到的原理也通俗易懂.特别是源码,简洁易读,真正做到clean and clear, 这篇文章以unstable分支的源码为基准,先从大体 ...

  7. 2017-4-20/Redis的数据结构及应用场景

    1. 谈谈你对redis的理解,它的应用场景. Redis是一个key-value存储系统,它支持存储的value类型包括string字符串.list链表.set集合.sorted Set有序集合和h ...

  8. redis内部数据结构和外部数据结构揭秘

    Redis有哪些数据结构? 字符串String.字典Hash.列表List.集合Set.有序集合SortedSet. 很多人面试时都遇到过这种场景吧? 其实除了上面的几种常见数据结构,还需要加上数据结 ...

  9. redis各种数据结构使用场景

    一.redis 数据结构使用场景 原来看过 redisbook 这本书,对 redis 的基本功能都已经熟悉了,从上周开始看 redis 的源码.目前目标是吃透 redis 的数据结构.我们都知道,在 ...

  10. 你真的懂了redis的数据结构吗?redis内部数据结构和外部数据结构揭秘

    原文链接:https://mp.weixin.qq.com/s/hKpAxPE-9HJgV6GEdV4WoA Redis有哪些数据结构? 字符串String.字典Hash.列表List.集合Set.有 ...

随机推荐

  1. 解决Apache配置虚拟主机时出现403错误的问题

    1.用文本编辑器打开Apache中的httpd.conf,搜索httpd-vhosts.conf,找到“#Include conf/extra/httpd-vhosts.conf”,并把“#”去掉,启 ...

  2. javac编译后运行提示找不到或无法加载主类

    第一种常见错误: package demo_01; public class hello { public static void main(String[] args) { System.out.p ...

  3. Go Socket实现简单的HttpServer

    在上篇博客中写到如何用Python实现一个类似tomcat的简单服务器,接下来用go语言去实现 1. Go本身自己封装实现了非常简单的httpServer package main import ( ...

  4. Cesium 动态更换模型贴图方法

    参考资料 github 讨论地址 示例代码地址 示例代码 var viewer = new Cesium.Viewer('cesiumContainer'); var scene = viewer.s ...

  5. 记一次Mysql魔鬼实训

    1.查看某个Mysql数据库当前使用的字符集 show create database [库名称] 2.查看当前书库版本信息 #mysql -V MariaDB [(none)]> use my ...

  6. 查看CentOS版本信息

    今天小编将给大家详细讲解查看CentOS版本信息的命令. (一) 查看已经安装的CentOS版本信息 1.cat /etc/issue 查看版本 cat  缩写concatenate  cat命令可以 ...

  7. vue-cli按需加载,懒加载组件

    vue来做一个单页面应用,当我们的项目越来越大,组件越来越多的时候,首次启动项目户特别慢,就算做一个加载框,蒙层之类的,体验也不会好,这个时候就需要按需加载 1.什么叫按需加载 所谓按需加载,顾名思义 ...

  8. UOJ#201. 【CTSC2016】单调上升路径 构造

    原文链接https://www.cnblogs.com/zhouzhendong/p/UOJ201.html 题解 首先把题目里面的提示抄过来: 结论:假设带权无向图 G 有 100 个节点 1000 ...

  9. 辅助排序和Mapreduce整体流程

    一.辅助排序 需求:先有一个订单数据文件,包含了订单id.商品id.商品价格,要求将订单id正序,商品价格倒序,且生成结果文件个数为订单id的数量,每个结果文件中只要一条该订单最贵商品的数据. 思路: ...

  10. Java 中的内部类

    前言 在第一次把Java 编程思想中的内部类这一章撸完后,有点印象.大概知道了什么时内部类,局部内部类,匿名内部类,嵌套内部类.随着时间的推移,自己慢慢的就忘记了,总感觉自己思考的东西不多,于是 看了 ...