3

Redis に特定のキャッシュ システムがあります。

このシステムの内容は非常に不安定で、値は常に追加および削除されます。古いキーを期限切れにする間、「使用済み」キーをできるだけメモリに保持したいと考えています。各リクエストには、キャッシュから数百のキーが必要になる場合があります。

「十分に長い」有効期限を設定できることを認識しており、キャッシュミスに対処しましたが、ミスをできるだけ少なくしたいと考えています。

現在、キャッシュに書き込み/読み取りを行っているときに、このようなことを行っています(疑似コード)

# write
write(key, value)
expire(key, ttl)

# read
read(key)
expire(key, ttl)

パイプラインを使用して読み取りを最適化できます。

今でも、これは最善の方法ではないようです。誰かが私にもっと良い戦略を教えてもらえますか?

4

3 に答える 3

3

10 秒の (現在の) 解像度で生活できる場合、OBJECT IDLETIMEコマンドを使用すると、しばらく使用されていないものをよりよく理解できます (10 秒のブロックで)。

> SET X 10
OK
> OBJECT IDLETIME X
10
于 2013-11-05T06:20:04.833 に答える
0

達成しようとしているのが完全な LRU キャッシュ (最近使用されていない) である場合、Redis を調整してグローバルにこのように動作させることができます。LRU としての Redis に関するリンクは次のとおりです: http://oldblog.antirez.com/post/redis -as-LRU-cache.html

redis で maxmemory プロパティを使用しており、揮発性 LRU を見ない限り、エビクション ルールはグローバルであることに注意してください: Redis に一部のキーのみの LRU エビクション ポリシーを選択させるには?

最も強力なソリューションであるカスタムの有効期限/TTL を使用したエビクションの手動ソリューションを使用していますが、このソリューションを使用すると、構成を簡素化し、メモリ サイズの予測可能なキャッシュを向上させることができます。

于 2013-11-06T14:13:28.390 に答える