Ich bin ein wenig verwirrt mit allen verfügbaren Speicheroptionen von Redis. Ich möchte etwas Einfaches tun und ich möchte es nicht überentwickeln. Ich arbeite mit phpredis
und Redis v2.8.6
.Redis Wie speichert man assoziatives Array? Set oder Hash oder Liste?
Ich habe dieses einfache assoziative Array, das ich speichern muss. Ich muss auch in der Lage sein, einen Gegenstand durch seinen Schlüssel und Schleife über alle Einzelteile zu erreichen.
$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',
)
);
Also was ich bis jetzt tat war mit hash
Typ. meine Array wie folgt zu speichern:
foreach ($a as $key => $value) {
$this->redis->hSet('posts', $key, json_encode($value));
}
Wie, dass ich den Schlüssel leicht wie folgt zugreifen können:
public function getPost($postId)
{
return json_decode($this->redis->hGet('posts', $postId), true);
}
// This is returning the information of Post A
$post = getPost(12345);
Aber jetzt brauche ich, weiß ich nicht zu Schleife über alle Beiträge, wie es geht und wenn ich es mit meiner jetzigen Struktur machen kann. Ich weiß nicht, ob ich alle post_id
in einer anderen Liste speichern muss, um alle Posts durchlaufen zu können?
Also meine Frage ist, welche Datentypen sollte ich verwenden, um meine Liste der Beiträge zu speichern, so dass ich einen einzigen Beitrag durch seine ID abrufen und Schleife über alle Beiträge?
Danke, Maxime
Also gibt es keine anderen Lösungen als den Hash der 'Post' in einem' SET' zu speichern? Was sind die besten Optionen 'SORT' oder' SMEMBERS' wenn ich Millionen Einträge im 'SET' habe? – maxwell2022
Wenn Sie zum Sortieren bemerken, verwende ich Nosort, also wird es nicht sortieren.Auch, Ideale Struktur nach mir ist HASH, Schlüssel-Wert-Paar zu halten, ich bin sicher, dass Sie Millionen von Werten auf einmal nicht holen werden, Sie werden nur wenige Lets sagen 50, dann können Sie Limit mit Sort verwenden. http://redis.io/commands/SORT –
Was ist, wenn ich den gesamten Hash aus diesem Satz löschen möchte? Muss ich alle durchlaufen, um sie zu löschen? – maxwell2022