目录

redis趣味解读

redis趣味解读

redis

https://i-blog.csdnimg.cn/img_convert/db1541de6649cc62bef5f62b6f911b40.jpeg

学习cpu给数据库也增加一个缓存

https://i-blog.csdnimg.cn/img_convert/f70dc09efe9eba2b47069fa9c3c4a5f7.jpeg

https://i-blog.csdnimg.cn/img_convert/5de80fe76be2063b4b87e888b389b469.jpeg

https://i-blog.csdnimg.cn/img_convert/9ccf9d4c0189530eeb998b574d324196.jpeg

https://i-blog.csdnimg.cn/img_convert/bd1a41d026ddd3e7df0afa64894eff90.jpeg

把数据都记录在内存

把数据都记录在内存中,不用去记录慢如蜗牛的 ,执行redis缓存查询节省不少时间

https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=https%3A%2F%2Fpic4.zhimg.com%2Fv2-6ff50a7c4e02100fc16ec9618f955281_1440w.jpg&pos_id=1xvkhVs9

https://i-blog.csdnimg.cn/img_convert/45c2030bb352453a6ff44da4758804f0.jpeg

定期删除

设置多少时间,交给应用程序自己设置

redis执行把过期内存删除,100ms就做一次,1秒钟就是10次

随机删除一部分,缓解内存压力

惰性删除

一些键值未被算法选中随机删除掉,已超期的,遇到查询请求立即删除。

https://i-blog.csdnimg.cn/img_convert/9e21b817500d7501bbf571ec905d6a80.jpeg

https://i-blog.csdnimg.cn/img_convert/c4697b962bf9a0727c51222fd44a570c.jpeg

过期时间均匀分布+热点数据永不过期

https://i-blog.csdnimg.cn/img_convert/09665bfd6f375c23ec1ad5e83130ea52.jpeg

https://i-blog.csdnimg.cn/img_convert/98e5a7f4cda4d729a87bb86fc497f746.jpeg

https://i-blog.csdnimg.cn/img_convert/7fe67bec328638b454b05e982b76ed98.jpeg

mysql –二进制数据,所有数据更改操作

https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=https%3A%2F%2Fpic4.zhimg.com%2Fv2-18cb8e663814c6486803ee1a14942189_1440w.jpg&pos_id=33tmeBqF

https://i-blog.csdnimg.cn/img_convert/af13b230148e9792e1afae8e9fe97912.jpeg

指令合并

https://i-blog.csdnimg.cn/img_convert/f9838428420239fdc0e8893da77c7ad7.jpeg

临时缓冲区aof_buf,择期写入aof

aof_rewrite_buf 重写缓冲区,从创建重写子进程的那一刻起,把后面进来的命令也copy一份写入这个重写缓冲区中,等到子进程重写文件结束后,再把这个缓冲区的命令写入到新的aof文件中,最后再重命名新的文件

与高可用原理

主节点:数据写入和同步

主节点数据写 给 同步,如果主节点有数据写入、删除、修改命令,也会把这些命令挨个通知到从节点

https://i-blog.csdnimg.cn/img_convert/fb101f8a1840f9bc19a654937d19314b.jpeg

主节点内部准备一个缓冲区,后面传播命令的时候,除了同步给从节点,也往缓冲区写一份。下次再掉线就把缓冲区里命令最近的发给从节点

https://i-blog.csdnimg.cn/img_convert/5a6681e7b8f1796f390f911216f07c78.jpeg

游标

https://i-blog.csdnimg.cn/img_convert/8bfda2877944047205a26f2d9fb9ba57.jpeg

https://i-blog.csdnimg.cn/img_convert/c94c313122146b511001f6362190970b.jpeg

哨兵

https://i-blog.csdnimg.cn/img_convert/adf8d919612370cd388ac719cfa81a7d.jpeg

https://i-blog.csdnimg.cn/img_convert/d7526c884aa94bc0e07cb73a2d31b02e.jpeg

故障转移

https://i-blog.csdnimg.cn/img_convert/08ab27d7fccf3a40db53cade8fd213a1.jpeg

新主节点选择标准

https://i-blog.csdnimg.cn/img_convert/98aa996917b63f008d4e57b6d7b8c5de.jpeg

https://i-blog.csdnimg.cn/img_convert/28cc36159612df77bc7ae2151a2e3c8b.jpeg

扩容

把主从节点内存拼起来,每个人负责一部分数据,合体进化成一个大的缓存服务器,变成一个集群,握手协议接纳新缓存服务器扩容

加入集群可以通过任何一个节点,有IP和端口,发送MEET信息发起握手,对方回复PONG信息,同意入伙,最后再回一个ping信息,三次握手就完成了,然后再通知其他节点。

https://i-blog.csdnimg.cn/img_convert/741cfbd6b8b0b7f1c95dec88e7619318.jpeg

数据存储公平

学习哈希表的方法

https://i-blog.csdnimg.cn/img_convert/b51a9acba675bb143580a0714328d0a7.jpeg

https://i-blog.csdnimg.cn/img_convert/ef3d89d39cf97bda6815f6a57a4774bd.jpeg

根据能力分配槽位,内存空间大的分的多

键值读写的时候,对键值做哈希计算,映射到哪个槽位就由谁负责,启动的时候,每个人都得把自己负责的槽位信息告诉其他节点,为了压缩空间,每个槽位就用一个bit来表示,自己负责的是1,否则是0,总共2048字节

https://i-blog.csdnimg.cn/img_convert/5b82a68cea8aa66d79c0960d407ed8a9.jpeg

https://i-blog.csdnimg.cn/img_convert/0c76de5e5371e6b619c072ace53c4f1f.jpeg

准备超大数组同步数据由谁处理

https://i-blog.csdnimg.cn/img_convert/b9dc6213e3431a0d8d33051cb9df73c1.jpeg

高可用哨兵+主从

https://i-blog.csdnimg.cn/img_convert/6b7a63aadfd85fdf59a7389bb751ce49.jpeg