2014-03-28 11 views
13

Ich habe angefangen mit Laravel zu arbeiten. Es ist ziemlich interessant zu arbeiten. Ich habe begonnen, die Merkmale von Laravel zu verwenden. Ich habe begonnen, redis zu verwenden, indem ich Redis-Server in meinem System installiere und die Konfiguration für redis in der Datei app/config/database.php ändere. Die Redis funktioniert gut für die einzelnen Variablen mit set. das heißtSpeichern eines Datenfeldes mit Redis (von Laravel)

$redis = Redis::connection(); 

$redis->set('name', 'Test'); 

und ich konnte die Lage, den Wert zu erhalten, indem

$redis->get('name'); 

mit Aber ich mag mithilfe von set Funktion des Array einzustellen. Wenn ich versuche, den folgenden Fehler

zu erhalten

Ich habe versucht, indem Sie die folgenden Codes verwenden.

$redis->set('name', array(5, 10)); 

$values = $redis->lrange('names', array(5, 10)); 

und wenn ich

$values = $redis->command('lrange', array(5, 10)); 

verwenden Sie die folgende Störung zu erhalten

'command' is not a registered Redis command 

Kann jemand mir erklären, das Problem und ist das möglich mit redis? ... wir können das Set Array-Werte mit redis?

+2

Redis mit PHP nicht-skalare Datentypen wie Arrays nicht vertraut ist, aber schnell und schmutzig Option wäre $ redis-> set ('name', serialize (array (5, 10))); 'oder' $ redis-> set ('name', json_encode (array (5, 10))); 'und dann unserialize oder json_decode auf get –

+0

Also müssen wir es nicht andere Wahl codieren, um direkt als ein Array zu setzen? – Kalai

+1

Ein PHP-Array ist ein PHP-spezifischer Datentyp, redis ist sprachunabhängig, also hat es keine Ahnung, wie man damit umgeht ... persönlich benutze ich Redis mit igbinary und automatischer Serialisierung –

Antwort

29

Dies wurde in den Kommentaren beantwortet, aber um die Antwort für die Besucher in Zukunft klarer zu machen.

Redis ist sprachunabhängig, so dass es keinen für PHP oder eine andere Sprache spezifischen Datentyp erkennt. Am einfachsten wäre es, serialise/json_encode die Daten zu setzen dann unserialise/json_decode auf Get.

Beispiel Daten speichern json_encode mit:

$redis = Redis::connection(); 

$redis->set('user_details', json_encode(array('first_name' => 'Alex', 
               'last_name' => 'Richards' 
              ) 
             ) 
      ); 

Beispiel zum Abrufen von Daten json_decode mit:

$redis = Redis::connection(); 
$response = $redis->get('user_details'); 

$response = json_decode($response); 
+1

Richtige Antwort. MsgPack ist auch ein gutes (sprachunabhängiges) Kodierungsformat. Dies gilt auch für das serverseitige Lua-Scripting. Siehe [hier] (http://stackoverflow.com/questions/22287334/servicestack-redis-how-to-return-lua-table-as-list/22287807#22287807). –

Verwandte Themen