Redis 中ZSET数据类型命令使用及对应场景总结

redis,zset,数据类型,命令,使用,对应,场景,总结 · 浏览次数 : 218

小编点评

**zadd 添加元素** zadd key score member **zrem 从有序集合中删除元素** zrem key member **zscore 返回有序集合key中元素member的分值** zscore key member **zincrby 为有序集合key中元素增加分值** zincrby key increment member **zcard 获取有序集合key中元素总个数** zcard key **zrange 正序获取分值范围内的元素** zrange key start stop [withscores] **zrevrange 倒序获取集合元素** zrevrange key start stop [withscores] **zrank 获取有序集合中元素key的排名** zrank key member **zrangebyscore 获取有序集合中分数区间的元素** zrangebyscore key min max [ withscores ] [limit offset count] **zcount 获取分值区间的元素数量** zcount key min max

正文

转载请注明出处:

1.zadd添加元素

zadd key score member 

  示例:

127.0.0.1:6379> zadd user:visit:rank 60 1001
(integer) 1
127.0.0.1:6379>

2.zrem 从有序集合key中删除元素

 zrem key member

  示例:

127.0.0.1:6379> zrem user:visit:rank 1001
(integer) 1
127.0.0.1:6379>

3.zscore 返回有序集合key中元素member的分值

zscore key member

  示例

127.0.0.1:6379> zscore user:visit:rank 1001
(nil)
127.0.0.1:6379> zscore user:visit:rank 1002
"60"
127.0.0.1:6379> 

4.zincrby 为有序集合key中元素增加分值

zincrby key increment member

  为有序集合key中元素member的分值加上increment

  示例

127.0.0.1:6379> zscore user:visit:rank 1002
"60"
127.0.0.1:6379> zincrby user:visit:rank 20  1002
"80"
127.0.0.1:6379> 

  为 1002 用户增加20分,增加20分之后返回新的分数

  应用场景:更新排名的依据,如:阅读量排行榜,每阅读一次,增加一次阅读量

5.zcard获取有序集合key中元素总个数

zcard key

  示例

127.0.0.1:6379> zcard user:visit:rank
(integer) 1
127.0.0.1:6379>

  应用场景:获取排行集合的元素总个数

 6.zrange 正序获取分值范围内的元素

zrange key start stop [withscores]

  正序获取有序集合key从start下标到stop下标的元素;使用withscores 参数时,返回的集合元素带有分数,不适用withscores的参数时,直接返回排名

  注意:参数start和stop都是基于零的索引,即0是第一个元素,1是第二个元素,以此类推。

  它们也可以是负数,表示从有序集合的末尾的偏移量,其中-1是有序集合的最后一个元素,-2是倒数第二个元素,等等。

  示例:

127.0.0.1:6379> zrange user:visit:rank 1 10 withscores
1) "1003"
2) "66"
3) "1002"
4) "80"
5) "1005"
6) "96"
127.0.0.1:6379> zrange user:visit:rank 0 10
1) "1004"
2) "1003"
3) "1002"
4) "1005" 
127.0.0.1:6379>

   应用场景:根据打分的升序排序获取元素集合

 7.zrevrange 倒序获取集合元素

zrevrange key start stop [withscores]

  倒序获取有序集合key从start下标到stop下标的元素

  注意:参数start和stop都是基于零的索引,即0是第一个元素,1是第二个元素,以此类推。

  它们也可以是负数,表示从有序集合的末尾的偏移量,其中-1是有序集合的最后一个元素,-2是倒数第二个元素,等等。

  示例:

127.0.0.1:6379> zrevrange user:visit:rank 1 10 
1) "1002"
2) "1003"
3) "1004"
127.0.0.1:6379> zrevrange user:visit:rank 1 10 withscores
1) "1002"
2) "80"
3) "1003"
4) "66"
5) "1004"
6) "16"
127.0.0.1:6379> 

  应用场景:获取榜单数据(根据打分从高到底)

8.zrank获取有序集合中元素key的排名

zrank key member

  示例:

127.0.0.1:6379> zrank user:visit:rank 1002
(integer) 2
127.0.0.1:6379>

  应用场景:获取自己的排名

9.zrangebyscore 获取有序集合中分数区间的元素

zrangebyscore key min max [ withscores ] [limit offset count]

  根据分数区间获取指定数量的集合,withscores 返回key时同时返回对应的分数;limit 为分页标识;offset 为分页的起始位;count 为分页的数量

  示例:

