Memcache和Mysqli插入声明建议

时间:2013-02-07 13:35:23

标签: php mysqli memcached

好的,我过去几天一直在使用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 个答案:

答案 0 :(得分:0)

您必须创建一个唯一的ID

3个解决方案:

  • uniqid()
  • 使用此解决方案UUID generator
  • 字符串的哈希值(例如:md5(' table_name_id:'。$ id)或sha1(' table_name_id:'。$ id))

答案 1 :(得分:0)

如果您使用MySQL为您自动生成ID(通过AUTO_INCREMENT列),那么为什么不向MySQL询问它使用$mysqli->insert_id()给新行的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);
}