Redis线程安全问题
- 我们之前说Redis是一个高并发高性能的内存数据库
- 那么Redis是否存在线程安全问题呢?
- 答案是不存在!
- 因为
Redis6.0之前
都是单线程
的!但是利用的IO多路复用技术 + 底层是C语言
实现的, 所以数据还是很快- 这样就避免了线程安全问题, 保证了操作的原子性,对于80%的公司来说,单线程的Redis已经足够使用了
- (注意我们说的单线程是对外服务,操作数据的线程只有一个, 后台进程做备份什么的不算在内的…)
- 注意:
Redis6.0之后支持多线程了
- 但是默认不开启,
如果开启了,也会有底层的阻塞队列保证同一时刻只有一条命令被执行
- 所以我们不需要去考虑控制 key、lua、事务,LPUSH/LPOP 等等的并发及线程安全问题。
- 但是默认不开启,