Redis--内存
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Redis--内存,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1406字,纯文字阅读大概需要3分钟。
内容图文
![Redis--内存](/upload/InfoBanner/zyjiaocheng/920/54a57b6335be4c048e25126b91d3ffb3.jpg)
Redis的对象结构:
typedef struct redisObject {
unsigned type:4; //类型
unsigned encoding:4; //编码
int refcount; //引用计数
unsigned lru:22; //淘汰策略,最近最少使用
void *ptr; //指向底层实现的数据结构
} robj;
Redis 用引用计数技术实现内存的回收机制
1、创建新对象,并指向key时,计数器会初始化为1。
2、被其它对象引用时,计数器+1。
3、对象不被其它对象引用时,计数器-1。
4、当对象计数器为0时,对象所占用的内存将会被释放。
Redis的淘汰策略:当内存不足时,Redis会根据LRU(最近最少使用)腾出内存。
高版本的Redis中当内存达到极限时,内存淘汰策略主要采用了6种方式进行内存对象的释放操作
1.volatile-lru:从设置了过期时间的数据集中,选择最近最久未使用的数据释放
2.allkeys-lru:从数据集中(包括设置过期时间以及未设置过期时间的数据集中),选择最近最久未使用的数据释放
3.volatile-random:从设置了过期时间的数据集中,随机选择一个数据进行释放
4.allkeys-random:从数据集中(包括了设置过期时间以及未设置过期时间)随机选择一个数据进行入释放
5.volatile-ttl:从设置了过期时间的数据集中,选择马上就要过期的数据进行释放操作
6.noeviction:不删除任意数据(但redis还会根据引用计数器进行释放呦~),这时如果内存不够时,会直接返回错误
默认的内存策略是noeviction,在Redis中LRU算法是一个近似算法,默认情况下,Redis随机挑选5个键,并且从中选取一个最近最久未使用的key进行淘汰,在配置文件中可以通过maxmemory-samples的值来设置redis需要检查key的个数,但是栓查的越多,耗费的时间也就越久,但是结构越精确(也就是Redis从内存中淘汰的对象未使用的时间也就越久~)
内容总结
以上是互联网集市为您收集整理的Redis--内存全部内容,希望文章能够帮你解决Redis--内存所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。