研究redis

时间:2015-06-28 12:48:04

标签: php symfony redis

我是redis的新手,我正在使用它为每个用户存储他选择阅读的一些书籍,直到本周结束。显然,用户应该能够添加/删除/清除他的书籍列表。

我是否可以利用redis来执行类似“SQL”的操作,例如:DELETE FROM ....或者告诉userA列表中是否有图书...

  

以下代码显示了我如何确定用户是否已存储给定的图书

 // Storing part
 $books = array(
      array(
          'reference' => 'HKL33432h22',
          'titre'     => 'titre1',
          'auteur'    => 'toto'
      ),
      array(
          'reference' => 'APZO0000NKHD',
          'titre'     => 'titre2',
          'auteur'    => 'titi'
      ),....
 );

 $this->redis->set($userId, serialize($books));

 // Searching part
 $referenceToLookFor = '89OHJLKJFKEJH';
 $found = false;
 $storedBooks = unserialize($this->redis->get($userId));

 foreach ($storedBooks as $i => $storedBook) {
      if ($referenceToLookFor === $storedBook['reference']) {
          $found = true;
      }
 }

是否可以让redis通过其引用(例如,唯一值)判断用户是否有书?

  

二手套装

"snc/redis-bundle": "1.1.x-dev"

1 个答案:

答案 0 :(得分:2)

您可能正在寻找Redis' Hash datatype。您可以将您的书籍数组放入哈希值,然后您可以使用HEXISTS检查是否存在密钥(例如参考号),使用HSCAN遍历哈希中的所有书籍或删除特定条目使用HDEL并添加HSET

请记住,Redis并不知道或关心您将哪些数据存储在其密钥中,它完全基于密钥而没有任何SQL样式WHERE key=value