我应该如何使用redis?

时间:2019-06-11 01:15:43

标签: laravel redis

我在laravel中做一个api,我想使用Redis。我不确定自己是否状况良好。

我应该如何使用Redis存储json,然后通过ID或其他列获取值。 我应该将json保存为纯文本吗?那么我如何遍历它来查找特定值或应该如何保留这些值?

     {
        "id": 1,
        "name": "Package A",
        "dimensions": "100x100x100",
        "created_at": "2019-05-29 01:35:53",
        "updated_at": "2019-05-29 01:35:53"
    },
    {
        "id": 2,
        "name": "Package B",
        "dimensions": "150x150x150",
        "created_at": "2019-05-29 01:36:53",
        "updated_at": "2019-05-29 01:36:53"
    }

$package = Package::where->get();
Redis::hmset('packages', array($package));

或者我应该..

$package = Package::where->get();
Redis::set('packages', serialize($package));

那我如何获得价值? 例如:所有字段id = 2

1 个答案:

答案 0 :(得分:1)

我建议通过以下方式保存信息,以便以后访问。

Package::all()->each(function($package){
   Redis::set("package:{$package->id}", $package->toJson());
});

如果您需要恢复信息:

json_decode(Redis::get("package:$id"), true);

在redis中,您必须考虑如何访问信息,然后如何保存它。例如,如果要按名称搜索,则密钥将由相同的名称组成。

如果要从Redis中检索所有软件包,则将需要所有软件包密钥。

以下命令检索与以下结构匹配的所有键:

Redis::keys('package:*');

之后,您可以执行以下操作

$keys = Redis::keys('package:*');
$packages = [];
foreach ($keys as $key){
    array_push($packages, json_decode(Redis::get($key), true));
}
return $packages;