摘要:
队头阻塞(Head-of-line blocking)其实有两种,一种是 TCP 队头阻塞,另一种是 HTTP 队头阻塞,而这两者之前其实还存在一定的联系,毕竟 HTTP1/2 是建立在 TCP 协议之上的应用层协议,另外还有HTTP3对队头阻塞的解决。 1、HTTP/1.x 的队头阻塞 HTTP/ 阅读全文
摘要:
一、长连接与短连接 TCP 本身并没有长短连接的区别,长短与否,完全取决于我们怎么用它。 短连接:每次通信时,创建 Socket;一次通信结束,调用 socket.close()。这就是一般意义上的短连接,短连接的好处是管理起来比较简单,存在的连接都是可用的连接,不需要额外的控制手段。长连接:每次通 阅读全文
摘要:
所谓的事务,就是指对数据进行读写的一系列操作。事务在执行时,会提供专门的属性保证,包括原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability),也就是 ACID 属性。 这些属性既包括了对事务执行结果的要求,也有对数据库在事务执行前 阅读全文
摘要:
哈希算法经常会被用到,比如我们Go里面的map,Java的HashMap,目前最流行的缓存Redis都大量用到了哈希算法。它们支持把很多类型的数据进行哈希计算,我们实际使用的时候并不用考虑哈希算法的实现。而其实不同的数据类型,所使用到的哈希算法并不一样。 DJB 下面是C语言实现。初始值是5381, 阅读全文
摘要:
Redis 的哨兵机制自动完成了以下三大功能,从而实现了主从库的自动切换,可以降低 Redis 集群的运维开销: 监控主库运行状态,并判断主库是否客观下线; 在主库客观下线后,选取新主库; 选出新主库后,通知从库和客户端。 一、为什么需要哨兵 主从模式下,如果主库发生故障了,那就直接会影响到从库的同 阅读全文
摘要:
一、主从模式 主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(master),后者称为从节点(slave);数据的复制是单向的,只能由主节点到从节点。 默认情况下,每台Redis服务器都是主节点;且一个主节点可以有多个从节点(或没有从节点),但一个从节点只能 阅读全文
摘要:
以ChatGPT为代表的AIGC(人工智能生成内容)将成为新一轮范式转移的开始。 需要声明,我并不是人工智能专业,只是在愈演愈烈的AI焦虑下,不想被这个技术潮流割韭菜,为此我特意搜集了大量资料,体系化的梳理了AIGC相关的信息。 本文约4000字,目标是快速建立AIGC知识体系,含有大量的计算专业名 阅读全文
摘要:
缓冲区(buffer),是内存空间的一部分。也就是说,在内存空间中预留了一定的存储空间,这些存储空间用来缓冲输入或输出的数据,这部分预留的空间就叫做缓冲区。 一、Redis缓冲区溢出影响 在Redis中,主要有三个场景用到了缓冲区的概念。 在客户端和服务器端之间进行通信时,用来暂存客户端发送的命令数 阅读全文
摘要:
List(版本3.2之前)、Hash 和 Sorted Set 这三种数据类型,都可以使用压缩列表(ziplist)来保存数据。 新版本Redis的quickList底层也是采用zipList支持,Redis版本更新频繁,本文不保证时效性。 一、ziplist结构 ziplist 是一个特殊双向链表 阅读全文
摘要:
通常我们如果要设计一个 Hash 表,那么我们需要考虑这几个问题: 有没有并发操作 Hash冲突如何解决 以什么样的方式扩容 对 Redis 来说,首先它是单线程的工作模式,所以不需要考虑并发问题。 想实现一个性能优异的 Hash 表,就要重点解决哈希冲突和 rehash 开销这两个问题。 一、哈希 阅读全文
摘要:
Redis 是内存数据库,高效使用内存对 Redis 的实现来说非常重要。 看一下,Redis 中针对字符串结构针对内存使用效率做的设计优化,版本为Redis3.2。 一、SDS的结构 c语言没有string类型,本质是char[]数组;而且c语言数组创建时必须初始化大小,指定类型后就不能改变,并且 阅读全文
摘要:
一、逻辑存储结构 1、表空间 (Tablespace) 表空间 (Tablespace)是一个逻辑容器,在一个表空间中可以有一个或多个段,一个段只能属于一个表空间。数据库由一个或多个表空间组成,表空间从管理上可以划分为系统表空间、用户表空间、撤销表空间、临时表空间等。 2、段 (Segment) 段 阅读全文
摘要:
利用 WAL 技术,数据库将随机写转换成了顺序写,大大提升了数据库的性能,由此也带来了内存脏页的问题。 脏页会被后台线程自动 flush,也会由于数据页淘汰而触发 flush,而刷脏页的过程由于会占用资源,可能会让你的更新和查询语句的响应时间长一些。 一、flush 脏页 当内存数据页跟磁盘数据页内 阅读全文
摘要:
随着 ChatGPT 热潮卷起来,百度发布了文心一言、Google 发布了 Bard,「阿里云」官方终于也宣布了,旗下的 AI 大模型“通义千问”正式开启测试! 申请地址:https://tongyi.aliyun.com/ 阿里云的 Ai 模型名为“通义千问”,由达摩院开发,也是一款 NLP 大语 阅读全文
摘要:
CheckPoint是MySQL的WAL和Redolog的一个优化技术。 一、Checkpoint机制 CheckPoint做了什么事情?将缓存池中的脏页刷回磁盘。 checkpoint定期将db buffer的内容刷新到data file,当遇到内存不足、db buffer已满等情况时,需要将db 阅读全文