👌本地缓存与分布式缓存的区别?
题目详细答案
概念
本地缓存:是指将数据缓存在应用程序所在的服务器或客户端的内存中。本地缓存的数据存储在应用程序的单个节点上。比如大家启动的应用里面用 hashmap 存储的数据,或者一些三方缓存,caffine,guava cache 这些都是本地缓存,特性在于缓存只存在这台机器。其他机器不知道。本地缓存重起之后,缓存就会失效。
分布式缓存:像 redis 这种就是分布式缓存,一个 redis 存储后,多个应用都可以来进行访问。同时自身支持集群模式,缓存数据可以分散存储在多个节点上。
区别对比
本地缓存 cacffine/guava cache | redis | |
---|---|---|
速度 | 位于应用程序所在的内存中,因此访问速度非常快 | 在网络上进行数据传输,可能会增加额外的网络开销,导致访问速度略低于本地缓存。 |
存储 | 存储在一个节点中,多个应用实例之间无法共享缓存数据。数据随应用进程的重启而丢失。 | 通过将数据分片存储在多个节点上,提高了缓存的容量和可扩展性。部分数据会被复制到多个节点上,以提高数据的可靠性和可用性 |
容量 | 容量受到内存大小的限制,一旦超过容量限制,可能会导致性能下降或者数据丢失。无法动态扩展。 | 根据需求动态添加和删除节点,以适应数据量的变化和访问负载的增加。redis 水平扩展。 |
扩展
当并发巨大的时候,如果 redis 的网络和 cpu 成为了瓶颈,一般可以增加一层本地缓存来进行缓冲。也就是我们说的多级缓存。