Redis set key, value only if val matches a previous one for concurrency
Redis set key, val only if val matches a previous one for concurrency
如何才能做到这一点?使用 Jedis 和 Java.
我现在正在使用 hset,但这并不重要。
是否必须发送 lua 代码才能实现此目的? Jedis 是怎么做到的?
这是使用 LUA.
的 HSET 命令的 Check-n-set
Jedis jedis;
String key, field, oldValueToCheck, newValueToSet;
jedis.eval("if redis.call('HGET', KEYS[1], ARGV[1]) == ARGV[3]"
+ " then return redis.call('HSET', KEYS[1], ARGV[1], ARGV[2])"
+ " else return 'NA' end", 1, key, field, newValueToSet, oldValueToCheck);
如何才能做到这一点?使用 Jedis 和 Java.
我现在正在使用 hset,但这并不重要。
是否必须发送 lua 代码才能实现此目的? Jedis 是怎么做到的?
这是使用 LUA.
的 HSET 命令的 Check-n-setJedis jedis;
String key, field, oldValueToCheck, newValueToSet;
jedis.eval("if redis.call('HGET', KEYS[1], ARGV[1]) == ARGV[3]"
+ " then return redis.call('HSET', KEYS[1], ARGV[1], ARGV[2])"
+ " else return 'NA' end", 1, key, field, newValueToSet, oldValueToCheck);