0

クエリを取得してmd5を実行し、結果をmemcachedDBにキャッシュするmysqlプロキシを実行しています。この問題は、そのキャッシュを無効にする更新がRailsアプリで発生したときに発生します。その時点でキャッシュ内のすべての適切なキーを無効にする方法についてのアイデアはありますか?

4

1 に答える 1

0

問題の核心は、キーが md5 で生成されているため、キーが何であるかがわからないことです。

ただし、そのクエリのデータを保存しないことで問題を軽減できます。

クエリは、「SELECT my_data.* FROM my_data WHERE 条件」のようになります。

ただし、代わりにこのクエリを使用することで、データの冗長性を減らすことができます

SELECT my_data.id FROM my_data WHERE 条件

その後、

Memcache.mget( ids )

これにより、条件に一致しなくなったデータの返却が禁止されることはありませんが、古いデータの返却が軽減される可能性があります。

--

別のオプションは、名前空間の使用を検討することです: ここを参照してください:

http://code.google.com/p/memcached/wiki/NewProgrammingTricks#Namespacing

すべての主要なクエリの名前を付けることができます。キーを削除することはできませんが、キーのバージョン ID を変更することはできます。これにより、事実上、データが期限切れになります。

論理的に面倒ですが、いくつかの悪いクエリで使用できます。

--

最後に、これらのクエリを別の memcache サーバーに保存し、より頻繁にフラッシュすることができます。

于 2010-10-08T15:14:54.693 に答える