php - 研究redis

标签 php symfony redis

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

我可以利用 redis 做一些类似“SQL”的事情吗?例如:DELETE FROM .... 或判断用户 A 是否有他的书列表...

The following code shows how I'm doing to figure out whether a user has a given book already stored

 // 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 判断用户是否有书,例如通过它的引用(唯一值)

Used bundle

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

最佳答案

您可能正在寻找 Redis 的 Hash datatype .您可以将您的书籍数组放入一个散列中,然后您可以使用 HEXISTS 检查是否存在键(例如引用号)。 , 使用 HSCAN 遍历散列中的所有书籍或使用 HDEL 删除特定条目并添加 HSET .

请记住,Redis 不知道也不关心您在它的键中存储了什么数据,它完全是基于键的,没有任何 SQL 样式 WHERE key=value

关于php - 研究redis,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31099987/

相关文章:

php - mysqli - fatal error

php - 我如何在 php 中存储访问者信息,如到达时间、访问持续时间和访问者的确切位置

symfony - 如何以编程方式对用户进行身份验证

php - 交响乐 2 : changing user in database does not cause logout

php - 在 EventListener 中添加表单错误

php - 为什么星号会返回禁止页面?

php - 从 MySQL 数据库中选择表单中的默认值

python - python redis客户端如何在保存到redis之前对数据进行编码

redis - 需要了解redis的基础知识

java - 无法使用 Lettuce 连接到本地 Redis 集群