别再用 offset 和 limit 分页了,性能太差!
共 1363字,需浏览 3分钟
·
2022-07-31 22:28
redis是个基于内存的缓存数据库,既然是基于内存的,那肯定就会有存满的时候
如果真的存满了,再有新的数据过来肯定就存不进去了
此时redis会执行既定的一些淘汰策略,本文大概讲一下redis六种淘汰策略
1.noeviction(默认策略):对于写请求不再提供服务,直接返回错误(DEL请求和部分特殊请求除外)
2.allkeys-lru:从所有key中使用LRU算法进行淘汰(LRU算法:即最近最少使用算法)
3.volatile-lru:从设置了过期时间的key中使用LRU算法进行淘汰
4.allkeys-random:从所有key中随机淘汰数据
5.volatile-random:从设置了过期时间的key中随机淘汰
6.volatile-ttl:在设置了过期时间的key中,淘汰过期时间剩余最短的
当使用volatile-lru、volatile-random、volatile-ttl这三种策略时,如果没有key可以被淘汰,则和noeviction一样返回错误
1、获取当前内存淘汰策略:
127.0.0.1:6379> config get maxmemory-policy
可以看到当前使用的默认的noeviction策略
2、获取Redis能使用的最大内存大小
127.0.0.1:6379> config get maxmemory
如果不设置最大内存大小或者设置最大内存大小为0,在64位操作系统下不限制内存大小,在32位操作系统下最多使用3GB内存。32 位的机器最大只支持 4GB 的内存,而系统本身就需要一定的内存资源来支持运行,所以 32 位机器限制最大 3 GB 的可用内存
3、设置淘汰策略
通过配置文件设置淘汰策略(修改redis.conf文件):
maxmemory-policy allkeys-lru
通过命令修改淘汰策略:
127.0.0.1:6379> config set maxmemory-policy allkeys-lru
4、设置Redis最大占用内存大小
#设置Redis最大占用内存大小为100M
127.0.0.1:6379> config set maxmemory 100mb
来源:blog.csdn.net/ju_362204801/article/details/114441137
PS:防止找不到本篇文章,可以收藏点赞,方便翻阅查找哦。
胖虎联合一线大厂朋友花费8个月的时间,录制了一份Java入门+进阶视频教程
课程特色:
总共88G,时常高达365小时,覆盖所有主流技术栈
均为同一人录制,不是东拼西凑的
对标线下T0级别的培训课,讲师大厂架构师,多年授课经验,通俗易懂
内容丰富,每一个技术点除了视频,还有课堂源码、笔记、PPT、图解
五大实战项目(视频+源码+笔记+SQL+软件)
一次付费,持续更新,永无二次费用
点击下方超链接查看详情(或者点击文末阅读原文):