对于Redis的所有可用存储选项,我有些困惑。
我想做一些简单的事情,我不想过度工程化。
我正在使用phpredis
和Redis v2.8.6
。
我有一个简单的关联数组需要存储。我还需要能够通过键检索项目并循环遍历所有项目。
$a = array(
'12345' => array(
'name' => 'Post A',
'val2' => 'blah blah',
'val3' => 'blah blah blah',
),
'54321' => array(
'name' => 'Post B',
'val2' => 'blah blah',
'val3' => 'blah blah blah',
),
'998877' => array(
'name' => 'Post C',
'val2' => 'blah blah',
'val3' => 'blah blah blah',
)
);
到目前为止,我一直在使用哈希
类型。像这样存储我的数组:
foreach ($a as $key => $value) {
$this->redis->hSet('posts', $key, json_encode($value));
}
那样我就能够轻松地获取密钥,就像这样:
public function getPost($postId)
{
return json_decode($this->redis->hGet('posts', $postId), true);
}
// This is returning the information of Post A
$post = getPost(12345);
现在我需要遍历所有的帖子,但我不知道该如何做,也不确定是否可以使用当前的结构来完成。我不知道是否需要将所有的 post_id
存储在另一个列表中,以便能够遍历所有的帖子?
因此,我的问题是,我应该使用哪些数据类型来存储我的帖子列表,使我能够通过 ID 获取单个帖子并循环遍历所有帖子?
谢谢, Maxime
post
的哈希值在SET
中是唯一的解决方案吗?如果在SET
中有数百万条目,最好的选项是SORT
还是SMEMBERS
? - maxwell2022SET
和其中包含的所有HASH
。我只是在进行计算时使用Redis作为缓存,完成计算后将结果保存在MySQL中,并且我想要删除那些不再使用的Redis存储对象。 - maxwell2022