OpenResty+缓存穿透基本介绍

OpenResty
                1.lua表达式 
                2.Nginx的安装
                3.OpenResty
                        因为咱们已经意识到了Nginx 很强大,咱们也想使用它来进行逻辑上的开发,但是由于Nginx 是C语言
                写的,所以Java开发工程师很难在上边进行开发,所以咱们有了OpenResty ,OpenResty 一套底层封装了Nginx
                和Lua 表达式的这么一个技术或者叫做环境,有了它之后,咱们就可以通过Lua 来进行web 的开发
                
                4.缓存预热:
                        意思就是在项目启动时,就将数据库中的数据加载到缓存中,有了缓存之后,就可以避免项目启动时
                        无缓存从而请求直击数据库的这种情况发生
                5.缓存穿透
                        这个要查询的数据 在数据库中和缓存中都不存在的查询
                        初级版:
                                5.1 判断,如果是负数,那么直接拦截
                                5.2 如果是查询缓存和数据库都没有,可以将这些数据这个id 存入到缓存中,下次过来访问时,需要有相同的id,此时直接就可以缓存中国返回
                                以上两种方案:都无法解决随机id 访问这种操作
                                        网关处:做了一个白名单-> 将数据库中的所有数据的id 存入到集合中
                                        当要进行访问时,去判断要查询的id ,是否在这个白名单中,如果在,放他去查询,如果不在,直接返回
                                        问题:如果商品数据量过大,此时呢,这个集合就会很大
                                                  采用布隆过滤器来解决
                                                   他的思路非常类似于map对key的处理
                                                   放
                                                   拿

原文地址:https://www.cnblogs.com/zhuxiaopijingjing/p/12306358.html

时间: 2025-01-17 05:13:00

OpenResty+缓存穿透基本介绍的相关文章

再谈缓存穿透、缓存并发、热点缓存之最佳招式

一.前言 在之前的一篇缓存穿透.缓存并发.缓存失效之思路变迁文章中介绍了关于缓存穿透.并发的一些常用思路,但是个人感觉文章中没有明确一些思路的使用场景,本文继续将继续深化与大家共同探讨,同时也非常感谢这段时间给我提宝贵建议的朋友们. 说明:本文中提到的缓存可以理解为Redis. 二.缓存穿透与并发方案 相信不少朋友之前看过很多类似的文章,但是归根结底就是二个问题: 如何解决穿透 如何解决并发 当并发较高的时候,其实我是不建议使用缓存过期这个策略的,我更希望缓存一直存在,通过后台系统来更新缓存系统

缓存穿透、缓存并发、热点缓存之最佳招式 -- 转载

一.前言 在之前的一篇缓存穿透.缓存并发.缓存失效之思路变迁文章中介绍了关于缓存穿透.并发的一些常用思路,但是个人感觉文章中没有明确一些思路的使用场景,本文继续将继续深化与大家共同探讨,同时也非常感谢这段时间给我提宝贵建议的朋友们. 说明:本文中提到的缓存可以理解为Redis. 二.缓存穿透与并发方案 相信不少朋友之前看过很多类似的文章,但是归根结底就是二个问题: 如何解决穿透 如何解决并发 当并发较高的时候,其实我是不建议使用缓存过期这个策略的,我更希望缓存一直存在,通过后台系统来更新缓存系统

缓存穿透、缓存并发、热点缓存解决方案

一.前言 在之前的一篇缓存穿透.缓存并发.缓存失效之思路变迁文章中介绍了关于缓存穿透.并发的一些常用思路,但是个人感觉文章中没有明确一些思路的使用场景,本文继续将继续深化与大家共同探讨,同时也非常感谢这段时间给我提宝贵建议的朋友们. 说明:本文中提到的缓存可以理解为Redis. 二.缓存穿透与并发方案 相信不少朋友之前看过很多类似的文章,但是归根结底就是二个问题: 如何解决穿透 如何解决并发 当并发较高的时候,其实我是不建议使用缓存过期这个策略的,我更希望缓存一直存在,通过后台系统来更新缓存系统

