Symfoware

Symfowareについての考察blog

node.js + Redisでリストの操作(rpush, lrange, ltrim)

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

PHPで試したときと同様のリスト操作を行ってみます。
Redis + FuelPHP 1.8でリストの操作(rpush, lrange, ltrim)


rpushとlrange



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


  1. 'use strict'
  2. const redis = require('redis')
  3. // 接続情報
  4. const config = {
  5.     host: '127.0.0.1',
  6.     port: 6379
  7. }
  8. // 接続
  9. const client = redis.createClient(config)
  10. // データの登録
  11. for (let i = 1; i <= 20; i++) {
  12.     client.rpush('key', `value-${i}`)
  13. }
  14. // データの取得と表示
  15. client.lrange('key', 0, 10, (err, reply) => {
  16.     reply.forEach((item, i) => {
  17.         console.log(item)
  18.     })    
  19. })
  20. // データの削除
  21. client.del('key')
  22. // 切断
  23. client.quit()



実行結果


$ node index.js
value-1
value-2
value-3
value-4
value-5
value-6
value-7
value-8
value-9
value-10
value-11





rpushで一括登録



rpushは第二引数以降の値を登録してくれます。


  1. 'use strict'
  2. const redis = require('redis')
  3. // 接続情報
  4. const config = {
  5.     host: '127.0.0.1',
  6.     port: 6379
  7. }
  8. // 接続
  9. const client = redis.createClient(config)
  10. // データの登録
  11. client.rpush('key', `value-1`, `value-2`, `value-3`, `value-4`, `value-5`)
  12. // データの取得と表示
  13. client.lrange('key', 0, 10, (err, reply) => {
  14.     reply.forEach((item, i) => {
  15.         console.log(item)
  16.     })    
  17. })
  18. // データの削除
  19. client.del('key')
  20. // 切断
  21. client.quit()



実行結果


$ node index.js
value-1
value-2
value-3
value-4
value-5




リストを渡してもよしなに処理してくれます。


  1. 'use strict'
  2. const redis = require('redis')
  3. // 接続情報
  4. const config = {
  5.     host: '127.0.0.1',
  6.     port: 6379
  7. }
  8. // 接続
  9. const client = redis.createClient(config)
  10. let values = []
  11. for (let i = 1; i <= 20; i++) {
  12.     values.push(`value-list-${i}`)
  13. }
  14. // データの登録
  15. client.rpush('key', values)
  16. // データの取得と表示
  17. client.lrange('key', 0, 10, (err, reply) => {
  18.     reply.forEach((item, i) => {
  19.         console.log(item)
  20.     })    
  21. })
  22. // データの削除
  23. client.del('key')
  24. // 切断
  25. client.quit()



実行結果


$ node index.js
value-list-1
value-list-2
value-list-3
value-list-4
value-list-5
value-list-6
value-list-7
value-list-8
value-list-9
value-list-10
value-list-11





リストの削除(ltrim)



リストから指定件数読み出し、読み出した分を削除しつつ継続して読み込み...はこうなりました。


  1. 'use strict'
  2. const redis = require('redis')
  3. // 接続情報
  4. const config = {
  5.     host: '127.0.0.1',
  6.     port: 6379
  7. }
  8. // 接続
  9. const client = redis.createClient(config)
  10. let values = []
  11. for (let i = 1; i <= 25; i++) {
  12.     values.push(`value-${i}`)
  13. }
  14. // データの登録
  15. client.rpush('key', values)
  16. // リストが尽きるまで読み込み
  17. const read = () => {
  18.     client.lrange('key', 0, 10, (err, reply) => {
  19.         if (reply.length == 0) {
  20.             client.quit()
  21.             return
  22.         }
  23.         reply.forEach((item, i) => {
  24.             console.log(item)
  25.         })
  26.         client.ltrim('key', reply.length , -1)
  27.         read()
  28.     })
  29. }
  30. read()




実行結果


$ node index.js
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
value-21
value-22
value-23
value-24
value-25

関連記事

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

  1. 2018/06/28(木) 23:25:17|
  2. node.js
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集
<<node.js + Redisで一括処理(pipline, multi) | ホーム | node.js Redisに接続してデータの登録、取得、削除>>

コメント

コメントの投稿


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

トラックバック

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