0x01缓存基本概念一览

tags: redis,ehcahe,jcache,memcache

缓存机制的引入可以提高系统的访问效率。

它的主要实现思想是:在程序和数据源之间引入一个中间层即Cache,访问cache的时间成本肯定远低于数据源。

按照Cache所在可以简单分为进程外缓存和本地缓存。

对于单机推荐使用 ehcahe

对于分布式 推荐使用 redis 和   MemCached;

  1. SpringBoot支持很多种缓存方式:redis、guava、ehcahe、jcache等等。
  2. Redis && memcache 缓存中间件:属于独立的运行程序 可以单机部署,也可以分布式部署;
  3. ehcache: 是程序的一个功能模块。 缓存的访问速度快,但不太适合分布式部署。
  4. 读写速度,不考虑并发问题,本地缓存是最快的

缓存预热

在缓存初始化时,缓存中是没有任何缓存数据的,需先将数据缓存后,缓存服务才算完全启动。预热方式:

  • miss后,实时查询,然后更新缓存数据;
    1. 缺点1:多个tomcat实例同时查询数据并跟新缓存,在一段时间内缓存近似于失效;
    2. 缺点2:在高并发场景下,无法限制对数据库访问速度;
  • 通过task或接口预先加载服务,然后开启缓存服务;
    1. 优势1:在初始化服务时,限制加载数据的速度;
    2. 优势2:批量查询数据库,减少与数据库之间的网络交互;

缓存穿透的问题

问题:

  • 缓存穿透是指查询一个根本不存在的数据,缓存层和存储层都不会命中,
  • 缓存穿透将导致不存在的数据每次请求都要到存储层去查询,失去了缓存保护后端存储的意义。

原因:代码问题, 爬虫,攻击,大量空命中

场景:查询某个文章,给了一个错误的文章id。一直查询不到。

方法:

缓存空对象

  • 空值做缓存,即缓存层中存了更多的键,这就需要更多的内存空间 ,可以对其设置一个较短的过期时间,让其自动清除。
  • 优点是实时性高,代码维护简单。

可以缓存到本地内存中,空对想用一个静态变量。这样不会造成 造成占用内存。

参考链接

  1. ehcache、memcache、redis三大缓存比较
  2. MemCached vs Redis 对象缓存的比较
  3. 总结:如何使用redis缓存加索引处理数据库百万级并发
  4. 学习笔记:cache 和spring cache 技术---本地缓存-分布式缓存,缓存穿透,雪崩,和热点key的问题

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Python自动化测试

Python接口测试之Requests(七)

OK,开始愉快的学习requests库吧,在python的标准库中,虽然提供了urllib,utllib2,httplib,但是做接口测试,requ...

66820
来自专栏Web 开发

用PHP来执行定时任务

上个月有个需求,用PHP写了一个接口给SDK使用,原始数据使用MySQL进行记录。热数据用Redis进行+1的原子操作。每隔一定时间,由一个PHP脚本(姑且就命...

19100
来自专栏游戏杂谈

wriesharek同时监听多个端口

之前的文章《wireshark解析自定义的protobuf协议》 ,当时只监听了一个端口,而如果游戏同时有二个 socket 连接,比如一个是网关另外一个是其它...

23130
来自专栏深度学习之tensorflow实战篇

python django整理(五)配置favicon.ico,解决警告Not Found: /favicon.ico

Django 浏览器打开警告Not Found: /favicon.ico,解决问题需要三步 1.首先准备favicon.ico图片,网上有很多转化工具,放到在...

62060
来自专栏技术专栏

解决 maven 引入其他模块无法扫描到spring bean的问题

25810
来自专栏前端侠2.0

vs code和node的相关使用 一一 bower 管理文件

既然 d.ts文件已经用tsd命令行来管理了,这些项目引用的JS,UI 等也不想一个个的下载,然后复制到项目里了,

20830
来自专栏中国白客联盟

基于splunk的主机日志整合并分析

大家都知道,主机日志格式过于杂乱对于日后的分析造成了不小的困扰,而splunk的轻便型、便携性、易安装性造就了其是一个日志分析的好帮手。

14720
来自专栏扎心了老铁

Python Redis pipeline操作

Redis是建立在TCP协议基础上的CS架构,客户端client对redis server采取请求响应的方式交互。 一般来说客户端从提交请求到得到服务器相应,需...

1K80
来自专栏Albert陈凯

Hadoop离线数据分析平台实战——380MapReduce程序优化Hadoop离线数据分析平台实战——380MapReduce程序优化

Hadoop离线数据分析平台实战——380MapReduce程序优化 项目进度 模块名称 完成情况 用户基本信息分析(MR)� 完成 浏览器信...

33880
来自专栏专业duilib使用+业余界面开发

duilib中list拖动表头大小内容大小跟随变化的一个示例

22040

扫码关注云+社区

领取腾讯云代金券