hello,大家好,我是张张,「架构精进之路」公号作者。
2025年04月30日
Redis 作为高性能缓存系统,在实际应用中可能会遇到缓存穿透、缓存雪崩和缓存击穿三大经典问题。这些问题会严重影响系统性能和稳定性。下面从技术原理和案例角度分析这些问题,并提供解决方案。
2025年04月30日
在 Redis 作为缓存使用时,缓存穿透是常见问题。正常查询流程是先从 Redis 缓存获取数据,若有则直接使用;若没有则去数据库查询,查到后存入缓存。但当请求的数据在缓存和数据库中都不存在时,就会出现缓存穿透。大量此类请求会绕过缓存,直接给数据库造成巨大压力,甚至导致数据库崩溃,比如恶意攻击者用不存在的键发起大量请求来攻击系统。
2025年04月28日
首先说下我们为什么需要分布式 ID,以及分布式 ID 是用来解决什么问题的。当我们的项目还处于单体架构的时候,我们使用数据库的自增 ID 就可以解决很多数据标识问题。但是随着我们的业务发展我们的架构就会逐渐演变成分布式架构,那么这个时候再使用数据的自增 ID 就不行了,因为一个业务的数据可能会放在好几个数据库里面,此时我们就需要一个分布式 ID 用来标识一条数据,因此我们需要一个分布式 ID 的生成服务。那么分布式 ID 的服务有什么要求和挑战呢?
2025年04月28日
分布式系统全局唯一的 id 是所有系统都会遇到的场景,往往会被用在搜索,存储方面,用于作为唯一的标识或者排序,比如全局唯一的订单号,优惠券的券码等,如果出现两个相同的订单号,对于用户无疑将是一个巨大的bug。
2025年04月28日
Redis是一个流行的内存数据库,它提供了许多强大的功能,其中之一是 INCR 命令。INCR 命令允许你对 Redis 键的值进行自增操作,而不需要手动编写复杂的逻辑。这篇文章将详细描述 INCR 命令的使用和工作原理,旨在让初学者能够轻松理解。
Redis INCR 命令用于对存储在 Redis 中的键进行自增操作。它适用于存储为整数的值,每次执行 INCR 命令,键的值将会增加1,并返回自增后的值。如果键不存在,则会创建一个新的键,并将其初始值设置为0。
2025年04月28日
这篇笔记的内容主要讲解后台登陆生成验证码相关的内容。在前后端工程都顺利启动之后,打开网页,可以使用浏览器的开发者工具,可以查看http的请求和响应情况,根据url可以快速定位到后端的具体的控制层的方法。
我们可以看到打开首页之后,就是登陆的页面,我们主要关注一点是图片里面的那个请求/dev-api/captchaImage,这个方法是后端生成验证码的方法,验证码生成的主要代码在CaptchaController.java里面。下面着重介绍一下生成验证码的主要思路和流程:
2025年04月28日
分布式系统中,有一些需要使用全局唯一 ID 的场景,这种时候为了防止 ID 冲突可以使用 36 位的 UUID,但是 UUID 有一些缺点,首先他相对比较长,另外 UUID 一般是无序的