在Rails中的缓存存储比较表
比较表 – Bi3jiao4 Biao3
我主要比较了优缺点,并总结了使用场景。
FileStore MemoryStore MemCacheStore RedisStore プロセス間共有○✗○○スレッドセーフ○○○○ホスト間共有✗✗○○無料○○✗✗expires_in可否✗✗○○速さやや速い速い遅い遅い削除アルゴリズム手動で削除する必要ありLRU(LRU: Least Recently Used)LRULFUやLRUを選択利用シーン中規模サイトかつホスト数も少ない場合キャッシュデータが小さい時(20MB以下)ホストが多い場合
大規模なアプリケーションホストが多い場合
大規模なアプリケーション注意点ディスクを圧迫メモリを圧迫キャッシュデータ制限
仕組み特定のファイルに保存していくスレッド毎にRAMに保存していくMemcache serverに保存していくRedis serverに保存していく
大規模なアプリケーションホストが多い場合
大規模なアプリケーション注意点ディスクを圧迫メモリを圧迫キャッシュデータ制限
仕組み特定のファイルに保存していくスレッド毎にRAMに保存していくMemcache serverに保存していくRedis serverに保存していく
快速度的方面
遅い <——————————————————————————————————————————> 速い
RedisStore, MemCacheStore < FileStore < MemoryStore
价格方面 (jià gé
In terms of price.
安い <-————————————————————————————————————————> 高い
FileStore, MemoryStore < MemCacheStore, RedisStore
感觉
文件存储和内存存储
如果缓存数据量较小且主机数量较少的小规模应用程序,我觉得使用快速且廉价的MemoryStore或FileStore比较合适。
然而,由于这两种都需要对每个线程或进程进行缓存管理,如果不能很好地管理缓存更新,可能会导致一系列的错误。
所以我认为在使用时只需要以下两个选项。
-
- 滅多に更新しないデータのみをキャッシュする場合に使用する
- 開発環境だけ使用する
MemoryCache存储和Redis存储
我认为MemCacheStore和RedisStore能够存储大量数据,并且由于不将数据保存在每个进程或主机上,所以很少出现错误。因此,我认为它们在生产环境中经常被使用。此外,MemCacheStore和RedisStore可以使用expires_in选项来指定数据的有效期限。
由于通过网络实现,因此在实施时需要考虑是否比从缓存中获取数据更快执行。
RedisStore的好处
RedisStore提供了选择LRU或LFU算法以及可以将数据保持到磁盘上的优点。LRU和LFU是以下算法的简称。
-
- LRU(Least Recently Used): 直近の利用が最も少ないキャッシュを削除するアルゴリズム
- LFU(Least Frequently Used): 利用頻度が最も低いキャッシュを削除するアルゴリズム
Redis 4.0开始支持LFU策略。
请参阅
Rails指南:Rails缓存机制
使Rails应用加快66%速度 – 完全指南Redis文档