分布式系列文章目录
文章目录
- 分布式系列文章目录
- 前言
- 一、Redis
- q1.怎么判断是否命中缓存
- 1. MySQL数据库如何检查询查缓存是否命中链接
- 2.如何判断redis是否命中缓存链接
- q2.Redis缓存穿透、雪崩、击穿以及分布式锁和本地锁
- 二、分布式
- q1.分布式订单号生成策略
- q2.接口幂等性,防止重复提交
- q3.分布式锁
- 三、高并发
- q1.如何处理高并发和单点故障
- 四、消息队列
- q1.为什么使用消息队列
- q2.消息队列缺点
- q3.消息队列如何选型
- q4.如何保证消息队列的高可用
- q4.如何保证消息队列不被重复消费
- q6.如何处理消息丢失
- q7.如何保证消息的顺序性
- 总结
前言
提示
一、Redis
q1.怎么判断是否命中缓存
1. MySQL数据库如何检查询查缓存是否命中链接
MySQL数据库如何检查询查缓存是否命中链接
1、使用 EXPLAIN:执行 SELECT 查询时,在查询语句前加上 EXPLAIN 关键字可以显示查询计划和是否使用了查询缓存。
2、使用 SHOW STATUS:可以使用SHOW STATUS 命令来查看 MySQL 服务器的各种状态信息。其中包括 Qcache_hits 和 Qcache_inserts 等指标,通过观察这些状态,就能够了解查询缓存命中率以及缓存想容量、读取次数等诸多重要信息。
3、使用命令行输入SHOW VARIABLES LIKE ‘have_query_cache’。若显示为 YES,则表示查询缓存功能被启用;如果是 NO,表示没有开启查询缓存。
2.如何判断redis是否命中缓存链接
如何判断redis是否命中缓存链接
1、通过键是否存在判断:使用Redis的命令EXISTS来判断键是否存在。如果键存在,表示已经命中缓存,否则则表示未命中。例如,可以使用如下命令来判断键key1是否存在:EXISTS key1
2、通过过期时间判断:使用Redis的命令TTL来获取键的剩余过期时间。如果过期时间大于0且键存在,表示已经命中缓存;如果过期时间小于等于0或键不存在,表示未命中。例如,可以使用如下命令来获取键key1的剩余过期时间:TTL key1。
3、通过判断值是否为空判断:使用Redis的命令GET来获取键对应的值。如果值不为空,则表示已经命中缓存;如果值为空或键不存在,则表示未命中。例如,可以使用如下命令来获取键key1的值:GET key1。
4、监控Redis缓存的命中率:Redis提供了监控命令,可以获取当前缓存的命中率。通过查看命中率可以了解缓存的效果,命中率越高表示缓存效果越好。命中率的计算公式为:(命中数/总查询数) * 100%。可以借助工具如Redis的monitor命令、命令行工具redis-cli、图形化工具如Redis Desktop Manager等来监控命中率
q2.Redis缓存穿透、雪崩、击穿以及分布式锁和本地锁
Redis缓存穿透、雪崩、击穿以及分布式锁和本地锁
二、分布式
q1.分布式订单号生成策略
链接1: 分布式订单号生成策略
链接2: 分布式订单号生成策略
链接3: 分布式订单号生成策略
链接4: 分布式订单号生成策略
q2.接口幂等性,防止重复提交
链接1: 如何保证接口的幂等性(防止重复提交)
链接2: 接口幂等性(防重令牌)(重复提交)
q3.分布式锁
链接1: 【面试】实现分布式锁的三种方式
链接2: 接口幂等性(防重令牌)(重复提交)
三、高并发
q1.如何处理高并发和单点故障
链接: 如何处理高并发和单点故障
这个文章解释了高并发的由来
四、消息队列
q1.为什么使用消息队列
链接: 消息中间件夺命连环18问,一口气刷完面试必问的消息中间件面试内容,让你面试少走99%的弯路!
解耦
异步
削峰
q2.消息队列缺点
q3.消息队列如何选型
q4.如何保证消息队列的高可用
rabbitmq
Kafka