本文介绍: 并发操作、原子命令 incr、setex、lua 脚本
我们在使用 Redis 时,不可避免地会遇到并发访问的问题,比如说如果多个用户同时下单就会对缓存在 Redis 中的商品库存并发更新。一旦有了并发写操作,数据就会被修改,如果我们没有对并发写请求做好控制,就可能导致数据被改错,影响到业务的正常使用(例如库存数据错误,导致下单异常)
常见的方式有三种
使用单命令原子操作
incr、decr
自增、自减命令 ,把 get、+1 ,set 3 个操作,封装为一个
业务场景:计数器、计时器
setex
设置过期时间 ,把 set expire 命令封装微一个
业务场景:用户缓存、分布式锁
使用 lua 脚本封装复杂命令微原子操作
对于比较复杂的业务逻辑,简单的命令不可以满足,我们可以使用 lua 脚本,把多个命令封装进去执行,redis 会把 lua 脚本作为一个整体执行,执行过程不会被打断
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。