使用lua脚本和jedis实现redis的hmsetnx命令,操作hash表时不覆盖原有数据

本文介绍了如何利用Lua脚本和Jedis在Redis中实现hmsetnx命令的功能,确保在操作hash表时不会覆盖原有数据。由于Redis的hmset命令没有nx版本,作者通过编写简单的Lua脚本来达到类似hsetnx的效果,减少网络开销,提高效率。
摘要由CSDN通过智能技术生成

博客搬家至 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'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值