摘要: [toc] 事务基本概念 事务的定义 事务(Transaction)是访问和更新数据库的程序执行单元;事务中可能包含一个或多个 sql 语句,这些语句要么都执行,要么都不执行。 使用事务 典型的 MySQL 事务是如下操作的: 其中 start transaction 标识事务开始,commit 提 阅读全文
posted @ 2019-08-14 14:35 小龟学架构 阅读(222) 评论(0) 推荐(0) 编辑
摘要: [toc] 垃圾回收算法 标记 清除算法 复制算法 标记 整理算法 分代收集算法 标记 清除算法 算法分为“标记”和“清除”阶段:首先标记出所有需要回收的对象,在标记完成后统一回收所有被标记的对象。它是最基础的收集算法,效率也很高,但是会带来两个明显的问题: 效率问题 空间问题(标记清除后会产生大量 阅读全文
posted @ 2019-06-06 18:05 小龟学架构 阅读(152) 评论(0) 推荐(0) 编辑
摘要: [toc] 垃圾收集器 Serial收集器 ParNew收集器 Parallel Scavenge收集器 CMS收集器 G1收集器 如果说收集算法是内存回收的方法论,那么垃圾收集器就是内存回收的具体实现。 虽然我们对各个收集器进行比较,但并非要挑选出一个最好的收集器。因为知道现在为止还没有最好的垃圾 阅读全文
posted @ 2019-06-06 18:04 小龟学架构 阅读(96) 评论(0) 推荐(0) 编辑
摘要: [toc] 定义 垃圾回收机制是一种在堆内存中找出哪些对象在被使用,还有哪些对象没被使用,并且将后者删掉的机制。 所谓使用中的对象(已引用对象),指的是程序中有指针指向的对象;而未使用中的对象(未引用对象),则没有被任何指针给指向,因此占用的内存也可以被回收掉。 垃圾回收机制 eden s0("fr 阅读全文
posted @ 2019-06-06 17:19 小龟学架构 阅读(131) 评论(0) 推荐(0) 编辑
摘要: [toc] 可靠性 首先,为了确保分布式锁可用,我们至少要确保锁的实现同时满足以下四个条件: 互斥性。在任意时刻,只有一个客户端能持有锁。 不会发生死锁。即使有一个客户端在持有锁的期间崩溃而没有主动解锁,也能保证后续其他客户端能加锁。 具有容错性。只要大部分的Redis节点正常运行,客户端就可以加锁 阅读全文
posted @ 2019-06-04 21:10 小龟学架构 阅读(182) 评论(0) 推荐(0) 编辑
摘要: [toc] 缓存穿透 定义 缓存穿透是指查询一个一定不存在的数据,因为缓存中也无该数据的信息,则会直接去数据库层进行查询,从系统层面来看像是穿透了缓存层直接达到db,从而称为缓存穿透 ,没有了缓存层的保护,这种查询一定不存在的数据对系统来说可能是一种危险,如果有人恶意用这种一定不存在的数据来频繁请求 阅读全文
posted @ 2019-06-04 21:02 小龟学架构 阅读(199) 评论(0) 推荐(0) 编辑
摘要: [toc] String应用场景 分布式锁 setnx key value,当key不存在时,将 key 的值设为 value ,返回1。若给定的 key 已经存在,则setnx不做任何动作,返回0。 当setnx返回1时,表示获取锁,做完操作以后del key,表示释放锁,如果setnx返回0表示 阅读全文
posted @ 2019-06-04 20:58 小龟学架构 阅读(1787) 评论(0) 推荐(0) 编辑
摘要: [toc] redis 常见数据结构以及使用场景分析 String Hash List Set Sort Set (ZSet) key 任何二进制序列都可以作为Redis的Key使用(例如普通的字符串或一张JPEG图片) 关于Key的一些注意事项: 不要使用过长的Key。例如使用一个1024字节的k 阅读全文
posted @ 2019-06-04 20:54 小龟学架构 阅读(1162) 评论(0) 推荐(0) 编辑
摘要: [toc] 常见的删除策略 1.定时删除:在设置键的过期时间的同时,创建一个timer,让定时器在键的过期时间到达时,立即执行对键的删除操作。(主动删除) 对内存友好,但是对cpu时间不友好,有较多过期键的而情况下,删除过期键会占用相当一部分cpu时间。 2.惰性删除:放任过期键不管,但是每次从键空 阅读全文
posted @ 2019-06-04 20:49 小龟学架构 阅读(1126) 评论(0) 推荐(0) 编辑
摘要: [toc] 持久化的原因 很多时候我们需要持久化数据也就是将内存中的数据写入到硬盘里面,大部分原因是为了之后重用数据(比如重启机器、机器故障之后回复数据),或者是为了防止系统故障而将数据备份到一个远程位置。 Redis的数据是存在内存中的,如果Redis发生宕机,那么数据会全部丢失,因此必须提供持久 阅读全文
posted @ 2019-06-04 20:46 小龟学架构 阅读(113) 评论(0) 推荐(0) 编辑