卡飞资源网

专业编程技术资源共享平台

Redis 经典缓存问题:一致性、穿透、击穿、雪崩与污染


hello,大家好,我是张张,「架构精进之路」公号作者。

Redis 缓存:穿透、雪崩、击穿原理,及最佳实践

Redis 作为高性能缓存系统,在实际应用中可能会遇到缓存穿透、缓存雪崩和缓存击穿三大经典问题。这些问题会严重影响系统性能和稳定性。下面从技术原理和案例角度分析这些问题,并提供解决方案。


1.缓存穿透(Cache Penetration)

Redis中缓存穿透问题与解决方法(redis 内存穿透)

缓存穿透问题概述

在 Redis 作为缓存使用时,缓存穿透是常见问题。正常查询流程是先从 Redis 缓存获取数据,若有则直接使用;若没有则去数据库查询,查到后存入缓存。但当请求的数据在缓存和数据库中都不存在时,就会出现缓存穿透。大量此类请求会绕过缓存,直接给数据库造成巨大压力,甚至导致数据库崩溃,比如恶意攻击者用不存在的键发起大量请求来攻击系统。

分布式环境下如何保证 ID 的唯一性

前言

首先说下我们为什么需要分布式 ID,以及分布式 ID 是用来解决什么问题的。当我们的项目还处于单体架构的时候,我们使用数据库的自增 ID 就可以解决很多数据标识问题。但是随着我们的业务发展我们的架构就会逐渐演变成分布式架构,那么这个时候再使用数据的自增 ID 就不行了,因为一个业务的数据可能会放在好几个数据库里面,此时我们就需要一个分布式 ID 用来标识一条数据,因此我们需要一个分布式 ID 的生成服务。那么分布式 ID 的服务有什么要求和挑战呢?

讲分布式唯一id,这篇文章很实在(分布式唯一id解决的问题)

分布式唯一ID介绍

分布式系统全局唯一的 id 是所有系统都会遇到的场景,往往会被用在搜索,存储方面,用于作为唯一的标识或者排序,比如全局唯一的订单号,优惠券的券码等,如果出现两个相同的订单号,对于用户无疑将是一个巨大的bug。

别再用 Redis List 实现消息队列了,Stream 专为队列而生

上回说到使用 Redis 的 List 实现消息队列有很多局限性,比如:

Redis INCR命令:简单易懂的键值自增操作

Redis是一个流行的内存数据库,它提供了许多强大的功能,其中之一是 INCR 命令。INCR 命令允许你对 Redis 键的值进行自增操作,而不需要手动编写复杂的逻辑。这篇文章将详细描述 INCR 命令的使用和工作原理,旨在让初学者能够轻松理解。

1. 简介

Redis INCR 命令用于对存储在 Redis 中的键进行自增操作。它适用于存储为整数的值,每次执行 INCR 命令,键的值将会增加1,并返回自增后的值。如果键不存在,则会创建一个新的键,并将其初始值设置为0。

若依开发框架解析笔记(2)-登录验证码生成解析

这篇笔记的内容主要讲解后台登陆生成验证码相关的内容。在前后端工程都顺利启动之后,打开网页,可以使用浏览器的开发者工具,可以查看http的请求和响应情况,根据url可以快速定位到后端的具体的控制层的方法。

我们可以看到打开首页之后,就是登陆的页面,我们主要关注一点是图片里面的那个请求/dev-api/captchaImage,这个方法是后端生成验证码的方法,验证码生成的主要代码在CaptchaController.java里面。下面着重介绍一下生成验证码的主要思路和流程:

MyBatis-Plus内置的主键生成策略有大坑,要注意!

昨天小伙伴使用Mybaits-Plus开发的项目线上(集群、K8S

雪花算法,什么情况下发生 ID 冲突?

分布式系统中,有一些需要使用全局唯一 ID 的场景,这种时候为了防止 ID 冲突可以使用 36 位的 UUID,但是 UUID 有一些缺点,首先他相对比较长,另外 UUID 一般是无序的

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言