1.为什么Redis采用单线程模型会达到每秒万级别的处理能力?

  1. 1. 纯内存访问,内存响应时间为100纳秒。(1毫秒=1000微妙、1微妙=1000纳秒)
  2. 2. 非阻塞I/ORedis使用epoll作为I/O多路复用技术的实现,不在网络I/O上浪费过多的时间。
  3. 3. 单线程避免了线程切换和竞态产生的消耗。
  4. 另外,单线程对于每个命令执行时间是有要求的,如果某个命令执行时间过长,会造成其他命令的阻塞,这对于Redis这种高性能服务是致命的,
  5. 所以Redis是面向快速执行场景的数据库。

2.Redis的缓存命中率是什么?如何提高Redis的缓存命中率?

  1. 1. 缓存命中率 是什么?
  2. keyspace_hits:成功从缓存中查询到key则为命中;
  3. keyspace_misses:不能从缓存中查询到key则为未命中;
  4. 命中率即为keyspace_hits/(keyspace_hits+keyspace_misses)的值。
  5. 2.如何提高Redis的缓存命中率?
  6. - 将高频读取且时效性不高的的数据缓存到Redis,读取次数越多,命中率越高;
  7. - 设置合适的key过期策略,在相同Key和相同请求的情况下,缓存时间越长,命中率越高;
  8. - 设置合适的缓存更新策略,更新数据缓存值比数据清理后再插入新的值命中率更高;
  9. - 设置合适的缓存粒度大小,粒度越小,命中率会越高,同时也能降低bigkey的风险,但也会增加系统复杂度;