Redis中SortedSet的ZINCRBY和接口ZSetOperations<K, V>中的incrementScore之间的微妙不同

本文详细介绍了Redis中的SortedSet数据结构,包括其基本概念、分数排序规则、ZADD和ZRANGE操作以及ZINCRBY命令的应用,还提到了incrementScore方法用于增加有序集合成员的分数。
摘要由CSDN通过智能技术生成

一、SortedSet

  1. 在 Redis 中,Sorted Set(有序集合)是一种特殊的数据结构,它是集合(Set)的一个扩展,每个元素都与一个分数(score)相关联。这个分数用于对集合中的元素进行排序(有序集合(Sorted Set)的排名是从 0 开始的)。Sorted Set 是通过跳跃表(Skip List)实现的,这使得插入、删除和查找操作都能在对数时间内完成。
  2. 其结构可以理解为 key score value,score可以重复,value不可以重复。
  • 当value重复的时候会自动覆盖旧的数据
127.0.0.1:6379> zadd whw 1 redis
(integer) 1
127.0.0.1:6379> zadd whw 2 redis
(integer) 0
127.0.0.1:6379> zrange whw 0 5 withscores
1) "redis"
2) "2"
  • 当再插入score为1的情况,进行自动排序
127.0.0.1:6379> zadd whw 1 mysql
(integer) 1
127.0.0.1:6379> zrange whw 0 5 withscores
1) "mysql"
2) "1"
3) "redis"
4) "2"
  • 当score重复的时候,在同score情况下,会默认按照字母的顺序进行排序
127.0.0.1:6379> zadd whw 2 abc
(integer) 1
127.0.0.1:6379> zrange whw 0 5 withscores
1) "mysql"
2) "1"
3) "abc"
4) "2"
5) "redis"
6) "2"
127.0.0.1:6379> zadd whw 2 bbb
(integer) 1
127.0.0.1:6379> zrange whw 0 5 withscores
1) "mysql"
2) "1"
3) "abc"
4) "2"
5) "bbb"
6) "2"
7) "redis"
8) "2"
  1. ZINCRBY
  • ZINCRBY命令对有序集合中指定成员的分数加上增量 increment,例如这里在“mysql”score的基础上又增加了2
127.0.0.1:6379> zincrby whw 2 mysql
"3"
127.0.0.1:6379> zrange whw 0 -1 withscores
1) "abc"
2) "2"
3) "bbb"
4) "2"
5) "redis"
6) "2"
7) "mysql"
8) "3"

二、incrementScore(K key, V value, double delta)

    public Double incrementScore(K key, V value, double delta) {
        byte[] rawKey = this.rawKey(key);
        byte[] rawValue = this.rawValue(value);
        return (Double)this.execute((connection) -> {
            return connection.zIncrBy(rawKey, delta, rawValue);
        });
    }

表示对 Redis 中有序集合(ZSET)的指定成员的分数进行增加。方法返回一个 Double 类型,表示增加分数后的新分数。
强调一点,这里的结构是 key value score,和SortedSet的ZINCRBY的结构略有差异。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值