Ruby redisに接続して画像をキーに保存する

Ruby redisに接続して画像をキーに保存する

Rubyで、redisに接続して画像をキーに保存するソースコードを記述してます。

環境

  • OS windows11 home
  • ruby ruby 3.0.3p157 (2021-11-24 revision 3fb7d2cadc) [x64-mingw32]
  • redis 3.0.504
  • vscode 1.63.2

ライブラリインストール

ライブラリ「redis-objects」を使用します。ない場合は「gem」を使ってインストールしておきます。

gem install redis-objects

サンプルコード

localhostにある「redis」に接続して、画像をキー「imgkey」の値として保存するサンプルコードを実行してみます。

保存する画像「mebee_logo.png」

保存してみます。

require 'redis'
require 'redis/objects'

redis = Redis.new(
  :host => 'localhost',
  :port => 6379,
  :db => 0
)

path = "mebee_logo.png"

File.open(path, 'rb') do |file|  
  redis.set('imgkey', file.read)
end

実行結果します。

> ruby test.rb

キー「imgkey」を確認するとバイナリデータとして、保存されていることが確認できます。

データから画像を生成

redisに保存した画像データから、画像を生成してみます。

以下のコードを実行します。

require 'redis'
require 'redis/objects'

redis = Redis.new(
  :host => 'localhost',
  :port => 6379,
  :db => 0
)

path = "mebee_logo_copy.png"

File.open(path, 'wb') do |file|  
  img = redis.get('imgkey')
  file.write(img)
end

画像「mebee_logo_copy.png」が生成されていることが確認できます。