1.为什么Redis采用单线程模型会达到每秒万级别的处理能力?
1. 纯内存访问,内存响应时间为100纳秒。(1毫秒=1000微妙、1微妙=1000纳秒)2. 非阻塞I/O,Redis使用epoll作为I/O多路复用技术的实现,不在网络I/O上浪费过多的时间。3. 单线程避免了线程切换和竞态产生的消耗。另外,单线程对于每个命令执行时间是有要求的,如果某个命令执行时间过长,会造成其他命令的阻塞,这对于Redis这种高性能服务是致命的,所以Redis是面向快速执行场景的数据库。
2.Redis的缓存命中率是什么?如何提高Redis的缓存命中率?
1. 缓存命中率 是什么?keyspace_hits:成功从缓存中查询到key则为命中;keyspace_misses:不能从缓存中查询到key则为未命中;命中率即为keyspace_hits/(keyspace_hits+keyspace_misses)的值。2.如何提高Redis的缓存命中率?- 将高频读取且时效性不高的的数据缓存到Redis,读取次数越多,命中率越高;- 设置合适的key过期策略,在相同Key和相同请求的情况下,缓存时间越长,命中率越高;- 设置合适的缓存更新策略,更新数据缓存值比数据清理后再插入新的值命中率更高;- 设置合适的缓存粒度大小,粒度越小,命中率会越高,同时也能降低bigkey的风险,但也会增加系统复杂度;