Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 是否可以使用片段缓存指定缓存,或确定特定调用的缓存命中/未命中率_Ruby On Rails_Caching_Memcached - Fatal编程技术网

Ruby on rails 是否可以使用片段缓存指定缓存,或确定特定调用的缓存命中/未命中率

Ruby on rails 是否可以使用片段缓存指定缓存,或确定特定调用的缓存命中/未命中率,ruby-on-rails,caching,memcached,Ruby On Rails,Caching,Memcached,我们有一个Rails 4.2应用程序,目前正在跨多个应用程序使用共享缓存。我们的memcached未命中率相当高(比如85%的命中率和15%的未命中率),但由于多个应用程序共享同一个memcached实例,这一点变得复杂。因此,我们可能会在几个关键缓存进程中获得较高的未命中率(我们的DataDog数据将支持这一点) 是否可以在fragement缓存调用上指定缓存存储,如: cache(order, OrderCache) do # whatever end 我认为,通过执行以下操作,对象

我们有一个Rails 4.2应用程序,目前正在跨多个应用程序使用共享缓存。我们的memcached未命中率相当高(比如85%的命中率和15%的未命中率),但由于多个应用程序共享同一个memcached实例,这一点变得复杂。因此,我们可能会在几个关键缓存进程中获得较高的未命中率(我们的DataDog数据将支持这一点)

是否可以在fragement缓存调用上指定缓存存储,如:

cache(order, OrderCache) do
  # whatever
end 
我认为,通过执行以下操作,对象缓存可以做到这一点:

OrderCache =  ActiveSupport::Cache::MemCacheStore.new

是否有其他方法可以解决特定缓存操作的命中/未命中率问题?

也许这是一个复杂的想法,但我认为如果我正确理解您的问题,您可以制作自己的缓存存储包装器来决定使用哪个缓存存储

调用cache方法时,它最终在控制器上调用
read\u fragment
write\u fragment
,这些方法调用
cache\u store.read
cache\u store.write

然后,您可以拥有一个自定义缓存存储类,该类具有自定义的
read
write
方法,该方法根据选项将读写操作委托给实际缓存存储

类MyCacheStore<。。。
def初始化
@my_catchall_store=ActiveSupport::Cache::MemCacheStore.new
@我的订单存储=ActiveSupport::Cache::MemCacheStore.new
结束
def读取(键、选项)
案例选项[:存储]
时间:订单存储,然后@my\u订单存储。读取(键,选项)
其他的
@my_catchall_store.read(键,选项)
结束
结束
#类似于。写
然后你用它就像

cache(:order,store::order\u store)do
#一些代码
结束
缓存(:你做的其他事情)
#一些代码
结束
我不知道你是不是在问这个对不起