Redis缓存

Posted Chim

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Redis缓存相关的知识,希望对你有一定的参考价值。

(图片来源: https://www.cnblogs.com/rjzheng/p/8908073.html

访问过程存在三种情况:

(1)请求 --> 缓存中存在key  --> 返回
(2)请求 --> 缓存中不存在key --> 查询数据库 --> 数据库存在key --> 写入缓存 --> 返回 
(3)请求 --> 缓存中不存在key --> 查询数据库 --> 数据库不存在key --> 返回

1. 为什么需要缓存?

假设没有缓存系统, 所有的请求都会直接连接数据库。 当访问量过大时,数据库必须过载无法连接,并且查询数据库是一个耗时操作。缓存可以减少数据库的查询次数,避免同时大量数据库连接操作。

2.访问存在三种情况,第一种和第二种是正常访问。在第三种情况下,访问时绕过了缓存直接连接缓存,完全是在消耗资源,如何避免这种情况?

如果缓存的目的是减少数据库连接,那么就不能让访问绕过缓存。

(1)加锁。当缓存中不存在key时,需要获取锁,获取锁的客户端可以访问数据库,没有获锁的用户等待。目的在于有顺序有组织的与数据库交互,避免数据库过载。例如:地铁在人流量很大的时候,会采取限流策略,让先来的人先进去。

请求 --> 缓存中不存在key --> 获取锁(令牌) --> 查询数据库 --> 返回

(2)先确认身份,再访问数据库。可以先在缓存中保存所有的key。当需要访问数据库时,先检查是否存在这个key,如果存在,再访问数据库。也就是,确认身份,vip可进。

请求 --> 缓存中不存在key --> 检测是否存在key -->(如果存在key) 查询数据库 --> 返回

 

以上是关于Redis缓存的主要内容,如果未能解决你的问题,请参考以下文章

Android获取各个应用程序的缓存文件代码小片段(使用AIDL)

怎样使用redis缓存,java代码

Redis缓存击穿,缓存穿透,缓存雪崩解决方案(附代码)

Redis缓存击穿,缓存穿透,缓存雪崩解决方案(附代码)

企业项目开发--分布式缓存Redis

Redis 学习 —— 数据类型及操作