Redis为什么这么快?
Redis是基于hashmap(Key,Value)的内存数据库中间件,考虑服务器冗余和安全性,持久化在磁盘(IO,rdb,aof,单机),在另外的服务器上完成主从复制。
Redis属于存储中的缓存-》包含热数据,有时间窗口,采用淘汰策略,LRU/LFU等, 一共8种淘汰策略。
Redis并不是全量数据。
缓存和持久化的关系:
- 哪些数据放缓存
- 双写
Redis通过Key,Value进行管理,输入key,输出Value。
其中Value有多种类型。类型是有方法的,是有函数的。因“计算向数据移动”,相较于memcached更快。因Redis有类型。
而memcached(key,value;基于内存的),比如客户端存了[a,b,c,d,e]数组,对于memcached,查询时需要移动大量数据,网络IO上成为瓶颈。而Redis因为有类型,可以根据查询仅返回一个值,比如c。因此计算向数据移动,速度更快。
Redis是worker单线程的,IO Thread是多线程的。IO模型为epoll,采用多路复用器实现。
多路复用: 当CPU核数和线程数较多,Redis会快很多。
多线程如何保序?连接之间是无序的,连接内部是有序的。
一个线程对应多个连接:IO thread+dispatcher+executor