博客搬家至 https://lcy362.github.io/posts/63756/
redis中set系列命令(包括set,hset等等),基本上都包括两个版本,纯粹的set和setnx, setnx即set not exist, 也就是只有Key不存在时才会执行set, 而不会覆盖原有的值。
但是hmset这个命令,包括redis本身,jedis都没有提供nx版本的支持。当然,hset这个命令是有对应的hsetnx版本的,hmset意思就是multi hset,一次可以操作多个key, 从而减小网络开销。
所以,为了在使用hmset时也能降低网络的消耗,用lua写了一个脚本,实现hmsetnx的效果,即:向Hash表中set键值对时,只有键不存在时才会写入,不会覆盖原有值。
local key
for i,j in ipairs(ARGV)
do if i%2 == 0
then
redis.call('hsetnx'