我们有一个在生产环境中运行的memcached集群,作为MySQL顶层的缓存层。现在我们正在考虑用Couchbase替换memcached以避免冷高速缓存问题(在发生崩溃的情况下),并且具有托管高速缓存集群的这一功能。Couchbase:如何使缓存持久性成为一个选项?
与此同时,我们希望最小化迁移到Couchbase的更改。我们可以尝试的一种方法是维护libmemcached API并设置一个http代理来将所有请求定向到Couchbase。这样,应用程序代码中没有任何变化。如果我理解正确,那么Couchbase基本上就是一个托管的memcache集群。我们没有利用持久性缓存项目。我们不能这样做标记某个缓存项是持久性:
# connect to couchbase like connecting to memcached
$ telnet localhost 11211
SET foo "foo value" # How can we make this item persistent in Couchbase?
我想这是因为所有项目都存储在memcached的水桶。所以,问题就变成了:
- 我们可以控制哪些项目将被存储在Couchbase桶或 内存缓存斗?为此,我们是否必须更改libmemcached API以及与此相关的所有应用程序代码?
谢谢!
感谢您的回答。使用Moxi,如果我们想要混合使用Couchbase(持久性)和memcache(易失性)桶,我们必须定义一些类型的代理规则来选择性地保留一些项目。这能工作吗? –
据我所知,没有办法根据关键字来决定moxi决定哪个桶应该被缓存。这需要一个自定义代理。 –