树莓派记录

我给我买的第一个树莓派命名为pioneer,意思是先锋,开拓者,拓荒者,这是我对硬件的第一次尝试,希望能通过它打开我的新世界大门。

很幸运地为它注册到了域名pioneers.top

Redis实现消息队列的方案

MQ应用有很多,比如ActiveMQ,RabbitMQ,Kafka等,但是也可以基于redis来实现,可以降低系统的维护成本和实现复杂度,本篇介绍redis中实现消息队列的几种方案。

  1. 基于List的 LPUSH+BRPOP 的实现
  2. PUB/SUB,订阅/发布模式
  3. 基于Sorted-Set的实现
  4. 基于Stream类型的实现

Redis分布式锁

本文将会分为三个版本:初级版、进阶版、近乎完美版来介绍redis分布式锁

进阶的方向主要是在一致性上进行了优化,最后一版可以说是高度一致性!

MySQL事务的隔离级别

很多书都说可重复读解决了幻读问题,比如《mysql技术内幕–innodb存储引擎》等,因此网上关于事务隔离级别的文章大多是有问题的,因此本文会重点说一下

可重复读(Repeatable Read)是否真的解决幻读的问题?!

MySQL索引背后的数据结构及算法原理(转载)

一文通透系列,强烈建议对此有疑问的同学认真观看

文章主要内容分为三个部分。

  • 第一部分主要从数据结构及算法理论层面讨论MySQL数据库索引的数理基础。

  • 第二部分结合MySQL数据库中MyISAM和InnoDB数据存储引擎中索引的架构实现讨论聚集索引、非聚集索引及覆盖索引等话题。

  • 第三部分根据上面的理论基础,讨论MySQL中高性能使用索引的策略。

MySQL锁分析

什么时候加锁,这里有一个万能公式,只需要先问自己三个问题:

  • 当前事务隔离级别是什么
  • id列是否存在索引
  • 如果存在索引是聚簇索引还是非聚簇索引呢?

为什么SELECT * 会导致查询效率低?

总结一下大概是3个原因:

  1. 不需要的列会增加数据传输时间和网络开销
  2. 对于无用的大字段,如 varchar、blob、text,会增加 io 操作
  3. 失去MySQL优化器“覆盖索引”策略优化的可能性