LAMPスタックで実行されているWebアプリケーションがあり、アプリケーションはさまざまなサービスに依存しています。これらのサービスは、(MySQL の) cron を使用して更新されているキャッシュ (memcached) からデータを取得します。Cron プロセスは 5 分ごとに実行されます。
このアプローチでは、キャッシュが 5 分ごとに更新されるため、最近更新されたデータを提供できません。
MySQL でデータが更新されるとすぐにキャッシュの更新をトリガーできるメカニズムはありますか?
これが最善の解決策かどうかはわかりませんが、できることは、挿入/更新/削除時に実行される MySQL トリガーを作成することです。
その MySQL トリガー内でUDF. そこから、UDFを使用して任意の PHP スクリプトを実行できますsys_exec()。
この問題に対する私の解決策は、たとえば、memcached クエリを使用する関数に MySQL クエリを含めることでした (Python では、PHP がわからないため、それを見て PHP に変更することができます)。
def insert(user,value):
#execute on memcached first
key="user:"+user
memcClient.set(key,value)
#then execute it on MySQL
cursor.execute("INSERT INTO tables VALUES (%s,%s)",(user,value))
db.commit()
また、削除と更新についても同じことを行います。申し訳ありませんが、PHP では実行できませんでした。私は 10 代のコーダーです。頑張ってください。
php レベルでのみ mysql の更新を特定し、それに応じて memcache を更新するのはどうですか?
<?php
if($update_db){ // if we need to update the db then update db & memcacache together !
// Code to Update the database ....
// Code to Reset the memcached keyvalue pair.
}
?>
Manu によって提案されたアプローチでは、キャッシュの更新を実現するために実際には必要のない高価な db トリガーを使用しています。