09 2022 档案

摘要:文章目录1.RDB的基本概念2.RDB的触发方式2-1、配置文件2-2、手工触发2-3、其他触发方式3.bgsave的工作流程3-1、什么是cow3-2、Redis面临的问题3-3、Redis的cow 因为有小伙伴问Redis的bgsave命令里面,cow(copy on write)到底是如何实现 阅读全文
posted @ 2022-09-30 17:41 忱康 阅读(275) 评论(0) 推荐(0) 编辑
摘要:AOF和RDB是两种redis持久化的机制。 RDB:RDB是将支持当前数据的快照存成一个数据文件的持久化机制。1.在生成快照时,将当前进程fork出一个子进程.2.然后在子进程中循环所有的数据,将数据写入到二进制文件中。3.当子进程将快照写入临时文件完毕后,用临时文件替换原来的快照文件,然后子进程 阅读全文
posted @ 2022-09-29 18:34 忱康 阅读(62) 评论(0) 推荐(0) 编辑
摘要:什么是布隆过滤器 布隆过滤器(Bloom Filter),是1970年,由一个叫布隆的小伙子提出的,距今已经五十年了。 它实际上是一个很长的二进制向量和一系列随机映射函数,二进制大家应该都清楚,存储的数据不是0就是1,默认是0。 主要用于判断一个元素是否在一个集合中,0代表不存在某个数据,1代表存在 阅读全文
posted @ 2022-09-29 16:51 忱康 阅读(40) 评论(0) 推荐(0) 编辑
摘要:缓存雪崩 缓存雪崩是指在同一时段大量的缓存key同时失效或者Redis服务宕机,导致大量请求到达数据库,带来巨大压力。 目前电商首页以及热点数据都会缓存,一般缓存都是定时刷新或者查不到之后更新缓存。定时任务刷新就会存在一个问题。假如,所有的缓存数据失效时间都是12个小时,中午12点刷新缓存,双十一零 阅读全文
posted @ 2022-09-29 11:49 忱康 阅读(35) 评论(0) 推荐(0) 编辑
摘要:如何保存更多的数据 为了保存更多的数据,通常使用大内存云主机和切片集群两种方法。实际上,这两种方法分别对应着redis应对数据量增多的两种方法:纵向扩展和横向扩展。 纵向扩展:升级单个redis实例的资源配置,包括增加内存容量、增加磁盘容量、使用更高配置的cpu。就像下图中,原来的实例内存是8GB, 阅读全文
posted @ 2022-09-28 11:58 忱康 阅读(115) 评论(0) 推荐(0) 编辑
摘要:上一节,了解了哨兵机制,它可以实现主从库的自动切换。通过部署多个实例,就形成了哨兵集群。哨兵集群中的多个实例共同判断,可以降低对主库下线的误判率。 但是,还有一个要考虑的问题:如果有哨兵实例运行时发生了故障,主从库还能正常切换吗? 实际上,一旦多个实例组成了哨兵集群,即使有哨兵实例出现故障挂掉了,其 阅读全文
posted @ 2022-09-27 16:53 忱康 阅读(131) 评论(0) 推荐(0) 编辑
摘要:哨兵其实就是一个运行在特殊模式下的redis进程,主从库实例运行的同时,它也在运行。哨兵主要负责的就是三大任务:监控、选主和通知。 我们先看监控。监控是指哨兵进程在运行时,周期性地给所有地主从库发送PING命令,检测他们是否仍然在线运行。如果从库没有在规定时间内响应哨兵地PING命令,哨兵就会把它标 阅读全文
posted @ 2022-09-27 14:25 忱康 阅读(111) 评论(0) 推荐(0) 编辑
摘要:Redis 缓存删除策略分为定时删除、定期删除与惰性删除。前两个是主动删除,后一个是被动删除。 1 定时删除 为 key 设置一个过期时间,时间一到,由定时器任务删除这个 key。 优点:节省内存,因为 key 一过期,就会被立即删除。 缺点:CPU压力大,因此相当于 CPU 在轮询判断当前时间是否 阅读全文
posted @ 2022-09-26 16:35 忱康 阅读(620) 评论(0) 推荐(0) 编辑
摘要:1.命令执行基于内存操作,一条命令在内存里操作的时间是几十纳秒 2.命令执行是单线程操作,没有线程切换开销 3.基于IO多路复用机制提升Redis的I/O利用率(Linux使用epoll) 4.高效率的数据存储结构:全局hash表以及多种高效数据结构,比如:跳表,压缩列表,链表等 阅读全文
posted @ 2022-09-23 11:40 忱康 阅读(10) 评论(0) 推荐(0) 编辑
摘要:Redis 6.0 版本之前的单线程指的是其网络I/O和键值对读写是由一个线程完成的 Redis 6.0引入的多线程指的是网络请求过程采用了多线程,而键值对读写命令仍然是单线程处理的,所以Redis依然是并发安全的。 持久化,集群数据同步等,其实是由额外的线程执行的。 总结:6.0网络I/O是多线程 阅读全文
posted @ 2022-09-21 16:36 忱康 阅读(40) 评论(0) 推荐(0) 编辑
摘要:普通索引:允许被索引的数据列包含重复的值。 唯一索引:可以保证数据记录的唯一性。 主键:是一种特殊的唯一索引,在一张表中只能定义一个主键索引,主键用于唯一标识一条记录,使用关键字 PRIMARY KEY 来创建。 联合索引:索引可以覆盖多个数据列,如像 INDEX(columnA, columnB) 阅读全文
posted @ 2022-09-21 15:54 忱康 阅读(201) 评论(0) 推荐(0) 编辑
摘要:mysql主从同步过程:mysql的主从复制主要有三个线程:master:二进制日志转储线程(binlog dump thread)、slave:I/O线程(I/O thread)和SQL线程(SQL thread).master一条线程和slave中的两条线程。 主节点binlog,主从复制的基础 阅读全文
posted @ 2022-09-19 20:29 忱康 阅读(240) 评论(0) 推荐(0) 编辑
摘要:基本概念 当前读读取的是记录的最新版本,读取时还要保证其他并发事务不能修改当前记录,会对读取的记录进行加锁。对于我们日常的操作,如:select … lock in share mode(共享锁),select …for update、update、insert、delete(排他锁)都是一种当前读 阅读全文
posted @ 2022-09-19 18:21 忱康 阅读(156) 评论(0) 推荐(0) 编辑
摘要:事务的基本特性ACID分别是:原子性(atomicity)事务是不可分割的最小操作单元,要么都成功,要么都失败。一致性(consistency)事务完成时,必须使所有的数据都保持一致状态。隔离性(isolation)数据库系统提供的隔离机制,保证事务在不受外部并发操作影响的独立环 境下运行。持久性( 阅读全文
posted @ 2022-09-18 17:03 忱康 阅读(66) 评论(0) 推荐(0) 编辑
摘要:执行计划是Mysql如何执行一条sql语句,包括sql查询顺序、是否使用索引、索引信息、查询命中率等信息。基本语法 explain select ... InnoDb引擎的执行计划内容 id:由一组数字组成,表示一个查询中各个子查询的执行顺序; id相同执行顺序由上之下id不同,id值越大优先级越高 阅读全文
posted @ 2022-09-18 16:14 忱康 阅读(110) 评论(0) 推荐(0) 编辑
摘要:基于锁的属性分类:共享锁、排它锁 基于锁的粒度分类:行级锁(InnoDB)、表级锁(InnoDB、MyISAM)、页级锁(BDB引擎)、记录锁、间隙锁、临键锁。 基于锁的状态分类:意向共享锁、意向排它锁。 共享锁 共享锁又称读锁,简称S锁;当一个事务为数据加上读锁之后,其他事务只能对该数据加读锁,而 阅读全文
posted @ 2022-09-09 18:16 忱康 阅读(122) 评论(0) 推荐(0) 编辑
摘要:2.3.2 IOC、IOC容器、Bean、DI 1.IOC(Inversion of Control)控制反转 (1)什么是控制反转呢? 使用对象时,由主动new产生对象转换为由外部提供对象,此过程中对象创建控制权由程序转移到外部,此思想称为控制反转。 业务层要用数据层的类对象,以前是自己new的 阅读全文
posted @ 2022-09-07 16:36 忱康 阅读(64) 评论(0) 推荐(0) 编辑
摘要:先看下《高性能MySQL》中对于他们的评价: InnoDB:MySQL默认的事务型引擎,也是最重要和使用最广泛的存储引擎。它被设计成为大量的短期事务,短期事务大部分情况下是正常提交的,很少被回滚。InnoDB的性能与自动崩溃恢复的特性,使得它在非事务存储需求中也很流行。除非有非常特别的原因需要使用其 阅读全文
posted @ 2022-09-07 15:55 忱康 阅读(107) 评论(0) 推荐(0) 编辑
摘要:脏写:A事务对一条数据修改,但未提交,B事务再次修改这条数据,A事务发生回滚,根据undolog恢复数据,B事务写的数据丢失了,发生了脏写。脏读:A事务对一条数据修改,但未提交,B事务读到这条修改后的数据,A事务进行回滚。B事务读到的是一条脏数据,产生脏读。不可重复读:在一个A事务中多次读取同一条记 阅读全文
posted @ 2022-09-06 17:42 忱康 阅读(210) 评论(0) 推荐(0) 编辑
摘要:聚簇索引和非聚簇索引(主键索引和非主键索引) 主键索引也被称为聚簇索引。 聚簇索引: 聚簇索引并不是一种单独的索引类型,而是一种数据存储方式。聚簇索引将索引和数据行放到了一块,找到索引也就找到了数据。因为无需进行回表操作,所以效率很高。 回表查询:InnoDB 中,对于主键索引,只需要走一遍主键索引 阅读全文
posted @ 2022-09-06 17:40 忱康 阅读(174) 评论(0) 推荐(0) 编辑