Redis 简介
Redis 的特性、应用场景与版本。
Key Points单线程模型 + IO 多路复用让 Redis 既简单又极快;6.0 后引入多线程处理网络 IO。
核心特性
- 基于内存,速度极快
- 丰富的数据结构(不只是字符串)
- 原子操作,无需加锁
- 支持过期、发布订阅、Lua 脚本、事务
- 主从复制、哨兵、集群高可用
单线程的真相
Redis executes commands on a single thread, so each command is atomic with no locking. It serves tens of thousands of connections via IO multiplexing (epoll). Since 6.0 the network read/write is multi-threaded, but command execution stays single-threaded to preserve atomicity.
Because commands run single-threaded, slow ones like
KEYS * or a big HGETALL block the whole server. Never use KEYS in production; use SCAN instead.核心特性
- 基于内存,速度极快
- 丰富的数据结构(不只是字符串)
- 原子操作,无需加锁
- 支持过期、发布订阅、Lua 脚本、事务
- 主从复制、哨兵、集群高可用
单线程的真相
Redis 的命令执行是单线程的——所有命令排队串行执行,所以单个命令是原子的,不用考虑并发竞争。它靠 IO 多路复用(epoll)在一个线程里同时服务上万个连接。Redis 6.0 起把网络读写改成了多线程,但命令执行仍单线程,保证原子性不变。
因为命令单线程执行,
KEYS *、大 Hash 的 HGETALL 这类慢命令会阻塞整个服务。生产环境禁用 KEYS,改用 SCAN 渐进遍历。