127.0.0.1:6379> zrangebyscore user:visit:rank 60 90 
1) "1003"
2) "1002"
127.0.0.1:6379> zrangebyscore user:visit:rank 60 90 withscores
1) "1003"
2) "66"
3) "1002"
4) "80"
127.0.0.1:6379> zrangebyscore user:visit:rank 60 90 withscores limit 0 1
1) "1003"
2) "66"
127.0.0.1:6379> zrangebyscore user:visit:rank 60 90 withscores limit 1 1
1) "1002"
2) "80"
127.0.0.1:6379> zrangebyscore user:visit:rank 60 90 withscores limit 1 2
1) "1002"
2) "80"
127.0.0.1:6379> zrangebyscore user:visit:rank 60 90 withscores limit 0 2
1) "1003"
2) "66"
3) "1002"
4) "80"
127.0.0.1:6379> zrangebyscore user:visit:rank 60 90 withscores limit 2 1
(empty list or set)
127.0.0.1:6379>

  应用场景:分页获取排名元素集合

10.zcount 获取分值区间的元素数量

zcount key min max

  示例:

127.0.0.1:6379> zcount user:visit:rank 60 90
(integer) 2
127.0.0.1:6379>

  

 

与Redis 中ZSET数据类型命令使用及对应场景总结相似的内容:

Redis 中ZSET数据类型命令使用及对应场景总结

转载请注明出处: 目录 1.zadd添加元素 2.zrem 从有序集合key中删除元素 3.zscore 返回有序集合key中元素member的分值 4.zincrby 为有序集合key中元素增加分值 5.zcard获取有序集合key中元素总个数 6.zrange 正序获取分值范围内的元素 7.zr

Redis使用ZSET实现消息队列使用总结一

转载请注明出处: 目录 1.zset为什么可以做消息队列 2.zset实现消息队列的步骤 3.使用jedis实现消息队列示例 4.+inf与-inf 5.redis使用list与zset做消息队列有什么区别 1.zset为什么可以做消息队列 zset做消息队列的特性有: 有序性:zset中所有元素都

[转帖]Redis大key多key拆分方案

https://www.cnblogs.com/-wenli/p/13612364.html 一、单个简单的key存储的value很大 二、hash, set,zset,list 中存储过多的元素 三、一个集群存储了上亿的key 四、大Bitmap或布隆过滤器(Bloom )拆分 背景 业务场景中经

Redis 中bitMap使用及实现访问量

1. Bitmap 是什么 Bitmap(也称为位数组或者位向量等)是一种实现对位的操作的'数据结构',在数据结构加引号主要因为: Bitmap 本身不是一种数据结构,底层实际上是字符串,可以借助字符串进行位操作。 Bitmap 单独提供了一套命令,所以与使用字符串的方法不太相同。可以把 Bitma

Redis中 HyperLogLog数据类型使用总结

转载请注明出处: 目录 1. HyperLogLog 的原理 2.使用步骤 3.实现请求ip去重的浏览量使用示例 4.Jedis客户端使用 5.Redission使用依赖 6.HyperLogLog 提供了哪些特性和方法 7.使用场景总结 1. HyperLogLog 的原理 Redis Hyper

[转帖]Redis中Key的过期策略和淘汰机制

Key的过期策略 Redis的Key有3种过期删除策略,具体如下: 1. 定时删除 原理:在设置键的过期时间的同时,创建一个定时器(timer),让定时器在键的过期时间来临时,立即执行对键的删除操作优点:能够很及时的删除过期的Key,能够最大限度的节约内存缺点:对CPU时间不友好,如果过期的Key比

[转帖]redis中的bigkey问题

https://cdn.modb.pro/db/459810 什么是bigkey bigkey就是redis key/value体系中的大value问题。我们知道redis的底层数据存储结构中,有多种数据结构的实现。 String: 简单动态字符串 List: 双向链表、压缩列表 Hash: 哈希表

[转帖]redis中keys与scan命令的区别有哪些

https://www.yisu.com/zixun/445908.html 这篇文章将为大家详细讲解有关redis中keys与scan命令的区别有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 redis keys和scan的区别 redis的keys命令,

[转帖]Redis key 乱码问题(springboot)

保存到redis中的key 前半段会出现乱码问题 原来配置: @Configuration@EnableCachingpublic class RedisCacheConfig { @Bean public CacheManager cacheManager(RedisTemplate

[转帖]为什么我Redis中key惊现“乱码”?

为什么Redis中key会惊现“乱码”? 最近在做一个秒杀项目,过程中大量应用到了redis。 而我在用ElasticJob进行数据化初始化到Redis数据库时发现这些key都出现了一段前缀“乱码”。 数据结构为Hash,可以观察到hashkey也带有前缀“乱码” 这究竟是怎么回事呢?原来问题出在这