1

Redis能够将字符串附加到 a 的值key。我需要附加到 a 的值而不是普通键Hashfield。我目前正在以明显的方式解决它:

redis.HGET('hash', 'field2append', function(err, reply){
    redis.HSET('hash', 'field2append', reply + appendString);
});

由于设置涉及多个物理(node.js)服务器中的集群,由于节点接收值和再次设置之间所花费的时间,上述可能导致数据丢失(以防另一台服务器同时更新同一字段) .

有没有更安全的方法将append字符串连接到valuea hashfield

4

3 回答 3

2

是的。您可以通过事务(如在管道中)或通过在服务器端运行所有逻辑的Lua 脚本来执行此操作。因为 Redis 是单线程的,所以当你运行一个事务或一个 lua 脚本时,它会阻止其他一切运行,直到它完成。这样,您就可以保证不会因为您提到的原因而丢失数据。

于 2013-09-16T23:15:37.120 回答
0

在不冒竞争条件的情况下有可能吗?

Redis 是单线程的。

我需要(原子地)附加到哈希字段(字符串)。

哈希字段的键?你试过什么?

于 2013-09-13T02:02:38.460 回答
0

Redis 是一个单线程进程。不存在竞争条件问题。

于 2013-09-13T04:11:58.253 回答