Redis雪崩效应的解决方案(转)[通俗易懂]

Redis雪崩效应的解决方案(转)[通俗易懂]1、可以使用分布式锁单机版的话本地锁当突然有大量请求到数据库服务器时候,进行请求限制。使用所的机制,保证只有一个线程(请求)操作。否则进行排队等待(集群分布式锁,单机本地锁)。减少服务器吞吐量,效率低。保证只能有一个线程进入实际上只能有一个请求在执行查询操作也可以在此处进行使用限流的策略~2、缓存标记publicobjectGetProductListNew()…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

1、可以使用分布式锁 单机版的话本地锁

当突然有大量请求到数据库服务器时候,进行请求限制。使用所的机制,保证只有一个线程(请求)操作。否则进行排队等待(集群分布式锁,单机本地锁)。减少服务器吞吐量,效率低。
在这里插入图片描述
保证只能有一个线程进入 实际上只能有一个请求在执行查询操作

也可以在此处进行使用限流的策略~

2、缓存标记

public object GetProductListNew()
        {
            const int cacheTime = 30;
            const string cacheKey = "product_list";
            //缓存标记。
            const string cacheSign = cacheKey + "_sign";
            
            var sign = CacheHelper.Get(cacheSign);
            //获取缓存值
            var cacheValue = CacheHelper.Get(cacheKey);
            if (sign != null)
            {
                return cacheValue; //未过期,直接返回。
            }
            else
            {
                CacheHelper.Add(cacheSign, "1", cacheTime);
                ThreadPool.QueueUserWorkItem((arg) =>
                {
                    cacheValue = GetProductListFromDB(); //这里一般是 sql查询数据。
                    CacheHelper.Add(cacheKey, cacheValue, cacheTime*2); //日期设缓存时间的2倍,用于脏读。                
                });
                
                return cacheValue;
            }
        } 

3、消息中间件方式

如果大量的请求进行访问时候,Redis没有值的情况,会将查询的结果存放在消息中间件中(利用了MQ同步特性)
查不到时候 走MQ
MQ使用具体看 https://blog.csdn.net/VinceZxy/article/details/91582567

4、均摊分配Redis的key的失效时间

在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/193953.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • T-SQL查询进阶-10分钟理解游标

    T-SQL查询进阶-10分钟理解游标

    2022年3月12日
    32
  • Linux如何下载安装软件超详细解析

    网上很多Linux下载软件的方法,看了很多帖子感觉Linux下载软件的方式有很多,每个人都有自己的习惯,对于一个新手来说及其不友好,有时候会看的很蒙。在这里做出总结。

    2022年4月16日
    1.2K
  • mysql数据类型tinyint_mysql字段类型长度

    mysql数据类型tinyint_mysql字段类型长度在MySQL的数据类型中,Tinyint的取值范围是:带符号的范围是-128到127。无符号的范围是0到255(见官方《MySQL5.1参考手册》http://dev.mysql.com/doc/refman/5.1/zh/column-types.html#numeric-types)。Tinyint占用1字节的存储空间,即8位(bit)。那么Tinyint的取值范围怎么来的呢?我们先看无符号…

    2022年9月21日
    0
  • cbirc全称_agropages

    cbirc全称_agropagesListofCBIRenginesFromWikipedia,thefreeencyclopediaThisisalistofpubliclyavailable Content-basedimageretrieval (CBIR)engines,theseimagesearchengineslookattheconte

    2022年9月4日
    3
  • linux 双网卡 同网段_双网卡 同网段 冲突

    linux 双网卡 同网段_双网卡 同网段 冲突场景:A(192.168.10.203)X网段(192.168.10.200)B(10.179.172.100)Y网段C(10.179.172.122)A是X网段中的设备,C为Y网段中的设备,现在想设备C访问到设备A,现有一台双网卡服务器B实现方式:开启服务器B的地址伪装功能1、设置服务器B的ipB服务器网卡1设置X网段ip192.168.10.200,不设网关网卡2设置Y网段ip10.179.172.100,网关设置为10.179.172.100这样A可以ping通BC也可

    2022年9月3日
    8
  • 基于麦克风阵列的声源定位_python播放声音模块

    基于麦克风阵列的声源定位_python播放声音模块上一篇文章说到odas_web界面非常难安装,并且运行也很卡。所以我自己用python写了一个界面程序,用来接收odas处理完的结果。这个界面程序与odas之间是通过socket连接的,界面作为服务器,odas作为客户端,由于有两路数据,所以各有两个服务器和客户端。但是实际绘制在界面上的是SSL的结果,不是SST的结果。其实我也试过SST的结果,从直观的感受而言,效果会比SSL差一些,实时性不是很高,我的理解SST的好处是可以跟踪音源是否有活动。

    2022年9月2日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号