我在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
答案 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;