J'ai commencé à travailler avec laravel. C'est assez intéressant de travailler. J'ai commencé à utiliser les fonctionnalités de laravel. J'ai commencé à utiliser redis
en installant le serveur redis dans mon système et en modifiant la configuration de redis dans app/config/database.php
fichier. Le redis fonctionne bien pour les variables uniques en utilisant set
. c'est à dire.,
$redis = Redis::connection();
$redis->set('name', 'Test');
et je pourrais obtenir la valeur en utilisant
$redis->get('name');
Mais je veux définir le tableau en utilisant la fonction set
. Si j'essaie de faire cela, obtenir l'erreur suivante
strlen() expects parameter 1 to be string, array given
J'ai essayé en utilisant les codes suivants.
$redis->set('name', array(5, 10));
$values = $redis->lrange('names', array(5, 10));
et si j'utilise
$values = $redis->command('lrange', array(5, 10));
obtenir l'erreur suivante
'command' is not a registered Redis command
Quelqu'un peut-il m'expliquer le problème et est-ce possible avec redis? ... nous pouvons définir les valeurs du tableau en utilisant redis
?
Cela a été répondu dans les commentaires, mais pour rendre la réponse plus claire pour les personnes visitant à l'avenir.
Redis est indépendant du langage et ne reconnaît donc aucun type de données spécifique à PHP ou tout autre langage. La manière la plus simple serait de serialise
/json_encode
les données sur l'ensemble puis unserialise
/json_decode
sur get.
Exemple de stockage de données à l'aide de json_encode
:
use Illuminate\Support\Facades\Redis;
$redis = Redis::connection();
$redis->set('user_details', json_encode([
'first_name' => 'Alex',
'last_name' => 'Richards'
])
);
Exemple pour récupérer des données à l'aide de json_decode
:
use Illuminate\Support\Facades\Redis;
$redis = Redis::connection();
$response = $redis->get('user_details');
$response = json_decode($response);
Redis prend en charge plusieurs types de structure de données comme le hachage, la liste de liens et la matrice.
Mais vous devez utiliser des méthodes appropriées à partir de la façade Laravael Redis comme:
//set user_details key and below key_values
Redis::hmset('user_details',["firstName" => "Abi", "lastName" => "logos"]);
//get all as an Associate Array
Redis::hgetall('user_details');
//get just The Keys as an Array
Redis::hkeys('user_details');
plus d'informations: https://redis.io/commands#hash
Dans votre contrôleur, vous pouvez ajouter une telle fonction:
use Illuminate\Support\Facades\Redis;
private function getUsers() {
if ($users = Redis::get('users.all')) {
return json_decode($users);
}
$users = User::all();
Redis::set('users.all', $users);
return $users;
}
Ensuite, dans votre méthode index
(ou autres), vous pouvez faire ceci:
public function index(Request $request) {
$users = $this->getUsers();
}
Source: réponse acceptée et ceci .