什么是分布式锁首先介绍下什么是分布式锁,分布式锁是针对不同系统多进程之间数据同步的一种解决方案。在不同进程需要互斥地访问共享资源时,分布式锁是一种非常有用的技术手段。安全和可靠性要求先提出三个属性,这三个属性,是实现高效分布式锁的基础。安全属性A:互斥,不管任何时候,只有一个客户端能持有同一个锁。效率属性A:不会死锁,最终一定会得到锁,就算一个持有锁的客户端宕掉或者发生网络分区。效率属性B:容错,
锁类型
mysql锁级别:页级、表级、行级表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。
行级锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。
转载
2023-08-01 06:53:41
117阅读
死锁概念死锁:是指多个进程在运行过程中因争夺资源而造成的一种互相等待的现象,当进程处于这种僵持状态时,若无外力作用,它们都将无法再向前推进。死锁产生的4个必要条件产生死锁的必要条件:互斥条件:进程要求对所分配的资源进行排它性控制,即在一段时间内某资源仅为一进程所占用。请求和保持条件:当进程因请求资源而阻塞时,对已获得的资源保持不放。不剥夺条件:进程已获得的资源在未使用完之前,不能剥夺,只能在使用完
分析:其实这是问到缓存必问的,因为缓存雪崩和穿透,是缓存最大的两个问题,要么不出现,一旦出现就是致命性的问题,所以面试官一定会问你。剖析:缓存雪崩对于系统 A,假设每天高峰期每秒 5000 个请求,本来缓存在高峰期可以扛住每秒 4000 个请求,但是缓存机器意外发生了全盘宕机。缓存挂了,缓存中查到不到数据,就会去查数据库,此时 1 秒 5000 个请求全部落数据库,数据库必然扛不住,它会报一下警,
转载
2024-03-05 22:03:58
33阅读
缓存雪崩缓存雪崩是指在某一个时间段内,缓存集中过期失效,如果这个时间段内有大量请求,而查询数据量巨大,所有的请求都会达到存储层,存储层的调用量会暴增,引起数据库压力过大甚至宕机。原因Redis突然宕机大部分数据失效举个栗子比如我们基本上都经历过购物狂欢节,假设商家举办 23:00-24:00 商品打骨折促销活动。程序小哥哥在设计的时候,在 23:00 把商家打骨折的商品放到缓存中,并通过redis
转载
2023-10-12 21:05:15
116阅读
1、什么是高可用?单机redis支撑的并发量有限(一般QPS在1W-几W不等),如果并发量大可能导致redis挂掉;redis配置不合理,fork子进程同步也可能导致redis挂掉(伪挂);操作系统异常(JVM挂掉、OOM、CPU过载、磁盘满了IOYICHANG)或者网络变更、迁移等也可能导致redis挂掉(暂停对外服务)。等等这些,可能引起业务系统正常运转的,都是非高可用的表现。理想状态,后台r
转载
2023-08-21 03:33:25
348阅读
分析:其实这是问到缓存必问的,因为缓存雪崩和穿透,是缓存最大的两个问题,要么不出现,一旦出现就是致命性的问题,所以面试官一定会问你。剖析:缓存雪崩对于系统 A,假设每天高峰期每秒 5000 个请求,本来缓存在高峰期可以扛住每秒 4000 个请求,但是缓存机器意外发生了全盘宕机。缓存挂了,此时 1 秒 5000 个请求全部落数据库,数据库必然扛不住,它会报一下警,然后就挂了。此时,如果没用什么特别的
转载
2024-06-28 20:10:34
31阅读
一、什么数据可以放缓存1.不需要实时更新但是又极其消耗数据库的数据。2.需要实时更新,但是更新频率不高的数据。3.在某个时刻访问量极大而且更新也很频繁的数据。但是这种数据使用的缓存不能和普通缓存一样,这种缓存必须保证不丢失,否则会有大问题。二、什么数据不能放缓存1.实际上在一个web站点中,大部分数据都是可以缓存的,反而不能使用缓存的是很小一部分。这类数据包括比如涉及到钱、密钥、业务关键性核心数据
转载
2023-07-09 19:49:33
122阅读
所谓死锁:是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。由于资源占用是互斥的,当某个进程提出申请资源后,使得有关进程在无外力协助下,永远分配不到必需的资源而无法继续运行,这就产生了一种特殊现象死锁。 虽然进程在运行过程中,可能发生死锁,但死锁的发生也必须
转载
2024-07-14 09:01:16
20阅读
# Redis 中的 Big Key
当我们谈论 Redis 的性能时,通常会提到各种优化手段。然而,许多开发者可能没有意识到,数据模型的设计和使用方式将对性能产生深远影响。特别是“Big Key”的概念,它可能会成为性能瓶颈,影响我们系统的稳定性和响应速度。
## 什么是 Big Key?
在 Redis 中,Big Key 指的是那些占用大量内存、并且处理起来可能比较慢的键值对。它们可能
原创
2024-10-10 07:02:35
40阅读
# Redis Pub/Sub消息丢失情况
## 概述
Redis是一个高性能的内存数据库,支持发布/订阅(Pub/Sub)模式。在Pub/Sub模式中,发布者将消息发送到特定的频道,而订阅者则可以订阅一个或多个频道,以接收相应的消息。
然而,在特定情况下,Redis Pub/Sub可能会导致消息丢失。这篇文章将向刚入行的开发者介绍Redis Pub/Sub的工作流程,并指导他们如何避免消息
原创
2023-10-26 10:24:49
299阅读
什么情况下Java程序会产生死锁? 典型回答 死锁是一种特定的程序状态,在实体之间,由于循环依赖导致彼此一直处于等待之中,没有任何个体可以继续前进。死锁不仅仅会发生在线程之间,存在资源独占的进程之间同样也可能出现死锁。通常来说,我们大多是聚焦在多线程场景中的死锁,指两个或多个线程之间,由于互相持有对
转载
2019-04-15 23:56:00
185阅读
2评论
在不同的业务场景中,使用 Redis 单节点还是 Redis 集群是个需要深入考虑的问题。Redis 是一个高性能的内存数据库,其独特的数据结构和操作特性使其在许多场景中都有广泛的应用。然而,随着数据量的增加和业务访问频率的提升,可能会面临性能瓶颈,此时便需要考虑使用 Redis 集群,以满足更高的并发和容错要求。
### 环境预检
在决定是否使用 Redis 或 Redis 集群之前,我们首
前言每项技术的出世都是有原因的,都是为了解决问题。所以了解它所要解决的问题,对学习这项技术将事半功倍。下面就谈谈容器产生的背景,所要解决的问题。下面说的是根据我自己的理解,可能会有问题,欢迎指正!虚拟机和容器的区别很多人都会有这个疑问。有这个问题的大多是对于虚拟机和容器所解决问题理解不到位导致的。按我的理解,虚拟机是在解决这样的问题:避免资源浪费、充分使用资源、方便、统一管理。以前每人一台个人计算
转载
2024-04-19 22:13:54
67阅读
一、request 和session的生命周期问题request的生命周期是request请求域,一个请求结束,则request结束 session的生命周期是session会话域,打开一个浏览器请求一个网站的页面后,Session开始,当session超过时间限制(一般是20分种)后,session注销而失效 或是人为使用session.invalidate();使用session失效; 或是关
转载
2024-04-06 13:28:43
365阅读
又到了金三银四的时候,大家都按耐不住内心的躁动,我在这里给大家分享下之前面试中遇到的一个知识点(死锁问题),如有不足,欢迎大佬们指点指点。1、什么是死锁?死锁指的是在两个或两个以上不同的进程或线程中,由于存在共同资源的竞争或进程(或线程)间的通讯而导致各个线程间相互挂起等待,如果没有外力作用,最终会引发整个系统崩溃。2、Mysql出现死锁的必要条件资源独占条件指多个事务在竞争同一个资源时存在互斥性
转载
2024-04-08 19:49:04
71阅读
阅读本文大概需要 8.5 分钟。Mysql 锁类型一、锁类型介绍:MySQL有三种锁的级别:页级、表级、行级。表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。行级锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。页面锁:开销和加锁时间界于表锁和行锁之间;会出现死锁;锁定粒度界于表锁和行锁之间,并发度一般算法:next KeyLoc
转载
2024-06-30 10:30:01
33阅读
什么时候应使用示波器?需要看到信号上小的电压变化需要很高的时间间隔精度,参数信息时需要高垂直或电压分辨率时应使用示波器什么时候应使用逻辑分析仪?需要以与硬件相同的工作方式观察系统中的信号需要在若干信号线的高或低电平上进行码型触发,并观察结果,需要观察多于示波器通道数的信号线,并且不需要精密的时间间隔信息时,就应使用逻辑分析仪。调试并检验数字系统的运行同时跟踪并使多个数字信号相关联检验并分析总线中违
转载
2023-07-06 20:07:55
138阅读
缓存雪崩介绍: 缓存在同一时间大面积的失效,后面的请求都直接落到了数据库上,造成数据库短时间内承受大量请求。原因:1️⃣redis主机挂了,redis全盘崩溃。2️⃣缓存中有大量数据同时过期。处理方式:针对redis服务不可用的情况:1️⃣采用redis集群(主从+哨兵),避免单机出现问题整个缓存服务都没办法使用。 2️⃣限流,避免同时处理大量的请求。针对热点缓存失效的情况:1️⃣设置不同的失效时
转载
2024-02-22 13:44:40
33阅读
简介: 数据库死锁一般是两个或两个以上的线程同时争夺一个资源所造成的互相等待死锁的状态,比如用户访问线程A锁住记录C,另一用户访问线程B且需 访问记录C的时候就会形成死锁;形成死锁的主要原因: 1.系统资源不足;(系统资源充足分配的时候很少形成死锁) 2.访问的对象的顺序不一致; 3.系统资源分配的不恰当等;形成死锁的四个必要条件(缺一不可): 1.互斥条件:同一时间,一个对象资源只能被一个线程所
转载
2024-01-17 10:01:34
81阅读