redis内存和过期策略

redis内存空间

内存指标

  • used_memory:Redis分配器分配的内存总量
  • used_memory_rss:Redis进程占据操作系统的内存
  • mem_fragmentation_ratio:碎片率, used_memory_rss/used_memory。
    • 1-1.5正常。
    • <1,表示使用虚拟内存,即磁盘
  • 210304.redis.mem.png

内存分类

  • 对象内存:
    • 键空间
      • dict字典保存数据库所有键值对。
      • 键:字符串对象。
      • 值:5中对象中的一种。
    • 过期字典
      • expires字典保存所有键的过期时间。
      • 键:数据的键。
      • 值:毫秒级Unix时间戳。
  • 缓冲内存
    • 客户端缓冲。
    • 复制积压缓冲。主从复制。
    • AOF缓冲。持久化。
  • 自身内存
    • 子进程消耗。如AOF、RDB持久化fork的子进程。
  • 内存碎片

内存碎片

  • 产生原因:
    • jemalloc分配机制。按照2^n字节来分,导致很多时候并不能使用完全。
    • 数据修改删除。键值大小不一样,释放的内存并不能完全被复用。
  • 碎片清理方式:
    • 重启redis。
    • redis4.0之后提供自动碎片清理机制,主线程执行,会影响正常请求,可调整执行时机和力度

key过期策略

  • 3种策略。

惰性删除

  • 执行命令时如果该key设置了过期时间,检查过期,如果过期则删除,返回空。

定期删除

  • 默认每隔100ms从expires字典中随机取key,检查过期,如果过期则删除。

内存淘汰

  • 内存不足以容纳新写入的数据时,删除某些数据。
    • 6种算法,常用算法 allkeys-lru ,移除键空间中最近最少使用key。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值