摘要: redis通讯协议是基于RESP来实现的。由于redis过于优秀,所以很多公司内部的私有缓存也会去兼容RESP协议。 RESP本质是一种文本协议。也就是说,你直接抓包,是能看见明文的。 抓包命令: 因为我客户端和服务器是同一台,所以走的是环回口。 tcpdump -i lo port 7000 -A 阅读全文
posted @ 2023-07-12 23:22 拿什么救赎 阅读(53) 评论(0) 推荐(0) 编辑
摘要: 客户端结构体用来存储client端连接的所有信息。 typedef struct client { uint64_t id; /* Client incremental unique ID. */ connection *conn; int resp; /* RESP protocol versio 阅读全文
posted @ 2022-07-12 16:39 拿什么救赎 阅读(77) 评论(0) 推荐(0) 编辑
摘要: 1.对象结构体robj typedef struct redisObject { unsigned type:4; unsigned encoding:4; unsigned lru:LRU_BITS; /* LRU time (relative to global lru_clock) or * 阅读全文
posted @ 2022-07-11 23:45 拿什么救赎 阅读(118) 评论(0) 推荐(0) 编辑
摘要: mapreduce负责计算: map阶段并行处理输入数据。 reduce阶段负责对map的结果进行汇总。 yarn是hadoop的资源管理器。管理cpu和内存。 相关组件: resourcemanager:管理整个集群的资源 nodemanager:管理单节点服务器资源 applicationmas 阅读全文
posted @ 2022-07-06 16:56 拿什么救赎 阅读(34) 评论(0) 推荐(0) 编辑
摘要: hdfs是hadoop负责存储的模块。 分布式存储。 比如你有200T的资料。但是你只有200台1T的服务器。那么就可以用hdfs来做分布式存储。 用来管理数据具体存在哪的组件叫namenode。所以namenode就需要高可用,不然你不知道某1T的资料具体存在哪里。这就需要2NN,用来辅助name 阅读全文
posted @ 2022-07-06 16:17 拿什么救赎 阅读(198) 评论(0) 推荐(0) 编辑
摘要: mysql复制的最小单位是event,而不是一条一条的SQL语句。(binlog_format一定为row,否则主从数据可能会不一致。其实哪怕为row格式了,也可能不一致。) 为了保障数据一致性必须设置的参数: sync_binlog=1 innodb_flush_log_at_trx_commit 阅读全文
posted @ 2022-07-04 15:02 拿什么救赎 阅读(32) 评论(0) 推荐(0) 编辑
摘要: 锁是一种很珍贵的资源。锁一定是并发场景下才会出现的。 保证数据的隔离性,一致性。 1.latch 这个锁存在于内存中,用来控制并发访问的,保护的是内存数据结构。他锁住的是并发资源。就是临界区。 就是java和golang中的mutex。 他加锁的对象是线程。持续时间是临界时间。只有读写锁和互斥量。并 阅读全文
posted @ 2022-06-29 17:30 拿什么救赎 阅读(199) 评论(0) 推荐(0) 编辑
摘要: 涉及的内容很多,慢慢写。 1.ACID 原子性 atomicity redo有关 一致性 consistency undo有关 隔离性 isolation lock有关(mysql中只有可串行化能保障,哪怕是rr也不能完全保障隔离性) 持久性 durable redo + undo有关 2.脏读,不 阅读全文
posted @ 2022-06-28 18:36 拿什么救赎 阅读(41) 评论(0) 推荐(0) 编辑
摘要: 1.Double write 这个特性,主要是为了保证数据的持久性或者说是可靠性。 为什么会有这个特性的出现。主要的原因是。内存中,最小的单元是什么?bit,0和1。但是磁盘上哪?对于MySQL来说,是页。 也就是说,在往磁盘中写数据的时候,如果一个16k的页,你写到8k的时候,掉电了,或者mysq 阅读全文
posted @ 2022-06-28 15:12 拿什么救赎 阅读(28) 评论(0) 推荐(0) 编辑
摘要: checkpoint机制,主要干的事情就是把脏页刷新到磁盘。 数据库只能保证最终一致性。你在数据库运行的时候,磁盘上的数据和内存中的数据不一致太正常了。 另外checkpoint也能保证数据库在挂了,或者出事了之后,缩短他的恢复时间。这个很好理解,MySQL有redo和binlog去保证事务的持久性 阅读全文
posted @ 2022-06-28 00:47 拿什么救赎 阅读(376) 评论(0) 推荐(0) 编辑