Spring data redis zadd 命令缺少 nx|xx|incr 选项

问题描述 投票:0回答:2

Lettuce 在 2015 年支持 zadd 的 NX|XX|CH|INCR 选项链接

但是我在Lettuce的包装器Spring data Redis(版本:2.1.5)中找不到任何支持这一点的东西。

DefaultZSetOperations 提供的仅有的两个 zadd 方法似乎不能让我使用 NX|XX|CH|INCR 选项:

Boolean add(K key, V value, double score);
Long add(K key, Set<TypedTuple<V>> tuples);

那么如何在 Spring data redis 上使用 Lettue 的 NX|XX|CH|INCR 选项呢?

抱歉我的英语不好,谢谢。

redis spring-data spring-data-redis lettuce
2个回答
1
投票

不完全确定这对生菜是否100%有效。对于Jedis,发现我们必须使用

redisTemplate.execute(RedisCallback)
。使用
ch
参数来指示是否有任何记录发生更改的小示例(而不是仅添加到排序集中)

redisTemplate.execute(
  (RedisCallback<Long>) connection -> connection.zSetCommands().zAdd(
                        leaderboardKey.getBytes(StandardCharsets.UTF_8),
                        membersToTuples(members),
                        RedisZSetCommands.ZAddArgs.empty().ch()
                )
        )

0
投票

我使用脚本

    String script = "return redis.call('zadd',KEYS[1],'NX',ARGV[1],ARGV[2])";
    DefaultRedisScript<Long> redisScript = new DefaultRedisScript<>(script,Long.class);
    redisTemplate.execute(redisScript, Collections.singletonList(key),String.valueOf(score),value);
© www.soinside.com 2019 - 2024. All rights reserved.