laravel - 我应该如何使用redis?

标签 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

最佳答案

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

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/

相关文章:

ruby-on-rails - 将新创建的对象传递给 Rails 中的 after_create 回调

redis - celery + 2个redis : broker and cache

java - 如何使用Redis aeCreateTimeEvent?

node.js - 有没有办法在设置 key 后每隔1分钟从redis获取回调

php - Laravel 图像上传插入临时位置和文件名而不是正确的名称

php - laravel 如何优化一个表中的简单 where 查询

php - 请求-> 除了在laravel 5 中给我一个数组而不是一个请求对象

php - 在Laravel中创建,更新或删除记录时识别sql错误的最佳方法

laravel - 为什么 Laravel 会发送两次邮件?

redis - redis如何保存最近5分钟产生的对象?