最近,公司给了个优化任务,某个耗时的操作,在百亿的交易额下,处理异常缓慢,需要优化,以为每日发息做准备,在这里给大家介绍下我的优化思路,共同探讨下:代码逻辑:        通过用户id获取用户所在区域id,每次批量处理1千个用户,起20个线程处理。第一步,加缓存通过用户id获取用户所在区域id分两步实
转载 2023-08-09 21:29:49
59阅读
String provin.
原创 2023-03-08 01:37:07
79阅读
使用优化主要包含两个层面:业务层面、运维层面。1、业务层面优化建议如下:key的长度尽量要短,在数据量非常大时,过长的key名会占用更多的内存一定避免存储过大的数据(大value),过大的数据在分配内存和释放内存时耗时严重,会阻塞主线程Redis 4.0以上建议开启lazy-free机制,释放大value时异步操作,不阻塞主线程建议设置过期时间,把Redis当做缓存使用,尤其在数量很大的时,不设置
转载 2023-07-21 19:59:35
52阅读
文章目录缓存设计缓存穿透定义原因缓存穿透问题解决方案缓存空对象布隆过滤器缓存设计缓存穿透定义查询一个根本不存在的数据, 缓存和DB都不会命中, 白嫖了缓存层和DB 。 通常出于容错的考虑, 如果从存储层查不到数据则不写入缓存层。缓存穿透将导致不存在的数据每次请求都要到存储层去查询, 失去了缓存保护后端存储的意义。原因通常缓存穿透的原因如下:自身业务代码或者数据出现问题。恶...
原创 2021-05-31 16:57:09
563阅读
文章目录缓存设计缓存穿透定义原因缓存穿透问题解决方案缓存空对象布隆过滤
原创 2022-03-28 14:40:45
132阅读
目录背景和价值一、核心方案1:拦截无效请求——从源头过滤不存在的Key1. 布隆过滤器(Bloom Filter):高效拦截不存在的Key2. 业务规则校验:过滤明显无效的请求二、核心方案2:缓存空数据——避免相同无效请求重复穿透1. 缓存空值+短期过期时间2. 缓存“不存在标记”+ 动态过期三、核心方案3:增强后端防护——极端情况兜底1. 接口限流:控制无效请求总量2. 数据库熔断:保护数据库不
转载 17天前
0阅读
集成redis缓存后可以将数据库的查询接口,序列化到redis中,key就是注解中的参数,例如@Cacheable(“findUsers”): 存在redis中的key就是findUsers。缓存了这个结果之后再次请求这个方法就不会去数据库中查,而是从redis缓存中读取数据,这样就减少了跟数据库之间的交互。然后修改、删除、增加操作就会清除缓存,保持数据的一致性,同时有极大的提高了程序运行的效率1
转载 2024-02-14 19:58:39
35阅读
一、多级缓存架构二、缓存设计2.1 缓存穿透缓存穿透是指查询一个根本不存在的数据, 缓存层和存储层都不会命中, 通常出于容错的考虑, 如果从存储层查不到数据则不写入缓存层。 缓存穿透将导致不存在的数据每次请求都要到存储层去查询, 失去了缓存保护后端存储的意义。 造成缓存穿透的基本原因有两个: 第一, 自身业务代码或者数据出现问题。 第二, 一些恶意攻击、 爬虫等造成大量空命中。解决方案缓存空对象空
缓存的收益与成本1.1 受益1 加速读写2 降低后端负载:后端服务器通过前端缓存降低负载,业务端使用redis降低后端mysql负载1.2 成本1 数据不一致:缓存层和数据层有时间窗口不一致,和更新策略有关2 代码维护成本:多了一层缓存逻辑3 运维成本:比如使用了Redis Cluster1.3 使用场景1 降低后端负载:对高消耗的sql,join结果集/分组统计的结果做缓存2 加速请求响应:
转载 2023-07-07 17:26:02
26阅读
一、缓存的收益与成本1.1 收益主要有以下两大收益。 加速读写:通过缓存加速读写,如 CPU L1/L2/L3 的缓存、Linux Page Cache 的读写、游览器缓存、Ehchache 缓存数据库结果。 降低后端负载:后端服务器通过前端缓存来降低负载,业务端使用 Redis 来降低后端 MySQL 等数据库的负载。1.2 成本产生的成本主要有以下三项。 数据不一致:这是因为缓存层和数据层有时
转载 2023-08-18 12:11:22
107阅读
缓存穿透缓存穿透是指缓存和数据库都没有数据,导致请求落在数据库上,造成数据库短时间内承受大量请求而崩溃。造成缓存穿透的原因:系统业务代码或数据出现问题恶意攻击、爬虫等造成大量空命中解决方案:缓存空对象,并设置过期时间布隆过滤器(见后文)缓存雪崩缓存同一时间大面积的失效、缓存层支撑不住或宕机后,后面的所有请求都落在数据库上,造成数据库短时间压力巨大而崩掉。解决方案:针对缓存大面积失效:缓存数据设置随
在实际应用 Redis 过程中,如果将 Redis 作为数据库的缓存,经常会遇到这几个问题:缓存雪崩、缓存击穿、缓存穿透等。缓存雪崩缓存雪崩指的是,大量的应用无法在 Redis 缓存中处理,然后大量请求发送到了数据库,导致数据库的压力激增,甚至可能导致数据库崩溃,从而导致整个系统崩溃,引发雪崩一样的连锁效应。而引起缓存雪崩的原因,一般如下:1、缓存中大量 key 同时过期2、Redis 实例挂掉了
前言上一节,我们学习了内存性能中 Buffer 和 Cache 的概念。简单复习一下,Buffer 和 Cache 的设计目的,是为了提升系统的 I/O 性能。它们利用内存,充当起慢速磁盘与快速 CPU 之间的桥梁,可以加速 I/O 的访问速度。Buffer 和 Cache 分别缓存的是对磁盘和文件系统的读写数据。从写的角度来说,不仅可以优化磁盘和文件的写入,对应用程序也有好处,应用程序可以在数据
缓存穿透、缓存雪崩、缓存击穿缓存穿透解决方案缓存空对象缓存穿透后,将这个查询条件和空对象结果,放入缓存中,设置较短的过期时间被xx时,可能导致无效缓存数量较大,占用大量内存资源String get(String key) { // 从缓存中获取数据 String cacheValue = cache.get(key); // 缓存为空 if (StringUtils
原创 2024-06-04 18:32:42
0阅读
redis优化!!文章用了redisTemplate和springcache两种方式来优化
原创 2022-10-09 22:49:22
102阅读
(Redis缓存设计与性能优化) 转自 图灵课堂 缓存设计 缓存穿透 缓存穿透是指查询一个根本不存在的数据, 缓存层和存储层都不会命中, 通常出于容错的考虑, 如果从存储层查不到数据则不写入缓存层。 ==缓存穿透将导致不存在的数据每次请求都要到存储层去查询, 失去了缓存保护后端存储的意义。== 造成缓存穿透的基本原因有两个: 第一, 自身业务代码或者数据出现问题。 第二, 一些恶意攻击、 爬虫等造
原创 2024-02-17 19:59:13
30阅读
多级缓存 缓存穿透、缓存击穿、缓存雪崩 缓存穿透 缓存穿透是指查询一个根本不存在的数据,缓存层和存储层都不会命中,通常处于容错的考虑,如果从存储层查不到数据则不写入缓存层。 缓存穿透将导致不存在的数据每次请求都要到存储查询,失去了缓存保护后端存储的意义。 造成缓存穿透的基本原因有两个: 自身业务代码 ...
转载 2021-10-05 20:21:00
153阅读
概述在高并发的Web应用中,数据库查询往往是性能瓶颈。Redis作为内存数据库,具有极快的读写速度,是实现缓存的理想选择。本文将详细介绍如何在Spring Boot项目中集成Redis,实现高效的缓存机制。环境准备依赖配置首先在pom.xml中添加必要的依赖:<dependencies> <dependency> <groupId>org
原创 1月前
51阅读
1. Redis应用场景利用 redis 中字符串类型完成 项目中手机验证码存储的实现验证码一般都具有时效性,我们在redis中可以设置一个key的超时时间, 当用户在超时时间之内响应时,会与redis中的数据进行对比,验证验证码的正确性 当用户在超时时间之外响应,数据在redis中已经被删除,无法进行验证利用 redis 中字符串类型完成 具有时效性业务功能比如说在平常买票或者网上购物的时候,
转载 2023-05-25 13:10:40
84阅读
文章更新时间:2021/08/10 一、缓存穿透 定义:查询一个根本不存在的数据,则缓存层和存储层都不会命中。 弊端:缓存穿透将导致不存在的数据每次请求都要到存储层去查询,失去了缓存保护后端存储的意义。 造成缓存穿透的基本原因有两个: 1、自身业务代码或者数据出现问题。 2、一些恶意攻击、爬虫等造成
原创 2024-07-28 11:43:13
0阅读
  • 1
  • 2
  • 3
  • 4
  • 5