iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >Redis安全策略详解
  • 598
分享到

Redis安全策略详解

Redis安全Redis安全策略 2022-07-27 16:07:12 598人浏览 薄情痞子
摘要

目录缓存穿透缓存击穿缓存雪崩布隆过滤器基于布隆过滤器解决缓存穿透问题缓存穿透 高并发情况下查询一个不存在的key 产生的背景(原因): 缓存穿透是指使用不存在的key进行大量的高并发查询,导致缓存无法命中,每次请求都要都

缓存穿透

高并发情况下查询一个不存在的key

产生的背景(原因):

缓存穿透是指使用不存在的key进行大量的高并发查询,导致缓存无法命中,每次请求都要都要穿透到后端数据库查询,使得数据库的压力非常大,甚至导致数据库服务压死;

解决方案:

  1. 接口层实现api限流、用户授权、id检查等;
  2. 从缓存和数据库都取不到数据的话,一样将数据库空值放入缓存中,设置30s有效期避免使用同一个id对数据库攻击压力大;
  3. 布隆过滤器

缓存击穿

高并发情况下查询的一个key突然过期

产生背景(原因):

在高并发的情况下,当一个缓存key过期时,因为访问该key请求较大,多个请求同时发现缓存过期,因此对多个请求同时数据库查询、同时向Redis写入缓存数据,这样会导致数据库的压力非常大;

解决方案:

  1. 使用分布式

保证在分布式情况下,使用分布式锁保证对于每个key同时只允许只有一个线程查询到后端服务,其他没有获取到锁的权限,只需要等待即可;这种高并发压力直接转移到分布式锁上,对分布式锁的压力非常大。

  1. 使用本地锁

使用本地锁与分布式锁机制一样,只不过分布式锁适应于服务集群、本地锁仅限于单个服务使用。

  1. 软过过期

设置热点数据永不过期或者异步延长过期时间;

缓存雪崩

高并发情况下大量的key 集中失效

产生背景(原因):

缓存雪崩指缓存服务器重启或者大量的缓存集中在某个时间段失效,突然给数据库产生了巨大的压力,甚至击垮数据库的情况。

解决思路:对不用的数据使用不同的失效时间,加上随机数

布隆过滤器

布隆过滤器适用于判断某个数据是否在集合中存在,不一定百分百准备, Bloom Filter基本实现原理采用位数组与联合函数一起实现;

布隆过滤器最大的问题:就是可能会存在一个误判的问题,如果向误判概率越低,则二进制数组会越大,同时也会非常占用空间

基于布隆过滤器解决缓存穿透问题

Maven依赖

<dependency>
    <groupId>com.Google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>22.0</version>
</dependency>

测试代码

public class BlongTest {
    
    private static Integer size = 1000000;
    public static void main(String[] args) {
        BloomFilter<Integer> integerBloomFilter = BloomFilter.create(Funnels.integerFunnel(), size, 0.01);
        for (int i = 0; i < size; i++) {
            integerBloomFilter.put(i);
        }
        // 从布隆中查询数据是否存在
        ArrayList<Integer> strings = new ArrayList<>();
        for (int j = size; j < size + 10000; j++) {
            if (integerBloomFilter.mightcontain(j)) {
                strings.add(j);
            }
        }
        System.out.println("误判数量:" + strings.size());
    }
}

解决缓存击穿代码

@RequestMapping("/getOrder")
public OrderEntity getOrder(Integer orderId) {
    if (integerBloomFilter != null) {
        if (!integerBloomFilter.mightContain(orderId)) {
            System.out.println("从布隆过滤器中检测到该key不存在");
            return null;
        }
    }
    // 1.先查询Redis中数据是否存在
    OrderEntity orderRedisEntity = (OrderEntity) redisTemplateUtils.getObject(orderId + "");
    if (orderRedisEntity != null) {
        System.out.println("直接从Redis中返回数据");
        return orderRedisEntity;
    }
    // 2. 查询数据库的内容
    System.out.println("从DB查询数据");
    OrderEntity orderDBEntity = orderMapper.getOrderById(orderId);
    if (orderDBEntity != null) {
        System.out.println("将Db数据放入到Redis中");
        redisTemplateUtils.setObject(orderId + "", orderDBEntity);
    }
    return orderDBEntity;
}

@RequestMapping("/dbToBulong")
public String dbToBulong() {
    List<Integer> orderIds = orderMapper.getOrderIds();
    integerBloomFilter = BloomFilter.create(Funnels.integerFunnel(), orderIds.size(), 0.01);
    for (int i = 0; i < orderIds.size(); i++) {
        integerBloomFilter.put(orderIds.get(i));
    }
    return "success";
}

到此这篇关于Redis安全策略详解的文章就介绍到这了,更多相关Redis安全内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

您可能感兴趣的文档:

--结束END--

本文标题: Redis安全策略详解

