zoukankan      html  css  js  c++  java
  • redis 处理缓存穿透

    1. 缓存穿透简述

      举例说明,redis中确实没有key值为“redis”数据,并且数据库里面也没有,那么每一次都会穿过缓存层,会将请求打到数据库查询,然后数据库进行查询,造成了不必要的IO浪费

    2. 怎么解决缓存穿透

      a.  使用 key null 

        第一次击穿之后,设置该key值为null,这样以后的请求不会打到数据库层

        缺点是,当发生大量的无效数据时,会占用redis的存储空间,所以引入第二种方式bloomfilter

      b. 布隆过滤器(bloomfilter)

        1. 布隆过滤器的核心就是采用hash算法,将每一个key值进行hash计算,此时可以使用redis中的setbit 命令 设置该散列值为1,当下次请求打过来,直接hash key值,

         得到散列值,然后使用bitcount 命令计算散列值对应的值是否是1 ,为0则一定不存在,为1可能是存在 也可能不存在,原因是可能会发生hash冲突

        2. 使用布隆过滤器的缺点: 不支持删除key,可以使用布谷鸟过滤器避免该问题

    3. 核心思想

      保证有效的请求到达DB,减少DB压力,

    为了未来有更多的选择
  • 相关阅读:
    hdu 1301 prime算法
    hdu 4763 kmp算法
    linux上安装程序出现的问题汇总
    linux之下载工具wget
    python之os模块
    管道和xargs的区别
    linux下查找文件或目录(which,whereis,locate,find)
    blast+学习之search tools
    linux的文件,目录操作命令(mv,rm,cp)
    PHPCMS V9 简单的二次开发
  • 原文地址:https://www.cnblogs.com/zhixinSHOU/p/14562983.html
Copyright © 2011-2022 走看看