Redis面试高频问题

什么是缓存穿透 ? 怎么解决 ?

缓存穿透是指查询一个一定不存在的数据,如果从存储层查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到数据库去查询,可能导致数据库挂掉。这种情况大概率是遭到了攻击。解决方案的话,我们通常都会用布隆过滤器来解决它

你能介绍一下布隆过滤器吗

布隆过滤器主要是用于检索一个元素是否在一个集合中。一般会使用redisson实现的布隆过滤器。它的底层主要是先去初始化一个比较大数组,里面存放的二进制0或1。在一开始都是0,当一个key来了之后经过3次hash计算,模于数组长度找到数据的下标然后把数组中原的0改为1,这样的话,三个数组的位置就能标明一个key的存在。查找的过程也是一样的。当然是有缺点的,布隆过滤器有可能会产生一定的误判,我们一般可以设置这个误判率,大概不会超过5%,其实这个误判是必然存在的,要不就得增加数组的长度,其实已经算是很划分了,5%以内的误判率一般的项目也能接受,不至于高并发下压倒数据库。

相关推荐

  1. Redis面试高频问题

    2024-05-13 20:42:04       34 阅读
  2. 面试高频问题----3

    2024-05-13 20:42:04       28 阅读
  3. 面试高频问题----6

    2024-05-13 20:42:04       34 阅读
  4. SQL管理员高频面试问题

    2024-05-13 20:42:04       32 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-13 20:42:04       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-13 20:42:04       106 阅读
  3. 在Django里面运行非项目文件

    2024-05-13 20:42:04       87 阅读
  4. Python语言-面向对象

    2024-05-13 20:42:04       96 阅读

热门阅读

  1. 【编程向导】Docker-常用命令

    2024-05-13 20:42:04       38 阅读
  2. OSINT技术情报精选·2024年5月第1周

    2024-05-13 20:42:04       27 阅读
  3. 二分查找GO语言实现

    2024-05-13 20:42:04       36 阅读
  4. MYSQL DBA运维实战

    2024-05-13 20:42:04       29 阅读
  5. js设计模式--发布订阅者模式

    2024-05-13 20:42:04       40 阅读
  6. Goframe学习笔记(六)上下文共享变量

    2024-05-13 20:42:04       49 阅读
  7. 1900年-2100年公历转农历数据

    2024-05-13 20:42:04       32 阅读