9.Redis-zset

这篇具有很好参考价值的文章主要介绍了9.Redis-zset。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

zset 有序集合 -> 升序

zset 中的 member 仍然要求是唯一的。
排序规则:按照输入的 score 来进行排序,如果score相同,再按照元素自身字符串的字典序来排序,score 不同仍然按照 score 来排序。

常用命令

zadd

添加或者更新指定的元素以及关联的 score 到 zset 中,score 应该符合 double 类型,+inf/-inf 作为正负 极限也是合法的。
ZADD 的相关选项

  • XX:仅仅⽤于更新已经存在的元素,不会添加新元素。
  • NX:仅⽤于添加新元素,不会更新已经存在的元素。
  • CH:默认情况下,ZADD 返回的是本次添加的元素个数,但指定这个选项之后,就会还包含本次更 新的元素的个数。
  • INCR:此时命令类似 ZINCRBY 的效果,将元素的分数加上指定的分数。此时只能指定⼀个元素和 分数。
  • GT -> greaterthan: 如果限制给定的新的分数,比之前更新的分数大,此时才能更新成功,否则更新不成功。不会影响到新元素的添加。
  • LT -> lessthan: 如果限制给定的新的分数,比之前更新的分数小,此时才能更新成功,否则更新不成功。不会影响到新元素的添加。

语法:
ZADD key [NX | XX] [GT | LT] [CH] [INCR] score member [score member ...]

9.Redis-zset,Redis,redis,zset,数据库
incr 选项示例:
9.Redis-zset,Redis,redis,zset,数据库

zcard

作用:获取 zset 中的元素个数。
语法:
ZCARD key

9.Redis-zset,Redis,redis,zset,数据库

zcount

作用:返回分数在 min 和 max 之间的元素个数,默认情况下,min 和 max 都是包含的,可以通过 ( 排除。
语法:ZCOUNT key min max
返回值:满⾜条件的元素列表个数

9.Redis-zset,Redis,redis,zset,数据库
用 ( 号来排除边界值
9.Redis-zset,Redis,redis,zset,数据库

zrange

作用:返回指定区间⾥的元素,分数按照升序。带上 WITHSCORES 可以把分数也返回。
语法:
ZRANGE key start stop [BYSCORE | BYLEX] [REV] [LIMIT offset count] [WITHSCORES]

zrevrange -> reverse 逆序

作用:返回指定区间⾥的元素,分数按照降序。带上 WITHSCORES 可以把分数也返回。
ps:这个命令可能在 6.2.0 之后废弃,并且功能合并到 ZRANGE 中。
语法:
ZREVRANGE key start stop [WITHSCORES]
9.Redis-zset,Redis,redis,zset,数据库

zrangebyscore

作用:用于按照元素的分数范围来获取元素,默认情况下,min 和 max 都是包含的,可以通过 ( 排除。
ps:这个命令可能在 6.2.0 之后废弃,并且功能合并到 ZRANGE 中。
语法:
ZRANGEBYSCORE key min max [WITHSCORES]
9.Redis-zset,Redis,redis,zset,数据库

zpopmax

作用:删除并返回分数最大的 count 个元素。
语法:
ZPOPMAX key [count]
返回值:返回删除的score 和 member 。
9.Redis-zset,Redis,redis,zset,数据库

zpopmin

作用:删除并返回分数最小的 count 个元素。
语法:
ZPOPMIN key [count]
返回值:返回删除的score 和 member 。
9.Redis-zset,Redis,redis,zset,数据库

bzpopmax / bzpopmin

zpopmin / zpopmax 的阻塞版本
语法: BZPOPMIN/BZPOPMAX key [key ...] timeout
与list的blpop/brpop情况差不多。

zrank

作用:根据number返回指定元素的排名,升序,这里的排名指的就是下标。
语法:
ZRANK key member
9.Redis-zset,Redis,redis,zset,数据库

zrevrank

作用:返回指定元素的排名,降序,这里的排名指的就是下标。
语法:
zrevrank key member
9.Redis-zset,Redis,redis,zset,数据库

zscore

作用:查询指定元素的分数
语法:
ZSCORE key member
9.Redis-zset,Redis,redis,zset,数据库

zrem

作用:删除指定的元素。
语法:
ZREM key member [member ...]

9.Redis-zset,Redis,redis,zset,数据库

zremrangebyrank

作用:按照下标删除指定范围的元素,左闭右闭。
语法:
ZREMRANGEBYRANK key start stop
9.Redis-zset,Redis,redis,zset,数据库

zremrangebyscore

作用:按照分数删除指定范围的元素,左闭右闭。
语法:

ZREMRANGEBYSCORE key start stop

9.Redis-zset,Redis,redis,zset,数据库

zincrby

作用:为指定的元素的关联分数添加指定的分数值
语法:

zincrby key increment member

9.Redis-zset,Redis,redis,zset,数据库

集合间操作

在比较 “相同”的时候,只要 member 相同即可。

zinter -> 交集

语法:
ZINTER numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE <SUM | MIN | MAX>] [WITHSCORES]

  • numkeys 代表 numkeys 个 key 来参与并集运算。
  • WEIGHTS 代表权重,可以写成小数和整数。
  • aggregate 总计,代表当合并时member相同时,新的score是到底是以求和或者取最小值或者求大值的方式来算。默认以 求和 的来得到 score。

这里的zhangsan的score(65),是按照 key中zhangsan的score先乘以自己的权重值 2, 加上 key2 对应的权重值3乘以key2 zhangsan的score,即 2 * 10+ 3 * 15 = 65
9.Redis-zset,Redis,redis,zset,数据库

zunion -> 并集

语法:

zunion numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE <SUM | MIN | MAX>] [WITHSCORES]

9.Redis-zset,Redis,redis,zset,数据库

zdiff -> 差集

语法:
zdiff numkeys key [key ...] [WITHSCORES]
9.Redis-zset,Redis,redis,zset,数据库

zinterstore

语法:
zinterstore destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE <SUM | MIN | MAX>]

