redis Redis内存缓存过期机制

打印 上一主题 下一主题

主题 1051|帖子 1051|积分 3153

起因:随着项目的进一步推广,数据量的增大,直接访问mysql数据库获取数据所使用的时间越来越长,为办理当前主要矛盾,决定引入redis非关系型数据库作为缓存层,使得数据并不能直接命中数据库,镌汰访问数据库带来的压力,从而加快运行速度。
   
   1. Redis内存缓存过期机制

   Redis是一个内存数据,持久化仅仅是做备份和HA的
   key一般会有两种利用:不设置过期时间,设置过期时间(无论是否设置,只要你的业务内容充足复杂内容充足多,Redis主机的内存是永久的不够的,假定目前你的企业Redis的配置还停留在主从阶段)
   

  • 影响存储大小的是不是你的主机内存?是1,不是2
  • 假如内存不够了,放满了,Redis怎么处理?无法存入1,有其他方法的2
   Redis内存的删除机制
   

  • 主动删除(定期删除)

    • 只要设置了expire,redis会默认1秒抽查10次,来巡检这些过期的key,把它删撤除来释放内存
    • 在redis.conf文件里有个叫:hz的配置(hz 10)过大CPU负担比力重

  • 被动删除:

    • redis内部在访问每个key的时候,会调用一个内部方法:expireIfNeeded(),假如过期就会返回nil,拿空间换时间

  • 假如你的key大部分没有设置过期时间,内存满了怎么办?
   Redis提供一套内存镌汰机制:MEMORY MANAGEMENT
  
  1. # master 8G slave 6G
  2. # 服务不是只运行redis这个服务,还有linux本身的内核swap,这个是可以给操作系统留一些余量
  3. # maxmemory <bytes> 设定redis可用内存大小
  4. # 内存淘汰规则
  5. # maxmemory-policy noeviction 但Redis默认就是这个配置
  6. # volatile-lru -> 在那些设置了expire的缓存中,清除最少使用的旧缓存,可以保存新缓存
  7. # allkeys-lru -> 清除最少用的旧缓存:推荐使用
  8. # volatile-lfu -> Evict using approximated LFU among the keys with an expire set.
  9. # allkeys-lfu -> Evict any key using approximated LFU.
  10. # volatile-random -> Remove a random key among the ones with an expire set.
  11. # allkeys-random -> 在所有缓存中随机删除:不推荐的
  12. # volatile-ttl -> Remove the key with the nearest expire time (minor TTL)
  13. # noeviction -> 缓存永不过期
复制代码
  
   不要以为每天把功能完成了就行了,这种思想是要不得的,互勉~!
         ©    著作权归作者全部,转载或内容互助请接洽作者     

喜欢的朋侪记得点赞、收藏、关注哦!!!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

反转基因福娃

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表