2016-12-09 14 views
1

私は、全体の間違った方法で物事について行くかもしれない、私は物事を自分で難しくしている疑いがあります。それは私が基礎を学び、私がどのように働くと思うかの結果を達成しようとしていると言われています。Laravelのループオーバーコレクションとレディスを使用してキーを保存

私は4,000万レコードを含むMySQLにかなりのサイズのデータ​​ベースを持っています。私はまだRedisののフル要旨とインポート方法を知っていると私は、基本的な方法を考え、正しいデータ構造を有するないので

laravel eloquentを使用して

クエリのMySQL、結果をループとにredis setを呼び出します値をキーに格納します。

ここにあるのは、データベースは郵便番号と住所が妥当で、各郵便番号には多くの住所が含まれています。ここでは、

$addresses = UkAddresses::where('postcode', 'N10AB')->get(); 
    $contCount = count($addresses); 

    for ($x = 0; $x < $contCount; $x++) { 
     $postcode = $addresses[$x]['postcode']; 
     $redis = Redis::connection(); 
     $redis->set('postcodes.' . $postcode, json_encode(array(
        'postcode' => $postcode, 
        'addresses' => array(
         $addresses[$x]['address'] 
        ) 
       ) 
      ) 
     ); 
     $response = $redis->get('postcodes.'.$postcode); 
     $response = json_decode($response); 
    } 

すべてはそれだけでその郵便番号のための単一のアドレスを挿入から離れて正常に動作します私はget postcode.N10AB

{"postcode":"N10AB","addresses":["N10AB, Arena Enterprises UK Ltd, Flat 37, Selkirk House, Bemerton Estate, London "]} 

私の推測を使用した場合のサンプルインサートである:ここで

は、これまでの私のコードですLaravelから返された配列をループするときに私のループに何か問題がありますか?それが結果の1つだけがRedisに渡された理由ですか?

ここは、私がループしてRedisに挿入しようとしているMySQLから返された配列です。

[0] 
postcode "N10AB" 
address "N1 0AB, Arena Enterprises UK Ltd, Flat 37, Selkirk House, Bemerton Estate, London " 

[1] 
postcode "N10AB" 
address "N1 0AB, Dumas Services, Flat 10, Selkirk House, Bemerton Estate, London " 

答えて

0

しかし私は、私は将来的に誰もが自分自身のように似たような状況を持っているだけの場合には、以下の実用的なソリューションを発見した、これは完璧な理想的なソリューションであると言うではないでしょう。

$addresses = UkAddresses::where('postcode', 'N10AB')->get(); 
    $postcode = $addresses->first()->postcode; 
    $items = array(); 
    foreach($addresses as $address){ 
     $items[] = $address['address']; 
    } 
    $redis = Redis::connection(); 
    $redis->set('postcodes.' . $postcode, json_encode(array(
       'postcode' => $postcode, 
       'addresses' => $items 
      ) 
     ) 
    ); 
    $response = $redis->get('postcodes.' . $postcode); 
    $response = json_decode($response); 
    return response()->json($response); 

他の人の意見を聞くことに非常に興味がありますが、はるかに簡単でクリーンなアプローチがあると確信しています。

+0

最初に 'first'がnullを返すことがあります。nullの場合は、郵便番号にアクセスしようとします。変数として郵便番号を入力すると、結果セットから郵便番号を抽出するポイントは何ですか? –

関連する問題