摘要: @ I/O模式 阻塞I/O 非阻塞I/O I/O多路复用 信号驱动I/O 异步I/O I/O多路复用 I/O 多路复用 相较于多进程多线程技术区别在于一个进程或线程可以处理多个事件。I/O多路复用通过一种机制,可以监视多个描述符,一旦某个描述符就绪,能够通知相应的进程/线程进行相应操作 select 阅读全文
posted @ 2022-01-05 18:22 CJ-cooper 阅读(99) 评论(0) 推荐(0) 编辑
摘要: 虚拟内存 虚拟内存是计算机系统内存管理的一种技术,它使应用程序认为它拥有连续的可用的内存,而实际上它通常被分隔成多个物理内存碎片,还有部分存储在外部磁盘存储器上,在需要时进行数据交换。 程序使用的内存地址叫做虚拟内存地址,实际存在硬件的空间地址叫物理地址 进程通过虚拟地址来访问实际的物理地址 好处 阅读全文
posted @ 2021-12-13 18:22 CJ-cooper 阅读(137) 评论(0) 推荐(0) 编辑
摘要: Redis 过期键策略和内存淘汰策略 设置Redis键过期时间 Redis有四个不同的命令来设置生存时间(键可以存在多久)或过期时间(键什么时候会被删除)。 EXPIRE <key> <ttl> :表示将键 key 的生存时间设置为 ttl 秒。 PEXPIRE <key> <ttl> :表示将键 阅读全文
posted @ 2021-12-05 17:57 CJ-cooper 阅读(243) 评论(0) 推荐(0) 编辑
摘要: Sentinel(哨兵模式) 经过上期【Redis】主从复制 的学习, 我们知道 主从复制 是为了避免单点故障,将数据保存在多台服务器上的一种机制。 但是主节点只有一个,如果主节点挂掉了,怎么办?于是 哨兵模式 诞生了。 哨兵模式可以不时地监控 redis 是否按照预期良好的运行(至少是保证主节点是 阅读全文
posted @ 2021-12-05 15:53 CJ-cooper 阅读(187) 评论(0) 推荐(0) 编辑
摘要: 主从复制 为了避免单点故障,多个服务器保存同一份数据,这样即使有一台服务器出现了故障,其他服务器依然可以继续提供服务。 Redis 提供了主从复制模式来实现,该模式保证了多台服务器的数据一致性,主从服务器之间采用的是 读写分离的方式。 也就是说,所有的数据修改只在主服务器上进行,然后将最新的数据同步 阅读全文
posted @ 2021-12-04 00:24 CJ-cooper 阅读(62) 评论(0) 推荐(0) 编辑
摘要: 缓存雪崩、击穿、穿透 缓存雪崩 当大量缓存数据在同一时间过期(失效)或者 Redis 故障宕机时,如果此时有大量用户请求,都无法在Redis中处理,于是全部请求都直接访问数据库,从而导致数据库压力骤增,严重的会造成数据库宕(dang)机,从而形成一系列连锁反应,造成整个系统崩溃,这就是缓存雪崩 发生 阅读全文
posted @ 2021-11-30 16:12 CJ-cooper 阅读(63) 评论(0) 推荐(0) 编辑
摘要: MVCC MVCC(Multi-Version Concurrency Control),即多版本并发控制。是 innodb 实现事务并发与回滚的重要功能。锁机制可以控制并发操作,但是其系统开销较大,而MVCC可以在大多数情况下代替行级锁,使用MVCC,能降低其系统开销. 具体实现是在数据库的每一行 阅读全文
posted @ 2021-11-27 01:27 CJ-cooper 阅读(427) 评论(0) 推荐(0) 编辑
摘要: #力扣链接:146. LRU 缓存机制 思路:哈希表 + 双向链表 为什么必须要用双向链表? 因为我们需要删除操作。删除一个节点不光要得到该节点本身的指针,也需要操作其前驱节点的指针,而双向链表才能支持直接查找前驱,保证操作的时间复杂度 O(1)。 为什么要在链表中同时存储 key 和 val,而不 阅读全文
posted @ 2021-11-25 00:46 CJ-cooper 阅读(96) 评论(0) 推荐(0) 编辑
摘要: @ redo log(物理日志\重做日志) redo log是InnoDB存储引擎层的日志,又称重做日志文件,是物理日志。redo log记录数据修改后新数据的备份、冗杂的undo log、未提交的事务和回滚的事务,数据缓存到内存中,只是在事务提交前将redo log持久化到磁盘 redo log 阅读全文
posted @ 2021-11-24 20:41 CJ-cooper 阅读(390) 评论(0) 推荐(0) 编辑
摘要: redis中常见数据结构 SDS(简单动态字符串) SDS结构: { int len; //记录buf数组中已使用字节的数量,等于SDS所保存字符串的长度 int free; //记录buf数组中未使用字节的数量 char buf[]; //字节数组,用于保存字符串 } 比起C字符串,SDS优点: 阅读全文
posted @ 2021-11-16 20:19 CJ-cooper 阅读(172) 评论(0) 推荐(0) 编辑