Redis基本命令使用::zset篇

Redis有6大基本类型,分别是字符串(String)、列表(List)、集合(set)、哈希结构(hash)、有序集合(zset)和基数(HyperLogLog)

redis在线体验地址:http://try.redis.io/

有序集合(ZSet)

介绍:

Redis的有序集合和集合一样是一个简单的字符串集合,但该集合是有序的,且集合内的元素都是唯一的,也就是集合内不会出现重复元素,与集合唯一不同的是,有序集合中每一个元素都有一个double类型的score属性,Redis通过score的大小对元素进行排序的。有序集合中元素不能重复,但是元素的score值可以重复。

常用于做排行榜功能。

Redis中的集合是通过哈希表来实现的,所以获取集合中元素的时间复杂度为O(1)。

创建缓存

  1. 创建一个集合缓存,为集合新增元素

    • 命令格式:zadd key score member [score member ...]

    • 🌰

      zadd zk1 1 c 1 cc 1 ccc 2 cccc
      
      ---
      创建有序集合zk1,元素为:
      key: c, score: 1
      key: cc, score: 1
      key: ccc, score: 1
      key: cccc, score: 2
      
  2. 创建一个元素或修改元素的score值(一次只能修改一个元素)

    • 命令格式:zincrby key increment member

    • 🌰

      zincrby zk1 1 cc
      
      ---
      1. 为集合zk1的元素cc的score进行+1操作
      2. 若集合zk1不存在,则创建
      3. 若元素cc不存在,则创建,且cc的score为1
      

查询缓存

  1. 查询缓存中元素个数

    • 命令格式:zcard key

    • 🌰

      zcard zk1
      
      ---
      查询集合zk1内的元素总个数
      
  2. 查询集合指定范围的元素

    • 命令格式:zrange key start stop [withscores]

    • 🌰

      1. 返回元素名称
      zrange zk1 0 1
      ---
      返回集合zk1中从下标0到下标1的元素名称,start和stop都是从0开始
      
      2. 返回元素和元素score
      zrange zk1 0 -1 withscores
      ---
      返回集合zk1中全部元素的名称和分数
      member1
      score1
      member2
      score2
      ★常用于查询排行榜及分数
      
  3. 查询集合中某元素的下标(下标从0开始)

    • 命令格式:zrank key member

    • 🌰

      zrank zk1 c
      
      ---
      返回元素c在集合zk1中的下标
      
  4. 查询集合中某元素的分数

    • 命令格式:zscore key member

    • 🌰

      zscore zk1 c
      
      ---
      查询集合zk1中元素c的分数
      ★常用于点赞数类别查询等
      
  5. 查询集合中指定范围的元素,按照score从大到小排序

    • 命令格式:zrevrange key start stop [withscores]

    • 🌰

      zrevrange zk1 0 3 withscore
      
      ---
      返回集合zk1中从1~4位元素,按照score从大到小
      
  6. 查询集合中某元素的排名

    • 命令格式:zrevrank key member

    • 🌰

      zrevrank zk1 c
      
      ---
      返回元素c在集合zk1中的排名
      ★常用于名次查询
      
  7. 查询指定分数范围内的元素,可分页

    • 命令格式:zrevrangebyscore key maxScore minScore [withscores] [limit offset count]

    • 🌰

      zrevrangebyscore zk1 3 2 withscores limit 0 1
      
      ---
      分页返回集合zk1中分数从2~3的元素
      
  8. 查询指定成员区间内的成员

    • 命令格式:zrangebylex key minChar maxChar [limit offset count]

    • 🌰

      zrangebylex zk1 - (c1 limit 0 12
      
      ---
      返回从第一个元素到元素c1之间的位置
      
      指令是否必须说明
      ZRANGEBYLEX指令
      key有序集合键名称
      minChar字典中排序位置较小的成员,必须以”[“(包含)开头,或者以”(“(不包含)开头,可使用”-“代替,"-"表示取最小值
      maxChar字典中排序位置较大的成员,必须以”[“(包含)开头,或者以”(“(不包含)开头,可使用”+”代替,"+"表示取最大值
      limit返回结果是否分页,指令中包含LIMIT后offset、count必须输入
      offset返回结果起始位置
      count返回结果数量
  9. 查询指定分数区间内的元素数

    • 命令格式:zcount key min max

    • 🌰

      zcount zk1 1 2
      
      ---
      返回score值为1~2的所有元素总数
      ★计算排行榜中某一分数区间的数量
      
  10. 查询指定元素区间内的元素总数

    • 命令格式:zlexcount key min max

    • 🌰

      zlexcount zk1 (c [cccc
      
      ---
      查询c~cccc之间的元素总数,不包括c,但包括cccc
      

移除缓存元素

  1. 移除集合中指定的元素

    • 命令格式:zrem key member [member ...]

    • 🌰

      zrem zk1 cc c1
      
      ---
      移除集合zk1中的元素cc、c1
      
  2. 移除指定元素区间的所有成员

    • 命令格式:zremrangebylex key min max

    • 🌰

      zremrangebylex zk1 [c (ccc
      
      ---
      移除集合zk1中元素c到元素ccc之间的所有成员,包括c,但不包括ccc
      
  3. 移除指定排名区间所有成员

    • 命令格式:zremrangebyrank key start stop

    • 🌰

      zremrangebyrank zk1 0 1
      
      ---
      移除集合zk1中0~1下标的所有元素
      
  4. 移除指定分数区间所有成员

    • 命令格式:zremrangebyscore key min max

    • 🌰

      zremrangebyscore zk1 0 1
      
      ---
      移除集合zk1中score值为0~1的所有元素
      

特殊操作

  1. 计算多个集合的并集,并存入新的集合

    • 命令格式:zunionstore destinationKey numkeys key[key ...]

    • 🌰

      zunionstore zku 2 zk1 zk2
      
      ---
      合并集合zk1和zk2,将并集存入zku,集合zku中元素的score为所有参与计算的集合中相同的元素的score之和
      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值