使用Redis存储数据数组(来自Laravel)

2022-08-30 15:53:24

我已经开始与laravel合作。工作非常有趣。我已经开始使用laravel的功能。我已经开始通过在系统中安装redis服务器来使用,并在文件中更改redis的配置。对于单个变量,redis 使用 工作正常。即redisapp/config/database.phpset

$redis = Redis::connection();

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

并且我可以通过使用

$redis->get('name');

但是我想通过使用函数来设置数组。如果我尝试这样做,得到以下错误set

 strlen() expects parameter 1 to be string, array given 

我尝试使用以下代码。

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

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

如果我使用

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

收到以下错误

 'command' is not a registered Redis command 

任何人都可以向我解释这个问题,以及redis是否可能?...我们可以使用 ?redis


答案 1

这在评论中已经得到回答,但为了让将来访问的人的答案更清晰。

Redis与语言无关,因此它不会识别特定于PHP或任何其他语言的任何数据类型。最简单的方法是/设置上的数据/在get上。serialisejson_encodeunserialisejson_decode

使用以下命令存储数据的示例:json_encode

use Illuminate\Support\Facades\Redis;

$redis = Redis::connection();

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

使用以下命令检索数据的示例:json_decode

use Illuminate\Support\Facades\Redis;

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

$response = json_decode($response);

答案 2

Redis支持多种数据结构类型,如哈希链接列表数组

但是你必须使用Laravel Redis外观的正确方法,如下所示:

// set user_details --redis_key-- and --redis_value-- as array of key_values 
Redis::hmset('user_details',["firstName" => "Foo", "lastName" => "Bar"]);

// get all as an associative array
Redis::hgetall('user_details');

// get just the keys as an array
Redis::hkeys('user_details');

更多信息:https://redis.io/commands#hash


推荐