gpt4 book ai didi

Redis 在几个 hsets 中递增几个字段

转载 作者:IT王子 更新时间:2023-10-29 06:08:34 29 4
gpt4 key购买 nike

我在redis中有几个用户的数据,例如

hset - user111;字段 - dayssincelogin .....

我想为所有用户定期更新 dayssincelogin,一种方法是

KEYS user*
HINCRBY ${key from above} dayssincelogin 1

是否可以在一次调用中完成此操作?如果不是最好的方法是什么? 我正在使用 redis 集群和 java 客户端。

最佳答案

您不能在一个命令中执行多个增量,但您可以将多个命令组合在一起以提高性能。

使用 Redis 流水线或脚本。

在 Jedis 中,我不支持 LUA(如果有人能回答这个问题 :))

正如@mp911de 所建议的那样;使用 Exec用于 LUA 脚本您还可以使用流水线来更快地执行批量方法。

有一个Pipelining readup here了解更多信息

这里是 sample code to use Jedis Pipelining .

Pipeline p = jedis.pipelined();
p.multi();
Response<Long> r1 = p.hincrBy("a", "f1", -1);
Response<Long> r2 = p.hincrBy("a", "f1", -2);
Response<List<Object>> r3 = p.exec();
List<Object> result = p.syncAndReturnAll();

编辑:Redis 仅当它们存在于同一分片中时才允许多键操作。您应该以确保数据亲和性的方式安排您的 key 。像 key1.{foo}key5678.{foo} 将驻留在同一台服务器上

关于Redis 在几个 hsets 中递增几个字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32557332/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com