项目中基于Redis实现的ID生成器改成用lua脚本实现,可以防止并发id冲突问题。
Redis中使用Lua的好处
- 减少网络开销。可以将多个请求通过脚本的形式一次发送,减少网络时延
- 原子操作。redis会将整个脚本作为一个整体执行,中间不会被其他命令插入。因此在编写脚本的过程中无需担心会出现竞态条件,无需使用事务。
- 复用。客户端发送的脚步会永久存在redis中,这样,其他客户端可以复用这一脚本而不需要使用代码完成相同的逻辑。
具体见:
https://www.jianshu.com/p/366d1b4f0d13