`
bigboy
  • 浏览: 169950 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Redis sorted set操作

 
阅读更多

 

sorted set是set的一个升级版本,它在set的基础上增加了一个顺序属性,这一属性在添加

修改元素的时候可以指定,每次指定后,zset会自动重新按新的值调整顺序。可以理解为有

两列的mysql表,一列存value,一列存顺序。操作中key理解为zset的名字。 

 

和set一样sorted  set也是string类型元素的集合,不同的是每个元素都会关联一个double

类型的score。sorted set的实现是skip list和hash table的混合体。

 

当元素被添加到集合中时,一个元素到score的映射被添加到hash  table中,所以给定一个

元素获取score的开销是O(1),另一个score到元素的映射被添加到skip list,并按照score排

序,所以就可以有序的获取集合中的元素。添加,删除操作开销都是O(log(N))和skip list的

开销一致,redis 的skip list实现用的是双向链表,这样就可以逆序从尾部取元素。sorted set最

经常的使用方式应该是作为索引来使用.我们可以把要排序的字段作为score存储,对象的id

当元素存储.

 

redis 127.0.0.1:6379> zadd mysset 1 one 往集合中添加指定score的元素

(integer) 1

redis 127.0.0.1:6379> zadd mysset 2 two

(integer) 1

redis 127.0.0.1:6379> zadd mysset 3 two

(integer) 0

redis 127.0.0.1:6379> zrang mysset 0 -1 withscores 

(error) ERR unknown command 'zrang'

redis 127.0.0.1:6379> zrange mysset 0 -1 withscores 列出所有的元素

1) "one"

2) "1"

3) "two"

4) "3"

redis 127.0.0.1:6379> zrem mysset two 删除集合中的指定元素

(integer) 1

redis 127.0.0.1:6379> zrange mysset 0 -1  withscores

1) "one"

2) "1"

redis 127.0.0.1:6379> zincrby mysset 2 one 增加指定元素的score值

"3"

redis 127.0.0.1:6379> zrange mysset 0 -1 withscores

1) "one"

2) "3"

redis 127.0.0.1:6379> zadd mysset 1 two

(integer) 1

redis 127.0.0.1:6379> zadd mysset 2 three

(integer) 1

redis 127.0.0.1:6379> zadd mysset 3 four

(integer) 1

redis 127.0.0.1:6379> zadd mysset -1 five

(integer) 1

redis 127.0.0.1:6379> zrange mysset 0 -1 withscores

 1) "five"

 2) "-1"

 3) "two"

 4) "1"

 5) "three"

 6) "2"

 7) "four"

 8) "3"

 9) "one"

10) "3"

redis 127.0.0.1:6379> zrank mysset

(error) ERR wrong number of arguments for 'zrank' command

redis 127.0.0.1:6379> zrank mysset two 将集合从小到大的顺序排列取出指定元素的下标

(integer) 1

redis 127.0.0.1:6379> zrange mysset 0 -1 withscores

 1) "five"

 2) "-1"

 3) "two"

 4) "1"

 5) "three"

 6) "2"

 7) "four"

 8) "3"

 9) "one"

10) "3"

redis 127.0.0.1:6379> zrevrank mysset two 返回名称为key的zset中member元素的排名(按score从大到小排序)即下标

(integer) 3

redis 127.0.0.1:6379> zrevrange mysset 0 -1 withscores

 1) "one"

 2) "3"

 3) "four"

 4) "3"

 5) "three"

 6) "2"

 7) "two"

 8) "1"

 9) "five"

10) "-1"

redis 127.0.0.1:6379> zrange mysset 0 -1 withscores

 1) "five"

 2) "-1"

 3) "two"

 4) "1"

 5) "three"

 6) "2"

 7) "four"

 8) "3"

 9) "one"

10) "3"

redis 127.0.0.1:6379> zrangebyscore mysset 2 4 withscores  返回集合中score在给定区间的元素 

1) "three"

2) "2"

3) "four"

4) "3"

5) "one"

6) "3"

redis 127.0.0.1:6379> zcount mysset 2 3 返回集合中score在给定区间的数量 

(integer) 3

redis 127.0.0.1:6379> zcard mysset  返回集合中元素个数 

(integer) 5

redis 127.0.0.1:6379> zscore mysset two  返回给定元素对应的score

"1"

redis 127.0.0.1:6379> zremrangebyrank mysset 3 3  删除集合中排名在给定区间的元素

(integer) 1

redis 127.0.0.1:6379> zrange mysset 0 -1 withscores 

1) "five"

2) "-1"

3) "two"

4) "1"

5) "three"

6) "2"

7) "one"

8) "3"

redis 127.0.0.1:6379> zremrangebyscore mysset 1 2 删除集合中score在给定区间的元素 

(integer) 2

redis 127.0.0.1:6379> zrange mysset 0 -1 withscores

1) "five"

2) "-1"

3) "one"

4) "3"

 

 

 

分享到:
评论

相关推荐

    Node.js + Redis Sorted Set实现任务队列

    需求:功能 A 需要调用第三方 API 获取数据,而第三方 API 自身是异步处理方式,在调用后会返回数据与状态 { data: “查询结果”, “status”: “正在异步处理中”...根据以上问题,想到使用 Node.js + Redis sorted se

    redis的sorted set实现延时队列

    在本篇文章中,我们将深入探讨如何利用 Redis 的有序集合(Sorted Set)来实现一个延时队列,这在很多场景下都是非常实用的,比如消息推送、定时任务等。 延时队列是一种特殊的队列,它的特性是元素不是立即被处理...

    Redis 有序集合(sorted set)1

    Redis 有序集合(Sorted Set)是一种特殊的集合数据结构,它结合了集合的无重复成员特性与分数的概念,可以根据成员的分数进行排序。有序集合中的每个成员都有一个与之关联的double类型的分数,这个分数用于决定成员...

    redis的list,set,hash,sorted set,skiplist 1

    4. **有序集合(Sorted Set)** 有序集合与集合类似,但每个元素都有一个分数,用于排序。你可以使用 `ZADD` 添加元素并指定分数,`ZRANGE` 和 `ZREVRANGE` 根据分数范围获取元素,`ZCOUNT` 计算分数在特定范围内的...

    redis帮助文档之sorted-set.md

    redis帮助文档之sorted_set

    Java操作Redis实例,操作封装

    除此之外,Redis还支持哈希(Hash)、有序集合(Sorted Set)和无序集合(Set)等数据结构,相应的操作如`hset`、`zadd`、`sadd`等也应进行封装。在使用这些方法时,确保在操作完成后关闭Jedis对象,避免资源泄露。 ...

    Redis从入门到精通(10):redis的sorted_set数据类型详解

    Redis中的Sorted Set是一种非常重要的数据...了解和熟练掌握Sorted Set的操作,可以帮助开发者更高效地利用Redis解决各种存储和查询需求。通过不断的实践和探索,我们可以发现更多Sorted Set在实际项目中的应用场景。

    WPF操作Redis简单实例

    2. **Redis数据类型操作**:C#中可以操作Redis的多种数据类型,如字符串(String)、哈希(Hash)、列表(List)、集合(Set)和有序集合(Sorted Set)。例如,使用`StringSet`和`StringGet`方法操作字符串,`...

    java redis 各类型操作实例

    5. 有序集合(Sorted Set): 有序集合与集合类似,但每个元素都有一个分数,可用于排序。使用`zadd`、`zrangeByScore`等方法: ```java jedis.zadd("mysortedset", 1.0, "item1", 2.0, "item2", 3.0, "item3");...

    windows下redis操作

    Redis支持的数据类型包括字符串(String)、哈希(Hash)、列表(List)、集合(Set)和有序集合(Sorted Set)。 为了确保数据安全,了解如何备份和恢复是必要的。Redis可以通过`SAVE`或`BGSAVE`命令将内存中的...

    Redis学习资料

    Redis学习手册 Key操作命令 doc Redis学习手册 List数据类型 doc Redis学习手册 Set数据类型 doc Redis学习手册 Sorted Sets数据类型 doc Redis学习手册 String数据类型 doc Redis学习手册 主从复制 doc Redis学习...

    Redis之SortedSet(有序集合)总结

    二、Sorted Set操作命令 2.1 添加成员:`ZADD key score member [score member ...]`,向有序集合添加一个或多个成员及其分数。 2.2 获取分数:`ZSCORE key member`,返回有序集合中指定成员的分数。 2.3 成员...

    [] - 2022-06-27 利用 Redis 的 sorted set 做每周热评的功能.pdf

    互联网资讯,技术简介,IT、AI技术,人工智能互联网资讯,技术简介,IT、AI技术,人工智能互联网资讯,技术简介,IT、AI技术,人工智能互联网资讯,技术简介,IT、AI技术,人工智能互联网资讯,技术简介,IT、AI技术...

    C#操作redis,增删改查

    排行榜或计数器:Redis的Sorted Set可以存储权重和值,非常适用于实现排行榜。同时,Redis的incr/decr等操作可以方便地实现计数功能。 处理任务队列:Redis的List数据结构可以用于实现队列(Queue)

    Redis 利用C#进行操作

    6. **有序集合(Sorted Set)操作** 有序集合中的元素带有分数,按分数排序。 - **添加带分数的元素**:`Database.SortedSetAdd("zsetKey", "member", score)` - **根据分数范围获取元素**:`Database....

    java对redis的基本操作

    ### Java对Redis的基本操作 #### 一、Redis服务器端安装及配置 1. **下载**: - 访问[MSOpenTech/redis](https://github.com/MSOpenTech/redis)页面,下载适用于Windows平台的`redis2.6`版本。 - 解压缩后,根据...

    Redis免安装以及操作图形界面工具

    1. 基本数据类型:Redis支持五种基本数据类型:字符串(String)、哈希(Hash)、列表(List)、集合(Set)和有序集合(Sorted Set)。每种类型都有相应的命令进行操作。 2. 持久化:Redis提供了RDB和AOF两种持久化方式,...

    c#操作Redis的5种基本类型汇总

    最后,Sorted Set类型在Redis中是一个有序集合,每个元素都有一个与之相关的分数,可以保证元素的顺序。Sorted Set适合实现排行榜等需要排序的场景。在C#中,可以使用下面的代码来操作Sorted Set: ```csharp redis...

    redis_helper c++ redis操作文件

    对于集合型操作,如列表(List)、集合(Set)、有序集合(Sorted Set)和哈希表(Hash),`redis_helper` 会提供专门的方法。比如向列表添加元素: ```cpp redis.lpush("list_key", "element1", "element2"); ``` ...

Global site tag (gtag.js) - Google Analytics