做网站实验报告,网站建设销售找客户话术,东莞宣布优化防疫措施,赣州今天招工信息赣州人才网0、参考
【Redis线程模型】 【big key 排查和解决思路】
1、 Redis 单线程的理解
为什么单线程#xff1a;CPU不是性能瓶颈#xff08;内存和网络#xff09;#xff0c;单线程能够达到业务要求
网络IO和键值对读写都是由一个线程完成的 2、 Redis 多线程的理解
持久化…0、参考
【Redis线程模型】 【big key 排查和解决思路】
1、 Redis 单线程的理解
为什么单线程CPU不是性能瓶颈内存和网络单线程能够达到业务要求
网络IO和键值对读写都是由一个线程完成的 2、 Redis 多线程的理解
持久化aof、rdb、异步删除big key、数据复制主从、哨兵、集群采用多线程 3、 单线程IO的挑战big key问题
详细【big key 排查和解决思路】
正常情况下使用 del 指令可以很快的删除数据而当被删除的 key 是一个非常大的对象时例如时包含了成千上万个元素的 hash 集合时那么 del 指令就会造成 Redis 主线程卡顿
Big Key问题本质是Big Value问题 3.0 模拟插入100w数据
for((i1;i100*10000;i)); do echo set k$i v$1 /tmp/redisText.txt ;done;
cat /tmp/redisTest.txt | reids-cli -h 127.0.0.1 -p 6379 -a 111111 --pipe3.1 big key 排查
每种数据类型最大的 key会扫描整个数据库建议在从节点执行 redis-cli --bigkeys查看某个key的详细信息
debug object key返回key的value实际使用内存估算值
memory usage keyredis-rdb-tools 工具
3.2 big key 删除
unlink key
flushall async
flushdb async3.3 big key 优化 分割 big key 对象压缩 直接删除
4、 Redis 为什么快
IO多路复用epoll实现一个线程处理所有socket连接避免上下文切换、多线程竞争
非阻塞IO避免了IO 阻塞
基于内存操作内存操作数据快
强大的数据结构数据结构优化时间复杂度低
5、 主线程和IO线程的协同