我在 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
最佳答案
我建议按照以下方式保存信息,方便以后访问。
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;
关于laravel - 我应该如何使用redis?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56535228/