zoukankan      html  css  js  c++  java
  • --Redis淘汰策略有哪些?

    用于解决什么问题呢?举个例子
    1)我们都知道技术都是衍生于问题的。那我们就来说说用来做什么吧。
    大家可以想想,当我们的物理服务内存只有8G,但是数据却有100G,如何慢慢的放在redis中呢?再加上公司近期资金不够,不能扩展机器怎么办?
    2)解决上述的问题,我们就要引出一个redis的策略,即是标题。

    淘汰策略

    1)voltile-lru:从已设置过期时间的数据集(server.db[i].expires)中挑选最近最少使用的数据淘汰
    2)volatile-ttl:从已设置过期时间的数据集(server.db[i].expires)中挑选将要过期的数据淘汰
    3)volatile-random:从已设置过期时间的数据集(server.db[i].expires)中任意选择数据淘汰
    4)allkeys-lru:从数据集(server.db[i].dict)中挑选最近最少使用的数据淘汰
    5)allkeys-random:从数据集(server.db[i].dict)中任意选择数据淘汰
    6)no-enviction(驱逐):禁止驱逐数据

    解析
    使用淘汰策略是可以把上面的问题暂时顶过去,但是会出现一系列的问题。
    1.内存是腾出来了,但是这样缓存在其中的数据却出去了,万一我需要再次调用缓存中的数据又怎么解决?
    2.前段时间没有访问的,现在火起来了,我的缓存中没有,一下压力进入DB怎么办?
    3.使用上面的解决方式,会暴露出问题也是没办法的,毕竟鱼和熊掌不可兼得。我们得先解决当下的问题不是。上面会总结出一个词语缓存命中率

    什么事缓存命中率?
    1)命中率就是缓存里可以查询到的记录数除以数据库里的总记录数。命中率越低性能越高,反之越差。(大白话就是直接去数据库查询而不走缓存,这样就增大了数据库的压力,查询到数据库中的值以后再存入缓存中。)
    命中率低下的原因也有很多,例如:
    1.内存不足,淘汰掉了;
    2.缓存服务器宕机;

  • 相关阅读:
    Maven安装
    Linux登录欢迎图案
    GC的性能指标和内存容量配置原则
    java堆结构和垃圾回收
    框架设计知识点纵览(笔记)
    .net core在Linux本地化Localization的一次填坑
    .Net Identity OAuth 2.0 SecurityStamp 使用
    CentOS 7 安装. Net Core SDK 2.0
    Docker基本命令与使用 —— Docker容器的网络连接(四)
    Docker基本命令与使用 —— Dockerfile指令与构建(三)
  • 原文地址:https://www.cnblogs.com/weigy/p/12667344.html
Copyright © 2011-2022 走看看