其中 类 Rails 可缓存
which classes are Rails cacheable
我的 class 在开发环境中缓存良好,但我可以确定生产环境,使用 memcache、redis 或其他 运行?我想知道除了字符串、数字和它们的数组之外,还有哪些数据类型可以用低级别 Rails.cache.write('mykey', myobj)
缓存?是否有一些标准可以查看给定的 class 是否保存到缓存?至少使用典型的缓存存储。
简答:ANY object.
更长的答案:默认情况下,objects over 1Kb will be compressed. And by default, the compression is done via Marshal.dump
。
The documentation for Marshal.dump
states:
Marshal can't dump following objects:
anonymous Class/Module.
objects which are related to system (ex: Dir, File::Stat, IO, File,
Socket and so on)
an instance of MatchData, Data, Method, UnboundMethod, Proc, Thread,
ThreadGroup, Continuation
objects which define singleton methods
因此,为了缓存属于上述类别的大型对象,您需要增加 compress_threshold
、设置 compress: false
或定义“压缩”数据的替代方法(?!).
我的 class 在开发环境中缓存良好,但我可以确定生产环境,使用 memcache、redis 或其他 运行?我想知道除了字符串、数字和它们的数组之外,还有哪些数据类型可以用低级别 Rails.cache.write('mykey', myobj)
缓存?是否有一些标准可以查看给定的 class 是否保存到缓存?至少使用典型的缓存存储。
简答:ANY object.
更长的答案:默认情况下,objects over 1Kb will be compressed. And by default, the compression is done via Marshal.dump
。
The documentation for Marshal.dump
states:
Marshal can't dump following objects:
anonymous Class/Module.
objects which are related to system (ex: Dir, File::Stat, IO, File, Socket and so on)
an instance of MatchData, Data, Method, UnboundMethod, Proc, Thread, ThreadGroup, Continuation
objects which define singleton methods
因此,为了缓存属于上述类别的大型对象,您需要增加 compress_threshold
、设置 compress: false
或定义“压缩”数据的替代方法(?!).