| 
                        
    
可以看到第一次执行返回1,说明修改成功了;再使用原参数执行时返回0,说明没有做任何修改。我们再查询一下compareAndSet:key这个key。  
 
   
可以看到compareAndSet:key这个key已经被修改为new_value了。我们通过lua脚本实现了一个简单的compareAndSet操作。 
    - 减少网络开销:不使用脚本的情况下,我们实现一个compareAndSet至少需要与Redis交互两次,而现在只需要执行一次操作即可完成; 
 
    - 原子操作:得益于Redis的设计,Redis会将整个脚本作为一个整体执行,中间不会被其他命令插入。因此在编写脚本的过程中无需担心出现竞态条件,无需使用事务,感兴趣的可以百度或等待以后后续文章更新; 
 
    - 复用:可以将一系列操作封装成一个Lua脚本,存储在文件或Redis上,下次使用时直接调用即可。
 
 
读到这里,希望你已经对Redis+Lua有了一定的了解,并能使用脚本完成一些简单的复合操作。后续还会继续更新一些基于Lua脚本+java程序实现的分布式数据结构,如延迟队列、可重入锁等,感兴趣的小伙伴可以持续关注。 
【本文是51CTO专栏机构宜信技术学院的原创文章,微信公众号“宜信技术学院( id: CE_TECH)”】 
戳这里,看该作者更多好文 
                         (编辑:我爱故事小小网_铜陵站长网) 
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! 
                     |