0

わかりました、私はここ数日間 Memcache の周りに取り組んでおり、見つけることができる最も役立つ記事 (主に Stackoverflow から) を照合しようとしています。

memcache でキーを使用して値を作成することを理解しており、正しい/効率的なキーの命名が重要であることを読みました。キーを一意にする最善の方法は、$id を使用することです。私の質問は、$id を持たずにキーを一意にする方法です (たとえば、$id が Mysqli データベース テーブル内で自動インクリメントされる場合)。

Memcache の挿入と取得の例を次に示します。

$sql = "INSERT INTO products SET id = $id, name = $name";
// Run Insert Query Here using prepared statement
if (success === TRUE)
{
    //set a key
    $key = 'product_'.$id ;
    $product = array('id' => $id, 'name' => $name);
    $memcache->set($key, $product);
}

これはうまくいくと思いますが、私の質問は、$id にアクセスできない場合、どうすればキーを一意にすることができるでしょうか? 名前を使用できますが、2 人のユーザーが同じ名前を持つ可能性があります。

これが理にかなっていることを願っています。ヘルプやガイダンスをいただければ幸いです。

4

2 に答える 2

0

固有の ID を作成する必要があります。

3つのソリューション:

  • uniqid()
  • このソリューションでUUIDジェネレーター
  • 文字列のハッシュ (例: md5('table_name_id:'.$id) または sha1('table_name_id:'.$id) )
于 2013-02-07T13:37:52.307 に答える
0

MySQL を使用して (列を介して) ID を自動的に生成している場合は、AUTO_INCREMENTMySQL に新しい行に付与された ID を問い合わせてみません$mysqli->insert_id()か?

例:

$result = $mysqli->query("insert into products set name='best product ever'");
if ($result === TRUE) {
    // put it into memcached
    $key = 'product_' . $mysqli->insert_id();
    $product = array('id' => $id, 'name' => $name);
    $memcache->set($key, $product);
}
于 2013-02-07T14:03:33.363 に答える