キャッシュは一般に、所定のキーで値(通常はシリアル化された値)を格納できる非常に高速なキー/値ストレージエンジンであるため、格納された値を同じキーで取り出すことができます。
MySQLに関しては、データベースにリクエストを発行する前に、キャッシュにデータが存在するかどうかをチェックするような方法でアプリケーションコードを記述します。一致するものが見つかった場合(一致するキーが存在する場合)、そのキーに関連付けられたデータにアクセスできます。目標は、避けることができれば、よりコストのかかるデータベースに要求を出さないことです。
例(実証のみ):
$cache = new Memcached();
$cache->addServer('servername', 11211);
$myCacheKey = 'my_cache_key';
$row = $cache->get($myCacheKey);
if (!$row) {
// Issue painful query to mysql
$sql = "SELECT * FROM table WHERE id = :id";
$dbo->prepare($sql);
$stmt->bindValue(':id', $someId, PDO::PARAM_INT);
$row = $stmt->fetch(PDO::FETCH_OBJ);
$cache->set($myCacheKey, serialize($row));
}
// Now I have access to $row, where I can do what I need to
// And for subsequent calls, the data will be pulled from cache and skip
// the query altogether
var_dump(unserialize($row));
詳細はmemcached上のPHPのドキュメントをチェックし、いくつかの良い例とのコメントがあります。
通常の変数をmemcachedに保存できますか?それは実践ですか? –
具体的に言えば、私は、アプリケーション全体で使用される多くの定数変数を持っています。それらをキャッシュに保存できますか? –
「定数」変数の例を教えてもらえますか?定義によって、定数は動的ではありません。 –