JasonBourne

MySQL 刷脏页

平时的工作中,不知道你有没有遇到过这样的场景,一条 SQL 语句,正常执行的时候特别快,但是有时也不知道怎么回事,它就会变得特别慢,并且这样的场景很难复现,它不只随机,而且持续时间还很短。在这一瞬间,MySQL 可能就是在刷脏页(flush)。 当内存数据页跟磁盘数据页内容不一致的时候,我们称这个内存页为“脏页”。内存数据写入到磁盘后,内存和磁盘上的数据页的内容就一致了,称为“干净页”。 ...

MySQL 存储结构

存储结构 MySQL的存储结构 表存储结构 单位:表>段>区>页>行 在数据库中, 不论读一行,还是读多行,都是将这些行所在的页进行加载。也就是说存储空间的基本单位是页。 一个页就是一棵树B+树的节点,数据库I/O操作的最小单位是页,与数据库相关的内容都会存储在页的结构里。 B+树索引结构 在一棵B+树中,每个节点为都是一个页,每次新建节点的时候,就会申请一个页...

Redis哨兵

Sentinel(哨兵)是redis的高可用解决方案:由一个或多个Sentinel实例组成Sentinel系统可以监视任意多个主服务器,以及这些这些主服务器下属的所有从服务器,并在被监视的主服务器进入下线状态后,自动将下线主服务器下属的某个从服务器升级为新的主服务器,然后由新的主服务器代替已下线的主服务器继续处理命令请求。 配置 创建一个Sentinel.conf配置文件内容如下...

Redis常见应用场景

redis应用场景总结redis平时我们用到的地方蛮多的,下面就了解的应用场景做个总结: 热点数据的缓存:由于redis访问速度块、支持的数据类型比较丰富,所以redis很适合用来存储热点数据,另外结合expire,我们可以设置过期时间然后再进行缓存更新操作,这个功能最为常见,我们几乎所有的项目都有所运用。 限时业务的运用:redis中可以使用expir...

Redis持久化策略

数据持久化功能是redis相比于其他缓存中间件具有的优势之一,它可以保证在redis重启时,数据不丢失,以提升系统的性能及可用性。 那么redis是如何实现数据持久化的呢?它提供了两种数据持久化的解决方案: RDB、AOF。 RDB redis默认的持久化策略是RDB方案,rdb方案生成的rdb文件是一个经过压缩的二进制文件,通过它可以还原到生成RDB文件时的数据库状态,当re...

Redis过期key删除和缓存淘汰策略

过期key删除策略 在我们用 redis 存储数据时,大多数场景都会给key设置一个过期时间,那么当key过期后,redis是如何处理的呢。大家可能会想到定时器的方案,当我们给key设置过期时间的同时设置一个定时器,到达时间后,删除过期的key,但这种方式在内存不紧张但Cpu紧张时,将cpu时间用在删除过期key上,无疑会对系统的吞吐量造成影响。所以redis没有采用这种方案,而是使用了 ...

Redis集群

Redis集群是Redis提供的分布式数据库方案,集群通过分片(sharding)来进行数据共享,并提供复制和故障转移功能。 节点通过握手将其它节点添加到自己所在的集群。 集群中的16384个槽可以分别指派给集群中的各个节点,每个节点都会记录哪些槽指派给了具体哪个节点。 节点在收到客户端命令请求时,会先检查这个命令请求处理的键所在的槽是否由自己负责,如果不是的话,节点将向客户...