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,如何使密钥唯一?因为我可以使用该名称,但有可能两个用户可能具有相同的名称。

我希望这是有道理的。任何帮助或指导将不胜感激。

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_INCREMENT列),那么为什么不向 MySQL 询问它为新行提供的 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 回答