本文链接: https://www.lsjlt.com/news/33476.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 浅谈Redis安全策略
    目录命令配置密码手动配置密码指令安全端口安全SSH代理补充:1. 开启redis密码认证,并设置高复杂度密码2. 禁止监听在公网3. 禁止使用root用户启动4. 限制redis 配...
    99+
    2024-04-02
  • Redis缓存策略超详细讲解
    目录Redis缓存中间件缓存是什么缓存的优点缓存的缺点Redis缓存已查询数据redis缓存中间件实践缓存更新缓存更新的三个策略主动更新策略的三种方案主动更新的代码实现Redis缓存...
    99+
    2024-04-02
  • 一文详解Java线程中的安全策略
    目录一、不可变对象二、线程封闭三、线程不安全类与写法四、线程安全-同步容器1. ArrayList -> Vector, Stack2. HashMap -> HashT...
    99+
    2024-04-02
  • SpringBoot SpringSecurity JWT实现系统安全策略详解
    目录一、原理1. SpringSecurity过滤器链2. JWT校验二、Security+JWT配置说明1. 添加maven依赖2. securityConfig配置3. JwtA...
    99+
    2022-11-21
    SpringBoot SpringSecurity JWT SpringBoot安全策略
  • 防火墙安全策略
    目录 防火墙安全策略 实验图  1.配置防火墙图形界面         先添加UDP端口          添加网段网卡         启动防火墙FW1          查找防火墙 0/0/0 端口默认的IP地址         将地...
    99+
    2023-10-01
    linux 服务器 运维
  • 怎么理解PostgreSQL行安全策略
    这篇文章主要讲解了“怎么理解PostgreSQL行安全策略”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么理解PostgreSQL行安全策略”吧!行安全策...
    99+
    2024-04-02
  • Redis数据过期策略的实现详解
    目录一、设置过期时间1、常用方式2、字符串独有方式二、3种过期策略三、Redis采用的过期策略四、RDB对过期key的处理五、AOF对过期key的处理  本文对Redis的过期机制简...
    99+
    2024-04-02
  • 关于Redis的内存淘汰策略详解
    目录一、什么是内存淘汰?二、Redis 内存上限三、Redis 内存淘汰策略四、内存淘汰的具体工作步骤五、LRU 算法及在 Redis 中的改进5.1 LRU 算法5.2 Redis 中的 LRU 算法六、LFU一、什么...
    99+
    2023-05-19
    Redis 策略 Redis 内存淘汰
  • Mybatis-plus全局id生成策略详解
    Mybatis-plus全局id生成策略 在配置文件中加入以下代码后就不需要在实体类种的id上添加 @TableId(value = “id”, type = IdType.AUTO...
    99+
    2024-04-02
  • 云服务器安全策略
    1. 强密码和多因素认证 强密码是保护云服务器的第一道防线。使用复杂的密码,包括大小写字母、数字和符号,并定期更改密码。此外,启用多因素认证可以提高安全性,因为它需要用户提供两个或多个身份验证因素才能访问服务器。 2. 安全组和网络访问控...
    99+
    2023-10-26
    安全策略 服务器
  • MysqL安全策略有哪些
    小编给大家分享一下MysqL安全策略有哪些,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!1:使用预处理语句防止SQL注入2:写入数据库的数据要进行特殊字符的转义,比如字符中带单引号和双引号...
    99+
    2024-04-02
  • Win10如何重置恢复安全策略和组策略
    本文小编为大家详细介绍“Win10如何重置恢复安全策略和组策略”,内容详细,步骤清晰,细节处理妥当,希望这篇“Win10如何重置恢复安全策略和组策略”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。右键点击开始按钮或...
    99+
    2023-06-28
  • 详细聊聊Redis的过期策略
    保存过期时间 Redis可以为每个key设置过期时间,会将每个设置了过期时间的key放入一个独立的字典中。 typedef struct redisDb { int id; //i...
    99+
    2024-04-02
  • webservice安全策略怎么配置
    Web服务安全策略的配置应该包括以下几个方面:1. 认证和授权:配置Web服务的认证和授权机制,确保只有授权用户可以访问服务。2. ...
    99+
    2023-06-13
    webservice安全
  • HSTS安全策略如何应用
    这篇文章主要介绍“HSTS安全策略如何应用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“HSTS安全策略如何应用”文章能帮助大家解决问题。HSTS 是 HTTP 严格传输安全(HTTP Strict...
    99+
    2023-06-27
  • 详解Java策略模式
    一、策略模式到底是什么? 策略模式属于对象的行为模式。其用意是针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。策略模式使得算法可以在不影响到客户端...
    99+
    2024-04-02
  • MySQL缓存策略详解
    MySQL缓存方案 一、MySQL缓存方案目的分析1.1、缓存层的作用1.2、缓存层选择1.3、场景分析 二、提升MySQL访问性能的方式2.1、MySQL主从复制2.2、读写分离2.3、连接池2.4、异步连接 三、redi...
    99+
    2023-08-25
    mysql 缓存 数据库 innodb lua
  • windows7没有本地安全策略如何解决
    在Windows 7中,本地安全策略功能通常是只有Windows 7专业版、企业版和旗舰版才拥有的。如果你使用的是Windows 7...
    99+
    2023-08-29
    windows7
  • Redis删除策略和逐出策略是什么
    这篇文章主要介绍了Redis删除策略和逐出策略是什么,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。过期数据先来看三个key值,分别为sex、na...
    99+
    2024-04-02
  • 云服务器安全策略包括
    云服务器提供商通常会采用各种安全策略来保护其服务器和数据。以下是几个常见的策略: 访问控制:访问控制是防止未经授权的用户访问服务器和数据的一种方法。可以采用多种措施来限制访问权限,例如强密码、加密、IP地址过滤、端口过滤等,以防止未经授...
    99+
    2023-10-26
    安全策略 服务器
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作