上次讲了从 BIO 到 NIO 最终到 Epoll 的历史过程。
Redis 是单线程模型的。所有客户端的事件都通过 epoll 多路复用,连接到 Redis 的一个线程。注意,它是“用了一个线程,但不只一个线程”。单线程,使其没有并发问题,使其效率更高(没有进程间切换、资源浪费的问题)。一个机器还可以开启多个 Redis 服务,使其业务分离,以充分利用现代计算机的多核技术。
这和 nginx 有点像。Nginx 也可以根据多核创建出多个进程,每个 nginx-worker 对应一个 CPU 核,Nginx 通过 epoll 将业务平均分配到不同的 nginx-worker 中。Nginx 还有一个特性,为了避免一个客户端的多个连续请求分配到多个 worker 中造成数据不一致,它会将一个物理机上的所有请求都访问同一个 worker。
help 用法
127.0.0.1:6379> help
redis-cli 2.8.19
Type: "help @<group>" to get a list of commands in <group>
"help <command>" for help on <command>
"help <tab>" to get a list of possible help topics
"quit" to exit
如输入 help @string
可以查看所有 string 组的方法。
-
type key
可以输出其类型 -
object encoding key
可以识别编码类型。这导致存入 9 用了 1 个字节,存 333 用了 3 个字节,存 99999
五大类型

网友评论