Symfoware

Symfowareについての考察blog

Redis + FuelPHP 1.8でリストの操作(rpush, lrange, ltrim)

FuelPHPからRedisに接続してみました。
FuelPHP 1.8 Redisに接続してデータの登録、取得、削除

Pythonで試したのと同様の操作を行ってみます。
Redis リストデータの操作について(rpush, lrange, ltrim)


rpushとlrange



rpushでリストにデータ登録。
lrangeで登録したデータを取得してみます。


  1. <?php
  2. namespace Fuel\Tasks;
  3. class Sample
  4. {
  5.     public static function run()
  6.     {
  7.         // redisに接続
  8.         $redis = \Redis_Db::forge();
  9.         
  10.         // データの登録
  11.         foreach(range(1, 20) as $i) {
  12.             $redis->rpush('key', 'value-' . $i);
  13.         }
  14.         // データの取得
  15.         foreach($redis->lrange('key', 0, 10) as $item) {
  16.             echo($item . PHP_EOL);
  17.         }
  18.         // キーを削除
  19.         $redis->del('key');
  20.     }
  21. }



狙い通りの実行結果が得られました。


$ oil r sample
value-1
value-2
value-3
value-4
value-5
value-6
value-7
value-8
value-9
value-10
value-11






rpushで一括登録



Pythonで試したときと同様、rpushは第二引数以降をリストとして追加します。


  1. <?php
  2. namespace Fuel\Tasks;
  3. class Sample
  4. {
  5.     public static function run()
  6.     {
  7.         // redisに接続
  8.         $redis = \Redis_Db::forge();
  9.         
  10.         // データの複数登録
  11.         $redis->rpush('key', 'value-1', 'value-2', 'value-3', 'value-4', 'value-5');
  12.         // データの取得
  13.         foreach($redis->lrange('key', 0, 10) as $item) {
  14.             echo($item . PHP_EOL);
  15.         }
  16.         // キーを削除
  17.         $redis->del('key');
  18.     }
  19. }



実行結果


$ oil r sample
value-1
value-2
value-3
value-4
value-5




そのため、最初のプログラムは以下のように書き換えられます。


  1. <?php
  2. namespace Fuel\Tasks;
  3. class Sample
  4. {
  5.     public static function run()
  6.     {
  7.         // redisに接続
  8.         $redis = \Redis_Db::forge();
  9.         
  10.         $values = [];
  11.         foreach(range(1, 20) as $i) {
  12.             $values[] = 'value-' . $i;
  13.         }
  14.         // データの複数登録
  15.         $redis->rpush('key', ...$values);
  16.         // データの取得
  17.         foreach($redis->lrange('key', 0, 10) as $item) {
  18.             echo($item . PHP_EOL);
  19.         }
  20.         // キーを削除
  21.         $redis->del('key');
  22.     }
  23. }






キーの削除(ltrim)



最後に、ltrimで読み込んだリストを削除してやります。


  1. <?php
  2. namespace Fuel\Tasks;
  3. class Sample
  4. {
  5.     public static function run()
  6.     {
  7.         // redisに接続
  8.         $redis = \Redis_Db::forge();
  9.         
  10.         $values = [];
  11.         foreach(range(1, 20) as $i) {
  12.             $values[] = 'value-' . $i;
  13.         }
  14.         // データの複数登録
  15.         $redis->rpush('key', ...$values);
  16.         // データの取得
  17.         while(true) {
  18.             $items = $redis->lrange('key', 0, 10);
  19.             if (empty($items)) {
  20.                 break;
  21.             }
  22.             
  23.             foreach($items as $item) {
  24.                 echo($item . PHP_EOL);
  25.             }
  26.             $redis->ltrim('key', count($items), -1);
  27.         }
  28.     }
  29. }



実行結果


$ oil r sample
value-1
value-2
value-3
value-4
value-5
value-6
value-7
value-8
value-9
value-10
value-11
value-12
value-13
value-14
value-15
value-16
value-17
value-18
value-19
value-20





【参考URL】

【PHP】受け取った可変長引数を別の関数に可変長引数として渡す

関連記事

テーマ:プログラミング - ジャンル:コンピュータ

  1. 2018/06/26(火) 22:53:46|
  2. Redis
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集
<<Redis + FuelPHP 1.8でリストをソートして取得する(sort) | ホーム | FuelPHP 1.8 Redisに接続してデータの登録、取得、削除>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
https://symfoware.blog.fc2.com/tb.php/2214-3998ee84
この記事にトラックバックする(FC2ブログユーザー)