Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Redis在几个HSET中增加几个字段_Redis_Jedis - Fatal编程技术网

Redis在几个HSET中增加几个字段

Redis在几个HSET中增加几个字段,redis,jedis,Redis,Jedis,我在redis中有几个用户的数据,例如 hset-user111;字段-dayssincelogin 我想定期为所有用户更新dayssincelogin,一种方法是 KEYS user* HINCRBY ${key from above} dayssincelogin 1 可以在一个电话中完成吗?如果不是的话,最好的方法是什么我使用的是redis cluster和java client。您不能在一个命令中执行多个增量,但可以将命令集中在一起以提高性能 使用Redis管道内衬或脚本 在绝地武士中

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

hset-user111;字段-dayssincelogin

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

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

可以在一个电话中完成吗?如果不是的话,最好的方法是什么我使用的是redis cluster和java client。

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

使用Redis管道内衬或脚本

在绝地武士中,我不认为卢阿是受支持的(如果有人能回答:)

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

有更多的信息请访问

这是我的答案

管道p=jedis.pipelined(); p、 多重(); 响应r1=p.hincrBy(“a”、“f1”和-1); 响应r2=p.hincrBy(“a”、“f1”和-2); 响应r3=p.exec(); 列表结果=p.syncAndReturnAll();
编辑:Redis仅当多键操作出现在同一个碎片中时才允许多键操作。您应该以确保数据相关性的方式安排密钥。像
key1.{foo}
key5678.{foo}
将驻留在同一个服务器上

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

使用Redis管道内衬或脚本

在绝地武士中,我不认为卢阿是受支持的(如果有人能回答:)

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

有更多的信息请访问

这是我的答案

管道p=jedis.pipelined(); p、 多重(); 响应r1=p.hincrBy(“a”、“f1”和-1); 响应r2=p.hincrBy(“a”、“f1”和-2); 响应r3=p.exec(); 列表结果=p.syncAndReturnAll();
编辑:Redis仅当多键操作出现在同一个碎片中时才允许多键操作。您应该以确保数据相关性的方式安排密钥。像
key1.{foo}
key5678.{foo}
将驻留在同一台服务器上

Lua脚本可以使用jedis中的
exec()
方法执行。太棒了!谢谢编辑答案请注意,OP使用的是群集-如果是分片设置(v3),则所有键都需要位于同一插槽中,多it Lua才能工作。那么管道是最好的方法?恐怕管道也需要考虑同样的问题。Lua脚本可以使用jedis中的
exec()
方法执行。太棒了!谢谢编辑答案请注意,OP使用的是群集-如果是分片设置(v3),则所有键都必须位于同一插槽中,多it Lua才能工作。那么管道是最好的方式?恐怕管道也需要考虑同样的问题。你说的>我使用的是redis是什么意思cluster@ItamarHaber正如你在下面提到的。。Redis 3带分片的群集你说的>是什么意思我在使用Rediscluster@ItamarHaber正如你在下面提到的。。具有分片的Redis 3群集
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();