- 博客(8)
- 收藏
- 关注
原创 理解Redis底层数据结构
quicklist 会控制 quicklistNode 结构里的压缩列表的大小或者元素个数,来规避潜在的连锁更新的风险,但是这并没有完全解决连锁更新的问题。而对于数据结构,他的好处是存储数据是连续的,所以,对数组中的数据进行检索是比较快的,通过偏移量就可以快速定位。ziplist最大的特点,就是他被设计成一种内存紧凑型的数据结构,占用一块连续的内存空间,不仅可以利用CPU缓存,而且会针对不同长度的数据,进行响应的编码。连锁更新造成的空间连续变动,是非常不安全的,同时效率也是非常低的。
2025-04-11 22:59:07
994
原创 深入理解 Redis
对于任何数据存储系统来说,数据安全都是重中之重。Redis也不例外。从数据安全性的角度来梳理Redis从单机到集群的各种部署架构,可以看到用Redis保存数据基本上还是非常靠谱的。甚至Redis的数据保存策略,在很多场景下,都是一种教科书级别的解决方案。另外,之前介绍过,Redis现在推出了企业版本。企业版在业务功能层面并没有做太多的加法,核心就是在服务高可用以及数据安全方面提供了更加全面的支持。
2025-04-11 03:34:08
1033
原创 Mysql 事务与锁机制
在RR隔离级别下,为了解决不可重复读和幻读问题,所以在遍历扫描聚集索引记录时,为了防止扫描过的索引被其它事务修改(不可重复读问题) 或 间隙被其它事务插入记录(幻读问题),从而导致数据不一致的情况,所以MySQL的解决方案就是把所有扫描过的索引记录和间隙都锁上,这里要注意,并不是直接将整张表加表锁,因为不一定能加上表锁,可能会有其它事务锁住了表里的其它行记录。这时,另一个事务也来读取同一条记录,如果不加控制,第二个事务读取了这些“脏”数据,并据此作进一步的处理,就会产生未提交的数据依赖关系。
2025-04-10 22:33:16
851
原创 MySQL 索引详解
索引是数据库表中一列或多列的值进行排序的一种数据结构,使用索引可以快速访问数据库表中的特定信息。简单来说索引就是一种已经排序好的数据结构,用来辅助快速检索。
2025-04-10 22:30:00
636
原创 理解 Mysql 架构
而存储引擎层负责数据的存储和检索。Server 层包括连接器、查询缓存、分析器、优化器、执行器等,涵盖 MySQL 的大多数核心服务功能,以及所有的内置函数(如日期、时间、数学和加密函数等),所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图等。InnoDB 的 redo log 是固定大小的,比如可以配置为一组 4 个文件,每个文件的大小是 1GB,那么这块大小总共就可以记录 4GB 的操作。开始执行的时候,要先判断一下你对这个表有没有执行查询的权限,如果没有,就会返回没有权限的错误。
2025-04-10 14:53:22
449
原创 ReentrantLock 源码分析
java.util.concurrent包中的大多数同步器实现都是围绕着共同的基础行为,比如等待队列、条件队列、独占获取、共享获取等,而这些行为的抽象就是基于AbstractQueuedSynchronizer(简称AQS)实现的,AQS是一个抽象同步框架,可以用来实现一个依赖状态的同步器。JDK中提供的大多数的同步器如Lock, Latch, Barrier等,都是基于AQS框架来实现的一般是通过一个内部类Sync继承 AQS将同步器所有调用都映射到Sync对应的方法。
2025-04-09 20:06:33
885
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人