海量数据下如何正确访问Redis服务才不会挂掉?

java如何解决内存缓存击穿问题?

第一,做好监控,及时预警,比如当前有多少存活的值,命中率多少等等,防止抓瞎

创新互联建站主要从事成都网站设计、成都网站建设、外贸网站建设、网页设计、企业做网站、公司建网站等业务。立足成都服务唐山,10年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:18982081108

第二,做好主备,防止中间件单点故障

第三,做好缓存持久化,为什么要持久化,是防止中间件不可用,直接穿到最底层了。这个持久化并不是说是redis自己的持久化,而是额外的

第四,就算穿库,也要保障你的执行效率是高的,不要因为有了缓存就忽略了最基础的部分

简要说下缓存穿透,缓存击穿,缓存雪崩的出现情景和解决方案!

出现上述问题的前提:因为数据库使用磁盘存取数据,往往比较慢,而缓存使用内存(而且通常是key-value型),存取较快!

这样先使用内存缓存来缓存数据库数据,读取数据的时候先从缓存读取,只有获取不到的时候才从数据库获取!


下面分别从概念,出现场景,解决方案来说:

①,缓存穿透

概念:访问一个不存在的key,所有的读取都会访问数据库,通常数据库中也没有这样的数据,造成穿透,数据量大时,导致数据库卡死!

出现情景:一般数据库都是使用正整数来做id,然后使用id作为key缓存,如果有人恶意攻击,传一个负数(-100)做大量查询,那么数据库崩溃!

解决办法:

1,设置拦截,对不符合要求的id直接拦截!

海量数据下如何正确访问Redis服务才不会挂掉?

海量数据下正确的访问redis要注意的事情有很多,基本上可以从服务治理,数据,redis正确使用三个方面来讲。

既然是海量数据,那么服务肯定要拆分成多个服务,最常见的采用“大中台,小前台”的概念,中台分各个服务中心,各个中心去维护自己中心负责的服务,向上游前台提供数据和服务。比如一个做内容付费的公司可以有内容中心、商品中心、交易中心

用户中心、促销中心、基础中心、开放平台等,中心之间采用RPC通信或者数据共享。

在做好服务治理和数据划分的基础上,这个时候就是重点讲如何正确使用redis的时候了,个人列举了部分细则仅供大家参考:

熟练使用五种数据结构(String、Set|、Hash、List、ZSet)以及每种数据结构的适用场景和注意事项;

防止缓存雪崩,即避免大批量缓存同一时间段集中过期,导致大量请求都怼到数据库上,导致数据库连接数爆满、宕机;

防止缓存穿透,避免redis中热点key存入了null或者不存在,导致大量请求绕过redis请求数据库去了;

避免大key的存在:比如一个redis集群是16G,共8个节点,每个节点平均分配2G的内存,这时候如果有一个大的hash key占用内存超过2G了,这个时候尽管集群还有剩余的空间,这个大key的写入依旧会失败,单个key是无法做到集群的,另外再想想如果一个hash存储了大量的数据,考虑一下性能问题?

禁止使用keys、flushall、flushdb等,运维同学通过redis的rename机制禁掉命令,或者使用scan的方式渐进式处理;

批量读写redis请采用pipeline管道的方式;

要保证Redis不会挂掉,也就是提高Redis的高可用性,可以从这么几个方面考虑。

Redis单副本:也就是只部署一台Redis,不需要节点之间的数据同步,架构简单,部署方便;但是单台机器毕竟是有风险的,按照题目中【海量数据】的场景,是不能达到高可用要求的。

Redis主从:主从实例可以部署在不同的物理服务器上,充分利用多台服务器的资源,在主库发生故障的时候,可以进行主备切换,从而保证系统的稳定运行,甚至可以做到读写分离,主库专门用作写操作,一台或多台备库进行读操作;但是当主库发生故障的时候(如果没有HA方案的话),是需要手动进行主备切换的。

Redis Sentinel:部署架构分为两部分【Sentinel集群】和【数据集群】;Sentinel集群是由多个Sentinel节点组成的分布式集群,通常是2N+1台服务器,可以实现故障发现和转移、客户端通知等功能;数据集群用于存储数据;它能够解决主从模式下的自动切换问题,并且数据集群是可以横向扩展的;当然这个架构实现和部署起来,也更为复杂一些;并且这个架构不能做到读写分离。

Redis Cluster:Redis 3.0集群,是分布式集群解决方案之一,物理架构中配置2N个节点(主从一一对应),主节点提供读写操作,从节点作为备份;数据分布保存在多个节点上,是一种无中心的架构,如果有部分节点发生故障,能够实现故障自动转移和切换,用投票机制完成备库升级为主库(下文的Redis分片章节,还会介绍到Redis Cluster)。

到此,以上就是小编对于redis缓存雪崩解决方案是什么意思啊的问题就介绍到这了,希望这2点解答对大家有用。

本文名称:海量数据下如何正确访问Redis服务才不会挂掉?
网页网址:http://www.shufengxianlan.com/qtweb/news10/399260.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联