Redis 有多快?
Redis 每秒读达到了 106 级别,写也达到了 8*105 级别。
Redis 快的原因?
Redis 是基于内存的,以键值对的形式,通过单线程模型和多路复用,并且还使用 pipeline 的管道机制。
什么是多路复用?
Redis 的底层通信也是基于 TCP/IP 协议的。所以每当客户端向服务端发起读/写请求,都必须建立连接。而当连接建立完后,Redis 并不是开启一个线程去处理客户端的请求,而是将其挂载文件符表上,然后使用 epoll 机制,每当有数据传到客户端时,都会通知主线程来进行处理,从而避免了线程创建、切换的开销,并且更简便的实现同步机制。
什么是 PIPE 管道?
众所周知,Redis 是 C/S 架构,即客户端/服务器模型。
Redis 的执行命令过程为:发送命令 -> 命令在网络传输 -> 命令在服务器排队 -> 命令执行 -> 返回结果。
我们知道,CPU 的速度比网络的速度快得多,所以影响 Redis 性能的最大因素是网络。于是 Redis 为了减少网络传输的次数,会采用 pipeline 的批量处理机制,将多个无关命令打包一起,再发送出去,而不是一条条发送。
如何做内存上的优化?
- 控制 key 的数量
- 缩减简直对象,降低 redis 内存使用最直接的方式就是缩减键和值的长度
- 编码优化,使用更好的数据类型