我是redis的新手,我正在使用它为每个用户存储他选择阅读的一些书,直到本周结束.显然,用户应该能够添加/删除/清除他的书籍列表.
我可以利用redis来做一些类似于’SQL’的事情,例如:DELETE FROM ….或者告诉userA他的列表中是否有一本书……
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.