一、Redis内部阻塞式操作
1、集合全量查询和聚合操作
客户端根据业务实际情况尽避免类似操作。
2、BigKey和BigKey删除操作
应尽量避免一个Key过大,或使用压缩存储的方式;
删除操作非关键路径(不依赖返回)时可以采用异步方式进行,Redis 4.0开始支持
Redis 4.0之前的版本,建议用SCAN命令扫描key,然后做单个删除
UNLINK key1, key2, key3
3、清空数据库
可以采用后台子线程异步方式处理,FLUSHDB和FLUSHALL命令后增另ASYNC选项,Redis 4.0开始支持
FLUSHDB ASYNC
FLUSHALL ASYNC
4、AOF日志同步写
AOF配置成:everysec选项(极端情况有丢失数据的风险,对于数据存储要求没那么高的可以以配置),确认下业务方对数据可考性要求,可以考虑使用固态硬盘提高磁盘的性能。
5、加载RDB文件
从库需要对客户端提供数据存储服务,就必须把RDB文件加载完成,优化建议是Redis实例不要过大,这样可以减小RDB文件大小,加快加载速度。
二、CPU多核和NUMA架构的影响