Skip to content

jay77721/KamaCache-Go

Repository files navigation

KamaCache

什么是缓存

缓存是将高频访问的数据暂存到内存中,是加速数据访问的存储,降低延迟,提高吞吐率的利器。

为什么要实现缓存系统

因缓存的使用相关需求,通过牺牲一部分服务器内存,减少对磁盘或者数据库资源进行直接读写,可换取更快响应速度。

尤其是处理高并发的场景,负责存储经常访问的数据,通过设计合理的缓存机制提高资源的访问效率。

由于服务器的内存是有限的,我们不能把所有数据都存放在内存中,因此需要一种机制来决定当使用内存超过一定标准时,应该删除哪些数据,这就涉及到缓存淘汰策略的选择。

在什么地方加缓存

距离用户越近,缓存能够发挥的效果越好。

缓存的顺序:用户请求->HTTP缓存->CDN缓存->代理服务器缓存->进程内缓存->分布式缓存->数据库

根据 缓存的存储方式 和 应用的耦合度,缓存可以分为 本地缓存(Local Cache) 和 分布式缓存(Distributed Cache)。

本地缓存更注重 访问速度,而分布式缓存则关注 数据一致性和扩展性。

分布式缓存(Distributed Cache)

分布式缓存是一种 独立部署的缓存服务,与应用进程分离,多个应用实例共享同一份缓存数据,典型实现包括 Redis、Memcached、etcd。

优势

1、支持大规模存储:

  • 缓存数据分布在多个服务器上,不受单机内存限制,可扩展存储空间。
  • 例如:Redis Cluster 支持横向扩展,通过分片技术存储 TB 级数据。

2、数据一致性更高:

  • 由于所有应用节点共享同一份缓存数据,不同服务器间的缓存一致性更容易保证。
  • 例如:所有服务器都访问 Redis,数据变更时只需更新 Redis 即可同步到所有应用实例。

3、高可用性:

  • Redis Sentinel 或 主从复制 方案可提供 缓存高可用性,即使某个缓存节点宕机,仍可快速切换到备用节点,避免单点故障。
  • 持久化机制(AOF/RDB) 使 Redis 在服务器重启后仍能恢复数据,保证缓存数据不会丢失。

4、适用于分布式系统:

  • 现代应用通常采用 多实例部署(如 Kubernetes 微服务架构),本地缓存难以满足数据共享需求,而 分布式缓存天然适用于多实例环境。

##源项目地址 https://github.com/youngyangyang04/KamaCache-Go?tab=readme-ov-file

许可证

MIT License

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages