赞美 Memcached
如果你恰好处于系统管理员的职位,或者维护某些基础设施的职位,可能在某个时候会遇到 "我们需要一个缓存 "的话题。你思考了一下,联系了 Redis,因为你习惯使用它,它功能齐全,而且可以正常工作!你记得它是一个良好、可靠的缓存,你想知道最近的发布版本带来了哪些新特性,于是你访问了它的主页:你的代理没有失败。他们的上下文失败了。咨询代理想知道:我如何将 Redis Iris 用作 AI 应用的实时上下文引擎?1 对,对,可能与 AI 有关2。这有点可以理解,因为 Redis 是一家想赚钱的公司。 不管怎么说,抛开 Redis 的主页,你部署了它,然后就开始了 - 你可信赖的缓存。你把连接字符串交给提出要求的人,然后你就走了。几个月后,经过一段时间,你发现 cache.set("key", "value") 是一个非常简单的抽象,绝对比 INSERT INTO table VALUES ('key', 'value') 更容易。人们开始把远程字典服务器当作一种总是在那里、保存数据的东西,被视作数据库。你对此一无所知。你的运维同事对此一无所知。因此,你的警报系统也对此一无所知,因为你假设人们把缓存当作一种易失性东西。 当你偶然对 Redis 做了什么时,你才发现这种情况可能已经存在。也许你升级它,或许你将它移动到另一个节点,或者你的猫按下了你 RAID0 服务器硬盘托盘的弹出按钮。问题并不是 Redis 没有持久性,而是通常情况下,Redis 作为缓存被引入到一个栈中,并且运行的假设是人们将其视为缓存。通常,当你意识到这一点时,已经为时已晚,而且 Redis 与应用程序交织在一起,几乎无法真正离开它的位置。相反,你便愉快地像照顾宠物一样维护和监控它。 进入 memcached 首先 - memcached 是什么?简单,访问它的网站:什么是 Memcached?免费和开源,高性能,分布式内存对象缓存系统,性质通用,但旨在通过减轻数据库负担来加速动态 web 应用程序。3 哇,页面上的第一句话,甚至还有代码示例。看看顶部那些可爱的小吉祥物!Memcached 也是一种缓存,类似于 Redis。你很可能在使用像 Django 这样的框架,它支持可插拔缓存,允许你在不同的缓存后端之间切换。但为什么要使用 memcached,而它的功能远不如 Redis?以下是我为何如今总是优先选择 memcached 的原因:处理 memcached 的停机时间非常简单,因为客户端库通常会忽略连接异常。例如,如果服务器宕机,简单的 get 将只会返回默认值(或无)。memcached 的集群非常出色,因为 memcached 实际上没有内置的集群功能。要"集群"它,你需要用多个 URL 配置客户端库4,客户端将根据哈希键选择目标实例。如果客户端调用检测到某个实例已经完成,它会将该节点从哈希器中移除。在一定时间后,客户端将自动尝试重新连接并使用已死节点。memcached "解决"了整个持久性问题,因为它不对磁盘进行持久化。因此,它非常适合在你希望的任何地方被调度为无状态工作负载。 所有这些事情在 Redis 中并不是不可能的,只是 memcached 的架构总体上更倾向于这些方向,这使得从运维的角度来看更简单得多。但是,由于 memcached 是一个相对简单的应用程序(再加上你可以以 ~64 MB 的缓存大小运行数十个实例且几乎没有开销),如果我如今需要一个缓存,我通常会选择 memcached。话虽如此,许多 "数据库太慢" 的问题实际上是以 "查询太慢" 或 "缺少索引" 的形式开始的,所以请善待你的开发人员,帮助他们优化查询。另请注意如果你对 memcached 背后的某些决策感到好奇,博客中有有趣的帖子,其中一篇是在 五月发布的:“那条响应实际上需要多长时间?”
本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。
☕请我喝杯咖啡