redis我们常用的一种缓存技术,在业务量比较大的情况下我们经常会遇见高并发的情况,如果让请求直接访问数据库,就会导致我们的数据库崩溃从而导致数据的丢失。缓存技术就应运而生,其中最用的技术就是redis。为什么使用redis呢,因为redis的抗并发能力的特别强,还可以进行海量的扩容,但是因为是内存数据库所以大小受内存的限制,但是因为是内存数据库所以访问的速度也特别得快。
当有一个请求访问我们的服务时首先经过我们的分发层nginx,通过lua脚本对我们的请求进行解析与转发,然后从我们的应用层nginx拉数据(一级缓存),如果缓存中有数据就将数据直接返回,这也是最快的。在这里要注意一点应用层nginx可以通过lua脚本直接与redis链接,但是因为相容性不友好所以不推荐,如果应用层nginx没有数据的话就向我们的缓存数据生产服务(二级缓存)中请求数据,如果缓存数据生产服务中还没有相应的数据的话,向行我们redis的缓存进行数据的拉取(三级缓存),如果还没有就像我们的数据库进行数据的查询,数据库将数据返回后再将数据写进各级缓存中,以便于下一次的数据访问。如果是后台修改数据还会有一个还会有一个缓存控制中心。具体如下图