缓存穿透和缓存失效

缓存穿透 是指查询一个一定不存在的数据,由于缓存是不命中时被动写的,并且出于容错考虑,如果从存储层查不到数据则不写入缓存,这将导致这个存在的数据每次请求都要到存储层去查询,失去了缓存的意义. 有很多种方法可以有效地解决缓存穿透问题,最常见的则是采用布隆过滤器,将所有可能存在的数据哈希到一个足够大的bitmap中,一个一定不存在的数据会被 这个bitmap拦截掉,从而避免了对底层存储系统的查询压力(类似无结果cache).在数据魔方里,我们采用了一个更为简单粗暴的方法,如果一个查询返回的数据为空(

如何处理缓存失效、缓存穿透、缓存并发等问题

缓存失效: 引起这个原因的主要因素是高并发下,我们一般设定一个缓存的过期时间时,可能有一些会设置5分钟啊,10分钟这些:并发很高时可能会出在某一个时间同时生成了很多的缓存,并且过期时间在同一时刻,这个时候就可能引发——当过期时间到后,这些缓存同时失效,请求全部转发到DB,DB可能会压力过重. 处理方法: 一个简单方案就是将缓存失效时间分散开,不要所以缓存时间长度都设置成5分钟或者10分钟:比如我们可以在原有的失效时间基础上增加一个随机值,比如1-5分钟随机,这样每一个缓存的过期时间的重复率就会降

缓存穿透与缓存雪崩

缓存穿透 什么是缓存穿透? 一般的缓存系统,都是按照key去缓存查询,如果不存在对应的value,就应该去后端系统查找(比如DB).如果key对应的value是一定不存在的,并且对该key并发请求量很大,就会对后端系统造成很大的压力.这就叫做缓存穿透. 如何避免? 1:对查询结果为空的情况也进行缓存,缓存时间设置短一点,或者该key对应的数据insert了之后清理缓存. 2:对一定不存在的key进行过滤.可以把所有的可能存在的key放到一个大的Bitmap中,查询时通过该bitmap过滤.[感觉

缓存穿透与缓存雪崩(转)

缓存穿透 什么是缓存穿透? 一般的缓存系统,都是按照key去缓存查询,如果不存在对应的value,就应该去后端系统查找(比如DB).如果key对应的value是一定不存在的,并且对该key并发请求量很大,就会对后端系统造成很大的压力.这就叫做缓存穿透. 如何避免? 1:对查询结果为空的情况也进行缓存,缓存时间设置短一点,或者该key对应的数据insert了之后清理缓存. 2:对一定不存在的key进行过滤.可以把所有的可能存在的key放到一个大的Bitmap中,查询时通过该bitmap过滤.[感觉

【学习】缓存穿透&缓存雪崩

昨天第一次听涛哥讲到缓存穿透与缓存雪崩  网上百度学习了下  Mark一下 [缓存穿透] 缓存穿透其实就是查询一个肯定不存在的数据,每次都会查询数据库,由于数据不存在,也不会写缓存. 这样其实是失去了缓存的意义了. 高并发的时候对数据库的压力就大了~~ 网上查到有几种解决方法: 1.布隆过滤器--这个算法有点复杂,具体应用就是,高效地检索一个元素是否在一个集合中,但是可能存在低概率的误差. 参见[http://www.dataguru.cn/thread-481958-1-1.html] 这里提

缓存穿透 缓存雪崩 缓存并发

参考连接:https://segmentfault.com/a/1190000005886009 缓存穿透:查询一个不存在的数据时,缓存和存储层都不会命中,由于存储层查不到数据则不写入缓存,所以每次查询都会到存储层查询从而缓存失去了其存在的意义. 如何避免: 对查询为空的情况也进行缓存,只不过设置一个较短的缓存时间. 把所有可能存在的key放到一个大的bitmap中,查询时通过该bitmap过滤. 缓存雪崩:发生缓存穿透时或者缓存失效后,Storage层的调用量暴增从而使Storage也挂掉.