持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第17天,点击查看活动详情
redis
-
大家都知道内存是很珍贵的东西,redis快就是基于内存的特点才导致单线程的服务居然能跑得过mysql . 但是内存不像硬盘那样能够随意扩展。那么满了怎么办
-
redis中也定义了当内存满了之后该如何去淘汰其他内容。
1. 听天有名
- 听名字你应该也知道了就是使用了随机算法,删除谁完全靠运气,这种方式优点是不需要操心谁该删谁不乖删,开发者也不需要特意的对key进行单独的设置了。缺点就是他的优点太随意了,会导致穿透,雪崩等场景。
关门打烊
- 既然服务满了,俺么我就开始打烊了,再来的内容我也不接收了,从哪来回哪去。
喜新厌旧淘汰
- 花花公子redis 就喜欢新来的,每次满了就将最久没见到的key给抛弃了。这样腾出的空间就可以存放新的key了。什么?不够?不够的话就继续删直到够为止。
和平分手
- 还有的key本身是有时间端的,人家进来之前就跟你有个租约,到了时间人家就心有所属了,不满的时候你还可以了留着他,内存满了就没必要强留了,删了最好
其他
- 关于其他的策略我也不细说了,上述是常见的集中策略。
设置多大的缓存容量合适?
那么对于redis的内存空间来说到底设置多少合适呢?你说不知道?不可能那么我设置1M可以不?凡是涨点心的都是知道的肯定不行。 具体结合应用数据实际访问特点和成本开销来综合考虑。一般建议把缓存容量设置为总数据量的 15% 到 30%,兼顾访问性能和内存空间开销。
对于 Redis 来说,一旦确定了缓存最大容量,比如 4GB,就可以执行下面命令:
config set maxmemort 4g
总结
- 内存一定要量力而行,不能一味的求大,手机内存不断提高,奈何架不住软件开发商疯狂吃内存。