私はRedisを学んでいます。Ruby Client for Redisを使用して、キーと値のペアを設定および取得できます。
現在、カスタムパスからdump.rdbを保存およびロードしようとしています。次の手順を実行しました。
- 私はプログラムで、rubyスクリプトでdump.rdbのディレクトリを設定しました。
- 次に、新しいデータを作成するか、既存のデータをロードするかを選択できます。
- 初めてrubyスクリプトを実行しているときに、新しいデータを作成しました。
- もう一度rubyスクリプトを実行し、今回は既存のデータをロードしました。出力は期待どおりです。
ただし、redisサーバーを再起動して同じrubyスクリプトを実行し(これもプログラムでdump.rdbのディレクトリを設定します)、データを読み込もうとすると、そうなりません。
設定で「dir」パラメータを設定した後、プログラムでredisサーバーにdump.rdbをロードさせる方法はありますか?
私はredis.confのRedisIgnoringディレクトリを見て、これをグーグルで検索してみました。redis.confにdump.rdbへのパスを設定するオプションは常にありますが、プログラムで設定したいと思います。
私のRubyコードは次のとおりです。
require 'redis'
client = Redis.new
client.config('set', 'dir', '/tmp')
puts 'Enter load(to load existing data) or new(to create new data)'
print 'prompt>'
command = gets.chomp
if command == 'new'
client.flushdb
client.set('key1', 'value1')
client.set('key2', 'value2')
client.save
else
puts client.get('key1')
puts client.get('key2')
end
以下は、rubyスクリプトを実行した場合の出力です。
laptop:~/ruby/workspace$ ruby test.rb
Enter load(to load existing data) or new(to create new data)
prompt>new
laptop:~/ruby/workspace$ ruby test.rb
Enter load(to load existing data) or new(to create new data)
prompt>load
value1
value2
# Now i restart redis-server
laptop:~/ruby/workspace$ ruby test.rb
Enter load(to load existing data) or new(to create new data)
prompt>load
# No output is printed
ソフトウェアの詳細:
- OS:Ubuntu Linux12.0464ビット
- ローカルホストでデフォルト構成で実行されているRedisバージョン2.6.9
- Ruby:バージョン1.9.3p327(2012-11-10リビジョン37606)[x86_64-linux]
私の側から追加情報が必要な場合はお知らせください。