随笔分类
对 Redis IO基本模型的些许思考:
Redis网络框架采用了 epoll作为其多路复用的实现,这虽然是能够实现基于事件驱动并且提高了系统的吞吐量
但 Redis作为单线程的内存数据库,可能存在哪些性能上的瓶颈?
# *瓶颈主要体现在两个方面:
- *任何请求如果在 Server中一旦发生耗时,便会影响到 Server性能,即后面的请求都必须要等到前面的请求完毕后自己才能够被处理,耗时的操作有:
- 对 big key的操作:添加 big key分配内存耗时,删除 big key一样如此;
- 设计对大量数据的操作,如范围查询、批量操作等
...
- 并发访问量特别大时,Redis本质上网络 IO和处理数据这块还是由一个线程来处理的,虽然采用了多路复用机制,但对于客户端数据的读写依旧是同步的,只能由单线程依次去处理客户端数据,无法利用到 cpu多核