1

我在这里关注一篇文章,我想我想去散列路线,但我很困惑如果我有多个taxi_car

<?php
$redis->hset("taxi_car", "brand", "Toyota");
$redis->hset("taxi_car", "model", "Yaris");
$redis->hset("taxi_car", "license number", "RO-01-PHP");
$redis->hset("taxi_car", "year of fabrication", 2010);
$redis->hset("taxi_car", "nr_starts", 0);
/*
$redis->hmset("taxi_car", array(
    "brand" => "Toyota",
    "model" => "Yaris",
    "license number" => "RO-01-PHP",
    "year of fabrication" => 2010,
    "nr_stats" => 0)
);
*/
echo "License number: " .
    $redis->hget("taxi_car", "license number") . "<br>";

// remove license number
$redis->hdel("taxi_car", "license number");

// increment number of starts
$redis->hincrby("taxi_car", "nr_starts", 1);

$taxi_car = $redis->hgetall("taxi_car");
echo "All info about taxi car";
echo "<pre>";
var_dump($taxi_car);
echo "</pre>";

我将如何创建一个数据库,其中包含有关 redis 中的 tax_cars 的所有数据。现在我知道redis中没有数据库只有键,但我在这里使用关系术语来表达自己。如果我有 1000 个taxi_cars,我不想有 1000 个初始键。它必须是某些东西的子集。我什至不知道如何解释这一点。

编辑

所以可以说,在品牌下我有丰田、本田、铃木,然后在品牌下我有不同的风格,如塔科马、雅阁等

我将如何继续插入该数据并检索它。谢谢

4

1 回答 1

2

您不应该尝试将关系模型概念映射到 Redis 之类的 NoSQL 存储,而应该考虑数据结构和访问路径。

以下是一些简单的例子:

从 SQLite 移植到 Redis

在 redis 中使用键

如何在redis中建立多对多关系

在这里您要存储汽车型号的记录。您首先需要一些东西来识别它们(即关系术语中的主键)。然后你可以将这些记录存储在 Redis 的顶级字典中。

你不应该存储:

taxi_car => hash{ brand" => "Toyota", "model" => "Yaris", etc ... }

但:

taxi_car:1 => hash{ brand" => "Toyota", "model" => "Yaris", etc ... }
taxi_car:2 => hash{ brand" => "Toyota", "model" => "Prius", etc ... }
taxi_car:3 => hash{ brand" => "Tesla", "model" => "Model_S", etc ... }

现在,您需要预测访问路径。例如,要检索每个品牌和型号的汽车,您需要添加额外的集合(用作索引):

brand:Toyota => set{ 1 2 }
brand:Tesla  => set{ 3 }
model:Yaris  => set{ 1 }
model:Prius  => set{ 2 }
model:Model_S => set{ 3 }

所以你可以检索:

# Per brand
SMEMBERS brand:Toyota 
  -> returns 1 2
HGETALL taxi_car:1
HGETALL taxi_car:2

# Per model
SMEMBERS model:Prius
  -> returns 2
HGETALL taxi_car:2

# Per brand and per model (a bit useless here), plus associated data
# sort is used to get all the taxi_car data in one shot
sinterstore tmp brand:Toyota model:Prius
sort tmp by nosort get taxi_car:*->brand get taxi_car:*->model etc ...
于 2012-07-07T07:57:34.260 回答