我正在开发一款应用,并希望第一次使用Redis更快地完成部分查询。可以肯定的是,我希望将MySQL作为后备保留在后台,并以我熟悉的方式保持数据相关。
让我描述一下我的情景:
我有三个模型:category
,subcategory
和events
。
events
列包括:id
,subcategory_id
,occurs_at
,parameter_
,parameter_2
,...
events
属于subcategory
,subcategory
属于category
。这是一对多关系。
我的想法是:
每当创建events
实例时,我都会创建Redis hash entry(请原谅我的语法,因为我曾经研究过Redis):
event:{event_id} category 4 subcategory 25 at "occurs_at" parameter_1 12 paremeter_2 55
现在我在Redis中有这些,我想做以下查询:
第一个问题是:这是一个好方法吗?我想在我的MySQL数据库中包含所有数据以防万一,但仍然使用Redis来熟悉它并使查询更快。
第二个想法:我应该使用Eloquent从Redis中获取正确的实例后获取category
实例,还是应该将Redis哈希中的所有数据保存为:
event:{event_id} category 4 subcategory 25 at "occurs_at" parameter_1 12 paremeter_2 55 category_parameter_1 "some data from category model" category_parameter_2 "some other data from category model"
第三个想法:为分类创建另一组哈希并获取它们而不是来自雄辩的数据。
category:{category_id} category_parameter_1 "some data" category_parameter_2 "more data"
任何想法,指针,类似教程的链接都非常受欢迎。谢谢!
更新
Eloquent查询示例:
在category
模型中:
public function events()
{
return $this->hasManyThrough('Event', 'Subcategory');
}
然后查询将是:
$categories = Category::whereHas('events', function ($query) {
$query->where('occurs_at', '>=', Carbon::today());
})->get();
希望我没有错过任何东西..