1

LAMPスタックで実行されているWebアプリケーションがあり、アプリケーションはさまざまなサービスに依存しています。これらのサービスは、(MySQL の) cron を使用して更新されているキャッシュ (memcached) からデータを取得します。Cron プロセスは 5 分ごとに実行されます。

このアプローチでは、キャッシュが 5 分ごとに更新されるため、最近更新されたデータを提供できません。

MySQL でデータが更新されるとすぐにキャッシュの更新をトリガーできるメカニズムはありますか?

4

3 に答える 3

2

これが最善の解決策かどうかはわかりませんが、できることは、挿入/更新/削除時に実行される MySQL トリガーを作成することです。

その MySQL トリガー内でUDF. そこから、UDFを使用して任意の PHP スクリプトを実行できますsys_exec()

トリガーについて読む

UDF について読む

sys_exec()使用方法などについて読む

于 2013-05-04T18:42:30.713 に答える
1

この問題に対する私の解決策は、たとえば、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 代のコーダーです。頑張ってください。

于 2015-09-27T19:42:20.187 に答える
0

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 トリガーを使用しています。

于 2013-05-06T16:25:27.390 に答える