在linux上可以有500K的RPS(requests per second)
一般来说CPU不是瓶颈,内存和网络才是
1、sentinel和cluster区别和各自适用场景?
高可用 TODO husd
2、redis单线程为什么快?
1、Redis是纯内存操作,需要的时候需要我们手动持久化到硬盘中
2、Redis是单线程,从而避开了多线程中上下文频繁切换的操作。
3、Redis数据结构简单、对数据的操作也比较简单
4、使用底层模型不同,它们之间底层实现方式以及与客户端之间通信的应用协议不一样,Redis直接自己构建了VM 机制 ,因为一般的系统调用系统函数的话,会浪费一定的时间去移动和请求
5、使用多路I/O复用模型,非阻塞I/O
4、热key产生原因和后果以及怎么解决? 怎么发现的?
把key分开,就是为了降低单机压力,如果有热key,单机压力过大,影响性能,甚至服务可不用之后缓存被击穿,mysql被压死
怎么发现?
1、凭经验判断 例如商品秒杀 做活动 热门IP等。
2、在客户端进行收集,缺点是入侵了代码。
3、代理层做收集
4、使用redis自己的工具 monitor命令 4.0.3之后,提供了-hotkeys选项
5、自己抓TCP包,自己评估
怎么解决?
1、二级缓存,缓存本地化,直接放JVM里,缺点是内存有限,有过期问题
2、把热key进行多个redis备份,进来之后随机选redis集群进行访问
5、一个Redis实例最多能存放多少的keys,List、Set、Sorted Set他们最多能存放多少元素?
理论上Redis可以处理多达2的32次方的keys,并且在实际中进行了测试,每个实例至少存放了2亿5千万的keys。我们正在测试一些较大的值。
任何list、set、和sorted set都可以放2的32次方个元素。
换句话说,Redis的存储极限是系统中的可用内存值。