golang项目 - geecache
文章平均质量分 85
golang项目 - geecache
CCSU__LRF
破铜烂铁acmer
展开
-
go-geecache 总结和收获
这里我们定义了数据结构 Cache 包含一个双向链表和map,map表示真正的缓存,双向链表表示最近的缓存使用情况,然后定义一个entry,用来淘汰双向链表队首,根据key删除map数据。原创 2023-04-21 10:30:00 · 266 阅读 · 0 评论 -
【go项目-geecache】动手写分布式缓存 - day6 - 防止缓存击穿
概念可以看我这篇博客缓存穿透,缓存雪崩,缓存击穿概念及解决方法简单说一下缓存击穿,就是在缓存中找不到数据,导致直接访问数据库,降低效率。原创 2023-04-19 15:06:33 · 792 阅读 · 0 评论 -
【go项目-geecache】动手写分布式缓存 - day4 - 一致性哈希(hash)
首先把整个哈希值空间变成一个环,然后把key哈希放在环上,接着把value哈希放在环上,我们让value哈希的位置的顺时针的下一个key哈希作为对应关系 ,因为整个哈希空间是个环,这样即使某些节点增加或者减少,也只需要修改节点附近的对应关系。它的主要思想是将数据和节点映射到一个虚拟环形空间中,通过一致的哈希函数将数据均匀地分布在环上,然后根据节点在环上的位置将数据映射到相应的节点上,从而实现负载均衡。一致性哈希(Consistent Hashing)是一种常用的哈希算法,主要用于解决。原创 2023-04-18 21:33:26 · 432 阅读 · 0 评论 -
【go项目-geecache】动手写分布式缓存 - day4 - 一致性哈希(hash)
它的主要思想是将数据和节点映射到一个虚拟环形空间中,通过一致的哈希函数将数据均匀地分布在环上,然后根据节点在环上的位置将数据映射到相应的节点上,从而实现负载均衡。一致性哈希(Consistent Hashing)是一种常用的哈希算法,主要用于解决。最终达到的效果就是每个请求都会落在同一个节点上,提高了缓存效率,但是去缺点就是。这里如果hash函数为空,那么默认调用32位的CRC校验值。原创 2023-04-18 16:45:27 · 360 阅读 · 0 评论 -
【go项目-geecache】动手写分布式缓存 - day3 - HTTP 服务端
了解go函数的可变参数的使用,还有切片展开的方式即…了解了HTTP通信方式,hinder的使用了解了go.mod ,import 和modoule的使用分布式缓存需要实现点对点的通信,我们可以使用HTTP来实现节点之间的通信,如果说某个节点开始了HTTP服务,那么其他节点就可以进行通信}) {原创 2023-04-18 15:23:59 · 272 阅读 · 0 评论 -
【go项目-geecache】动手写分布式缓存 day2 - 单机并发缓存
了解接口的使用场景,它和函数之间的差别和优略势测试文件要以_test结尾系统设计要严谨,要考虑后期的拓展性和维护 ,比如load函数考虑到了分布式场景数据结构之间的封装。原创 2023-04-17 22:31:17 · 377 阅读 · 0 评论 -
【golang项目-GeeCache】动手写分布式缓存 day1 - 实现LRU算法
LRU(Least Recently Used) 最近最少使用 算法 ,系统认为如果这个数据最近使用过那么它被再次使用的概率会高,所以系统会先淘汰最久没被使用的数据。原创 2023-04-16 21:56:14 · 400 阅读 · 0 评论 -
【go项目-geecache】动手写分布式缓存 - day7 - 使用 Protobuf 通信
详情看这篇博客[【go】protobuf 基本介绍和window安装说明](【go】protobuf 基本介绍和window安装说明_CCSU__LRF的博客-CSDN博客。原创 2023-04-20 08:40:39 · 430 阅读 · 0 评论