缓存可以说是最简单也是最复杂的概念。如果你用得好,你可以让你的应用飞起来。如果你不使用它,即使配置再高,你的App也难以发挥最佳性能。什么是缓存?缓存是直接访问数据的硬件或软件,而不是从原始来源(数据库、计算等)访问数据,这将加快数据的读取速度。内存缓存是我们经常使用的一种缓存技术。通过将常用的数据保存在内存中,我们可以避免从数据库中读取数据,这将大大提高应用程序的加载速度,改善用户体验。什么时候使用缓存当我们需要请求外部资源,比如第三方API时,我们希望缓存请求的结果当请求的数据发生变化时,我们可以缓存返回的结果当应用程序需要频繁请求同一个资源时当应用程序需要运行一些复杂的计算机时,当应用程序查询需要时间时,缓存的好处可以提高应用程序的性能,减少数据库的开销,增加缓存的并发性。类型缓存由服务器管理和控制,多个客户端节点存储数据,可以进一步提高数据读取速率。那么当我们要读取一些数据时,应该选择哪个节点呢?如果一个一个的去寻找节点,效率太低了。因此,需要根据一致性哈希算法来确定数据的存储和读取节点。根据数据D和节点总数N,通过一致性哈希算法计算出数据D对应的哈希值(相当于门牌号),根据哈希值可以找到对应的节点。一致性哈希算法的优点是当节点数量发生变化(减少或增加)时,无需重新计算哈希值,保证在存储或读取数据时能够正确快速的找到对应的节点。分布式缓存可以高性能读取数据,动态扩展缓存节点,自动发现和切换故障节点,自动平衡数据分区,并为用户提供图形化的管理界面,非常方便部署和维护。缓存策略(1)Cache-Aside先读取缓存,如果缓存失效,再读取数据库获取数据,然后将数据设置到缓存中。(2)ReadThrough应用程序只从缓存中获取数据。如果没有,缓存会从数据库中取数据,然后设置缓存,最后应用程序继续从缓存中读取数据。(3)WriteThrough应用程序保存数据时,首先保存在缓存中,缓存再将数据保存到数据库中。应用程序不直接与数据库打交道,只是将数据保存到缓存中。(44)WriteBack或WriteBehind应用程序将数据写入缓存,然后向应用程序发回确认,然后将缓存写入数据库。(5)WriteAround应用程序数据直接写到数据库中,这样读取的数据就从缓存中获取。总结一位伟人曾经说过,所有我们目前无法解决的计算机问题都可以通过增加一个中间层来解决,而缓存就是一个中间层。有了这个中间层,我们的应用性能得到了很大的提升。但是缓存也不是万能的,它也有它的弊端,只有合理的使用它才能发挥出它的最大价值。
