RedisをインストールしてSET/GETする

仕事でRedis(http://code.google.com/p/redis/)を使うかもしれないので、
検証用にインストールしてRubyクライアントからSET/GETしてみました。
 
■ Redisのソースをダウンロード
ホームページ(http://code.google.com/p/redis/)のdownloadsから
Redisのtarファイルをダウンロードします。
2010年12月1日現在では redis-2.0.4.tar.gz が stable なそうなのでソレ。
 
■ Redisのインストール
tarを解凍したらやること↓だけ

$ cd redis-2.0.4/
$ make
cc -c -std=c99 -pedantic -O2 -Wall -W   -g -rdynamic -ggdb   adlist.c
cc -c -std=c99 -pedantic -O2 -Wall -W   -g -rdynamic -ggdb   ae.c
〜略〜
cc -o redis-check-aof -std=c99 -pedantic -O2 -Wall -W   -lm -pthread   -g -rdynamic -ggdb  redis-check-aof.o
$ echo $?
0

 
■ Redisの起動
↓で起動します

$ ./redis-server redis.conf
[11174] 01 Dec 17:01:29 * Server started, Redis version 2.0.4
[11174] 01 Dec 17:01:29 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
〜略〜
[11174] 01 Dec 17:01:29 * The server is now ready to accept connections on port 6379
[11174] 01 Dec 17:01:29 - 0 clients connected (0 slaves), 533432 bytes in use

なんかワーニング出てますが、OutOfMemoryの時にどーのこーのみたいな
話っぽいので、今回はスルーしておきます。。
で、 6379 ポートでリスンしてるよって事なので無事起動しました。
 
■ Redisクライアントからアクセス
名前とかホームページの見た目とか、なんかぽいなぁと思ったのですが、
Supported languages のところで、Rubyが一番上にきてたので
Rubyから叩いてみることにします。
Gem(http://rubygems.org/gems/redis)があるので、、

$ sudo gem install redis
[sudo] password for eshinohara:
Successfully installed redis-2.1.1
1 gem installed
Installing ri documentation for redis-2.1.1...
Installing RDoc documentation for redis-2.1.1...

んで、ドキュメント(http://rubydoc.info/gems/redis/2.1.1/frames)に従って、、

$ vi redis_test.rb
require "redis"
redis = Redis.new

叩いたら、、、

$ ruby redis_test.rb
WARNING: using the built-in Timeout class which is known to have issues when used for opening connections. Install the SystemTimer gem if you want to make sure the Redis client will not hang.

なんかSystemTimerってgemが無いって言ってますね。。
それじゃ入れるかってことで、、

$ sudo gem install system_timer
Building native extensions.  This could take a while...
ERROR:  Error installing system_timer:
  ERROR: Failed to build gem native extension.
 
/usr/bin/ruby1.8 extconf.rb
extconf.rb:2:in `require': no such file to load -- mkmf (LoadError)
  from extconf.rb:2

また怒られました。。ググってたら↓こんなん見つけて(日付古いですが、、)
no such file to load — mkmf

For some reason, mkmf.rb is part of the ruby1.8-dev package,
and initially I hadn’t installed that since it is

dev版じゃなきゃ入って無いわよっていう、、
ってことで、、dev版入れます。。

$ sudo apt-get install ruby1.8-dev
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
〜略〜

無事SystemTimerも入って

$ sudo gem install system_timer
Building native extensions.  This could take a while...
Successfully installed system_timer-1.0
1 gem installed
Installing ri documentation for system_timer-1.0...
Installing RDoc documentation for system_timer-1.0...

先ほどの接続するだけのrbを叩いてみます。

$ ruby redis_test.rb
$ echo $?
0

お。いーんでねーの?的な。
 
■ irbを使ってRedisにSETしてGET
ってことでirbでセットしたりゲットしたりしてみます。

irb(main):002:0> require 'rubygems'
=> true
irb(main):003:0> require 'redis'
=> true
irb(main):006:0> redis = Redis.new
=> #<Redis client v2.1.1 connected to redis://127.0.0.1:6379/0 (Redis v2.0.4)>
irb(main):007:0> redis.set "foo", "bar"
=> "OK"
irb(main):008:0>  redis.get "foo"
=> "bar"

無事にSETとGETができました(σ゚ー゚)σゲッツ!!
 
====
ちょっとgem周りが面倒でしたが導入は非常に簡単です。
明日はレプリケーションの設定とか、長いVALUE(数百メガくらい)を
突っ込んだ時にどれくらいのスピードでるかってのを試してみたいと思います。
 

スケーラブルWebサイト
スケーラブルWebサイト

posted with amazlet at 10.12.01
Cal Henderson
オライリー・ジャパン
売り上げランキング: 181369

コメント

  1. […] 先日入れたRedis(RedisをインストールしてSET/GETするにインストール方法書いてあります)ですが、 実際に運用する時に、ウン百万~ウン千万レコードのデータを扱う事になりそうってい […]

  2. […] 以前UbuntuにRedisをいれたときは↓のようにやりました。 RedisをインストールしてSET/GETする(http://shinodogg.com/?p=3233)   今回はAmazonのLinux上にRedisを入れます。   […]

タイトルとURLをコピーしました