zunionstore

语法:
ZUNIONSTORE destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE <SUM | MIN | MAX>]

zdiffstore

语法:
zdiffstore destination numkeys key [key ...]

内部编码

有序集合类型的内部编码有两种:

  • ziplist(压缩列表):当有序集合的元素个数⼩于 zset-max-ziplist-entries 配置(默认 128 个),同时每个元素的值都⼩于 zset-max-ziplist-value 配置(默认 64 字节)时,Redis 会⽤ ziplist 来作 为有序集合的内部实现,ziplist 可以有效减少内存的使⽤。
  • skiplist(跳表):当 ziplist 条件不满⾜时,有序集合会使⽤ skiplist 作为内部实现,因为此时ziplist 的操作效率会下降

在后面的版本中,在元素较少且元素的值较小时,ziplist编码被listpack编码替代。

在元素较少且元素的值较小时是listpack编码
9.Redis-zset,Redis,redis,zset,数据库
当元素过大时,转换为skiplist

9.Redis-zset,Redis,redis,zset,数据库文章来源地址https://www.toymoban.com/news/detail-686935.html

应用场景

排行榜系统(微博热搜、游戏天梯排行)

到了这里,关于9.Redis-zset的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 1 - 搭建Redis数据库服务器|LNP+Redis

    数据库服务软件分为2类: 关系型数据库服务软件 简称 RDBMS 按照预先设置的组织结构 将数据存储在物理介质上 数据之间可以做关联操作 非关系型数据库服务软件 简称 NoSQL 不仅仅是SQL 不需要预先定义数据存储结构 每条记录可以有不同的数据类型和字段个数 只需要 key valu

    2024年01月25日
    浏览(58)
  • 126、高频Redis面试题:如何保证Redis和数据库数据一致性

    问题:如果数据库中的某条数据放入缓存后,又马上被更新了,那我们应该如何更新缓存 缺点: 如果先更新缓存成功,在更新数据库的时候失败,这时候会导致数据不一致;缓存的作用是不是临时将我们数据保存在内存,便于提高查询速度;但是如果某条数据在数据库中都

    2024年02月13日
    浏览(43)
  • Redis 数据库高可用

    (1)在web服务器中,高可用是指服务器可以正常访问的时间,衡量的标准是在多长时间内可以提供正常服务(99.9%、99.99%、99.999%等等)。 (2)在Redis中,保证提供正常服务(如主从分离、快速容灾技术),还需要考虑数据容量的扩展、数据安全不会丢失等。 实现高可用的技

    2024年02月15日
    浏览(37)
  • Redis缓存数据库(四)

    目录 一、概述 1、Redis Sentinel 1.1、docker配置Redis Sentinel环境 2、Redis存储方案 2.1、哈希链 2.2、哈希环 3、Redis分区(Partitioning)  4、Redis面试题 Redis Sentinel为Redis提供了 高可用解决方案 。实际上这意味着使用Sentinel可以部署一套Redis, 在没有人为干预的情况下去应付各种各样的失

    2024年02月05日
    浏览(55)
  • Redis 数据库 NoSQL

    目录 一、NoSQL 二、为什么会出现NoSQL技术 三、NoSQL的类别 键值(Key-Value)存储数据库 列存储数据库 文档型数据库 图形(Graph)数据库 四、NoSQL适应场景 五、在分布式数据库中CAP原理 1、CAP 2、BASE NoSQL(Not Only SQL)即不仅仅是SQL,泛指非关系型的数据库,它可以作为关系型数

    2024年02月12日
    浏览(45)
  • 【后端面经-数据库】Redis详解——Redis基本概念和特点

    目录 1. Redis基本概念 2. Redis特点 2.1 优点 2.2 缺点 3. Redis的应用场景 面试模拟 参考资料 声明:Redis的相关知识是面试的一大热门知识点,同时也是一个庞大的体系,所涉及的知识点非常多,如果用一篇文章罗列,往往会陷入知识海洋中无法感知其全貌,因此,这段时间我会试

    2024年02月13日
    浏览(52)
  • redis数据库和MongoDB数据库基本操作

    (1) 设置键值 (2) 读取键值 (3) 数值类型自增1 (4) 数值类型自减1 (5) 查看值的长度 (1)对列表city插入元素:Shanghai Suzhou Hangzhou (2)将列表city里的头部的元素移除 (3) 对一个已存在的列表插入新元素 (4)查看list的值长度 (1) 设置一个hash表,order表里包括的

    2024年02月16日
    浏览(63)
  • redis的缓存更新策略以及如何保证redis与数据库的数据一致性

    redis的缓存更新策略有这么几种: 1、由应用直接和redis以及数据库相连接:         查询数据时,应用去redis中查询,查不到的话再由应用去数据库中查询,并将查询结果放在redis;         更新数据时,由应用去触发redis数据的删除以及数据库的update。 2、应用只跟redi

    2024年02月13日
    浏览(57)
  • Redis多机数据库实现

    为《Redis设计与实现》笔记 客户端可以使用 SLAVEOF 命令将指定服务器设置为该服务器的主服务器 127.0.0.1:6379 将被设置为 127.0.0.1:123456 的主服务器 旧版复制功能的实现 Redis的复制功能分为同步(sync)和命令传播(command propagate)两个阶段 同步:将从服务器的数据库状态更新至

    2024年02月09日
    浏览(47)
  • 数据库应用:Redis安装部署

    目录 一、理论 1.缓存 2.关系型数据库与非关系型数据库 3.Redis 4.Redis安装部署 5.Redis命令工具 6.Redis数据库常用命令 7.Redis多数据库操作 二、实验 1.Redis安装部署  2.Redis命令工具 3.Redis数据库命令 4.Redis多数据库操作 三、问题 1.RESP连接CentOS 7 Redis数据库 四、总结 (1)概念 缓存

    2024年02月15日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包