【翻译】10个破坏程序的缓存错误

简介:

翻译自10 Program Busting Caching Mistakes

距Omar AI Zabir发表十个中断你应用程序的缓冲错误(Ten Caching Mistakes that Break your App)已经好几年了,它依然是一个关于缓存使用的建议的极好资源,尤其是使用本地内存中的缓存和使用分布式缓存的区别。

这里是10个错误。(总结):

  1. 依靠一个默认的串行器。默认的串行器会消耗大量CPU,特别是复杂类型。为你的语言和环境花点思维考虑最好的序列化和反序列化模式。
  2. 把大型对象存储到一个单一的缓存项。因为序列化和反序列化开销,在并发负载下,频繁的访问大型对象图标会杀掉你的服务器CPU。取而代之的是把达标拆成小的子表,然后分别缓存。只检索你需要的最小单元。
  3. 在线程之间使用缓存共享对象。竞争条件,当写被包含,开发中如果遇到程序某部分需要同时存取相同缓存项。那么某种形式的外部锁机制是必要的。
  4. 假设数据项保存之后会被立即缓存。永远不要假设一个数据项会在缓存中,即使这只是写操作,因为一个缓存会刷新数据项,当内存紧张时。代码应该总是检查读取缓存的返回值是否为空。
  5. 存储整个嵌套对象集合。因为序列化的开销。如果存储了整个集合,那么当你需要获取一个详细的数据项时会导致一个贫乏的性能。
  6. 存储主从关系对象一起也分开。有些时候一个对象会同时包含到两个或更多父对象。不要把相同的对象用各自的key存储到缓存中两个不同的地方。父对象当需要访问时会读取这个对象。
  7. 缓存配置设置。存储配置数据在本地进程的静态变量中。访问缓存数据是昂贵的,因此,在可能的时候,你会想要避免这个开销。
  8. 缓存打开处理流的活动对象,文件,注册中心,或者网络。不要缓存有引用资源的对象,比如文件,数据流,内存等等。当缓存项被从缓存中删除时,这些资源依然没有被删除,然后系统资源就会泄露。
  9. 用多个key存储相同的数据项。它能让你通过key和一个索引编码方便的访问一个数据项。当缓存在内存中时,这能工作,因为缓存能包含一个引用指向相同的项目,因为对象的改变会通过访问路径发现。当使用一个远程缓存,任何更新不再显而易见,因此这个项目会不再同步。
  10. 在从永久性存储设备中更新或删除数据之后没有更新或删除缓存中的数据项。在远程缓存中的数据项是用拷贝的方式存储的,因此更新一个对象不会更新缓存。缓存必须专门为了被其他人看到改变而更新。内存中的缓存对象变更会被任何一个看到。和删除相同,删除一个对象不会把它从缓存中删除。缓存项的正确删除需要由程序来保证。

转载请注明:旅途@KryptosX » 【翻译】10个破坏程序的缓存错误

目录
相关文章
|
27天前
|
存储 缓存 算法
【C/C++ 性能优化】提高C++程序的缓存命中率以优化性能
【C/C++ 性能优化】提高C++程序的缓存命中率以优化性能
113 0
|
2月前
|
缓存 Java 数据库
优化您的Spring应用程序:缓存注解的精要指南
优化您的Spring应用程序:缓存注解的精要指南
45 0
|
2月前
|
缓存 监控 安全
如何使用LRU缓存来提高程序的性能?
如何使用LRU缓存来提高程序的性能?
20 3
|
9月前
|
存储 缓存
关于为什么使用缓存能提高程序执行效率
关于为什么使用缓存能提高程序执行效率
70 0
|
9月前
|
缓存 固态存储 Ubuntu
十七、Linux性能优化实战学习笔记-如何利用系统缓存优化程序的运行效率?
Buffer 和Cache 的设计目的,是为了提升系统的 I/O 性能。它们利用内存,充当起慢速磁盘与快速CPU 之间的桥梁,可以加速 I/O 的访问速度。
184 0
|
9月前
|
存储 缓存 数据库
极速Python编程:利用缓存加速你的应用程序
在软件开发中,缓存是一种常用的技术,用于提高系统性能和响应速度。Python提供了多种缓存技术和库,使我们能够轻松地实现缓存功能。本文将带您从入门到精通,逐步介绍Python中的缓存使用方法,并提供实例演示。
222 0
|
11月前
|
存储 缓存 算法
Python缓存神器cachetools:提高程序性能的利器,一文详解其缓存算法
Python缓存神器cachetools:提高程序性能的利器,一文详解其缓存算法
Python缓存神器cachetools:提高程序性能的利器,一文详解其缓存算法
|
存储 缓存 移动开发
前端开发面试题—HTML5应用程序缓存 (离线存储)
今天分享一下我遇到的前端面试题,什么是HTML5应用程序缓存 (离线存储) ?
202 0
前端开发面试题—HTML5应用程序缓存 (离线存储)
|
缓存 前端开发 JavaScript
前端培训-中级阶段(23)- Manifest ApplicationCache应用程序缓存(2019-10-31期)
前端最基础的就是 HTML+CSS+Javascript。掌握了这三门技术就算入门,但也仅仅是入门,现在前端开发的定义已经远远不止这些。前端小课堂(HTML/CSS/JS),本着提升技术水平,打牢基础知识的中心思想,我们开课啦(每周四)。
152 0
前端培训-中级阶段(23)- Manifest  ApplicationCache应用程序缓存(2019-10-31期)
|
存储 SQL 缓存
使用IndexedDB缓存给WebGL三维程序加速
使用IndexedDB缓存给WebGL三维程序加速

热门文章

最新文章