问题描述:

* 针对 DB 中不存在的数据源,每次请求缓存和数据库都不存在

造成后果:

* 应用服务器压力变大

* Redis 命中率大幅度降低

* `数据库压力巨增甚至 down 掉`
* 该现象对于 Redis 无影响,奔溃的是数据库

造成原因:

* 频繁访问不存在数据

解决方案:

1. 空值缓存:查询数据库返回为 null 时也进行缓存,但一定设置很短的过期时间

2. 实时监控:对 Redis 命中率进行实时监控,当发现命中率极速降低时,人为排查访问对象和访问数据,和运维人员配合,可以设置黑名单限制服务

3. 设置访问白名单:使用 bitmaps 类型定义一个可以访问的名单,名单 id 作为 bitmaps 的偏移量,每次访问和 bitmap 里面的 id 进行比较,如果访问 id 不在 bitmaps 里面,进行拦截,不允许访问。

4. 布隆过滤器:它实际上是一个很长的二进制向量 (位图) 和一系列随机映射函数(哈希函数)。布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都远远超过一般的算法,缺点是有一定的误识别率和删除困难。

最新文章

  1. MAC OS X El CAPITAN 搭建SPRING MVC (1)- 目录、包名、创建web.xml
  2. Maven搭建SSH环境
  3. php示例代码之使用mysqli对象
  4. AngularJs angular.identity和angular.noop
  5. String 与 byte[]相互转换
  6. SSL协议详解
  7. COOKIE和SESSION关系和区别
  8. Google glog 使用
  9. LR_问题_运行场景时提示scripts you are running in invalid
  10. 三个PHP常用代码样例
  11. 201621123031 《Java程序设计》第12周学习总结
  12. 关于php中 json_encode 编码成json数据参数说明
  13. Mysql加锁过程详解(6)-数据库隔离级别(1)
  14. c# dataGridView cell添加下拉框
  15. LibreOJ #541. 「LibreOJ NOIP Round #1」七曜圣贤(单调队列)
  16. 在Core环境下用WebRequest连接上远程的web Api 实现数据的简单CRUD(附Git地址)
  17. Python3之collections模块
  18. java 堆和栈的区别
  19. [BZOJ2286][SDOI2011]消耗战(虚树DP)
  20. Android学习——AsyncTask的使用

热门文章

  1. 【docker专栏8】使用IDEA远程管理docker镜像及容器服务
  2. ceph 004 纠删码池 修改参数 cephx认证
  3. Java jdk常用工具集合
  4. openstack 搭建详细步骤
  5. 新零售SaaS架构:商品系统架构设计
  6. kingbaseES V8R3数据安全案例之---审计记录清除案例
  7. PostgreSQL 修改执行计划 GroupAggregate 为 HashAggregate
  8. KingbaseES R6 集群测试job管理测试
  9. 目标检测-SSD算法从零实现
  10. csp每日习题