夿©è½ãé«éãã¤ãã¼ã¿ã®æ°¸ç¶åãå¯è½ãªãã¼ããªã¥ã¼ã¹ãã¢Redisãããã£ã¦ã¿ãã
ããã«ã¡ã¯ãä»åã¯æ¨ä»æµè¡ã®ãã¼ã»ããªã¥ã¼ã¹ãã¢Redisã触ã£ã¦ã¿ãã®ã§ãã®è¨é²ã§ãã
Redisã¯Cè¨èªã§å®è£ ããããã¼ããªã¥ã¼ã¹ãã¢ã®ä¸ç¨®ã§ãããåç´ã«ãã¼ããªã¥ã¼ã¹ãã¢ã¨è¡¨ç¾ããã®ã«æµæãããã»ã©å¤æ©è½ã§ããããããããã®æ©è½ãããã«ãçãæã«æãå±ãã¨ããããããã¨å©ããæ©è½ãè±å¯ã«æãã¦ãã¾ãã
æ¦è¦
ç°¡åã«è¡¨ç¾ããã¨Redisã¯å
¨ã¦ã®ãã¼ã¿ãã¡ã¢ãªä¸ã«èªã¿è¾¼ãã§ãããä¸å®æéããã«ãã£ã¹ã¯ã«ãã¼ã¿ãä¿åããã¿ã¤ãã®ãã¼ããªã¥ã¼ã¹ãã¢ã®ããã§ããã©ã®ãããªã¿ã¤ãã³ã°ã§ãã£ã¹ã¯ã«æ¸ãè¾¼ããã¯è¨å®ã«ãã£ã¦ããªãæè»ã«è¡ããããã§ãã
ã¾ãããã¼ã¿ãã¡ã¢ãªä¸ã«å ¨ã¦èªã¿è¾¼ãã®ãããã©ã«ãã®åä½ã§ãããã¡ã¢ãªãè¶³ããªããªãã¨å¤ã¯ãã£ã¹ã¯ããèªã¿ããã¼ã¯ã¡ã¢ãªä¸ã«ç½®ãã¦ãããªã©ç¶æ³ã«å¿ããåä½ããã¦ãããããã§ããå¾ã£ã¦å¤§éã®ãã¼ã¿ãå¢å ãç¶ãããã¼ã¿ã®ä¿åé åã¨ãã¦ã使ç¨åºæ¥ããã¨æãã¾ã(参照:NoSQLデータベースガイド)ã
ãªããæ å ±æºã¯ä»¥ä¸ã«ããã¾ãã
æ¬å®¶
http://redis.io/
æ¬å®¶ã³ãã³ããªãã¡ã¬ã³ã¹(è±èª)
http://redis.io/commands
ããã¥ã¡ã³ãæ¥æ¬èªè¨³
http://redis.shibu.jp/index.html
æ¥æ¬èªã³ãã³ããªãã¡ã¬ã³ã¹
http://redis.shibu.jp/commandreference/index.html
ãã¤ãã¿ã¼ã¯ãã¼ã³ã®å®è£
ä¾
http://redis.shibu.jp/tutorial/index.html
ã¤ã³ã¹ãã¼ã«
ä¸è¨ã®本家サイトããææ°ã®å®å®æ¿ããã¦ã³ãã¼ããã¾ãã
ãã¦ã³ãã¼ããããã£ã¬ã¯ããªã«ç§»åãã¦è§£å
$ tar xvzf redis-2.2.14.tar.gz
ãã«ã
$ make
ãã«ãããã¨ã¨ããããèµ·åã§ãã¾ããããã«ãã®çµããã«ããã¹ããã¦ã¿ãã®ã¯ããèãã ãï¼:-)ãã£ã¦è¨ã£ã¦ãã®ã§ãèªåã®ç°å¢ã§åé¡ãªãåãããã¹ããã¦ã¿ã¾ãw
$ make test
ãã¹ãã®æ§å
ä¸ã®éãã0failedã§ãã¹ããå®äºãã¾ããã
èµ·å
èµ·åã¯srcãã£ã¬ã¯ããªã«ç§»åãã¦./redis-serverã³ãã³ããå©ãã¾ãã
$ cd src $ ./redis-server
ããã§èµ·ååºæ¥ã¾ãããã¡ãã»ã¼ã¸ã®ã¨ãããããã©ã«ãã®ãã¼ãã¯6379çªã®ããã§ãã
ã¯ã©ã¤ã¢ã³ããã触ã£ã¦ã¿ã
Redisã«ã¯ã¨ããããåä½ã試ãçºã®ã¯ã©ã¤ã¢ã³ãããã°ã©ã ãä»å±ãã¦ãã¾ããsrcãã£ã¬ã¯ããªå
ã«ããã¾ãã®ã§ãããã«ç§»åãã¦è©¦ãã¦ã¿ã¾ã
$ cd src
ãã¼ã¨æååã®å¤ã®ã»ããã®ä¿åã¨åå¾
å¤ãã»ãã
$ ./redis-cli set hoge tara OK
å¤ãåå¾
$ ./redis-cli get hoge "tara"
ããã²ã¨ã¤å¤ãã»ãã
$ ./redis-cli set foo bar OK
ãã¼ã®åå¨ãåå¾
$ ./redis-cli exists foo (integer) 1
è¤æ°ã®ãã¼ãä¸ãã¦è¤æ°ã®å¤ãä¸åº¦ã«åå¾ãã
$ ./redis-cli mget hoge foo 1) "tara" 2) "bar"
ãã¼ãæå®ãã¦å¤ãåé¤
$ ./redis-cli del hoge (integer) 1
æ°å¤ã®ã¤ã³ã¯ãªã¡ã³ãã¨ãã¯ãªã¡ã³ã
ãã¼"my_age"ã§æ°å¤1ãã»ãã
$ ./redis-cli set my_age 1 OK
ãã¼ãæå®ãã¦å¤ãåå¾
$ ./redis-cli get my_age "1"
å¤ã+1ãã
$ ./redis-cli incr my_age (integer) 2
å度å¤ãåå¾ãã
$ ./redis-cli get my_age "2"
å¤ã-1ãã
$ ./redis-cli decr my_age (integer) 1
å度å¤ãåå¾ãã
$ ./redis-cli get my_age "1"
ãªã¹ãæä½
ãã¼ã®æ«å°¾ã«å¤ã追å
$ ./redis-cli rpush my_list "helo 1" (integer) 1
ããã²ã¨ã¤å¤ã追å
$ ./redis-cli rpush my_list "helo 2" (integer) 2
ããã«åæ§ã®æé ã§3,4,5ã¾ã§è¿½å
$ ./redis-cli rpush my_list "helo 3" (integer) 3 $ ./redis-cli rpush my_list "helo 4" (integer) 4 $ ./redis-cli rpush my_list "helo 5" (integer) 5
ç¾å¨ã®ãªã¹ãã®è¦ç´ ã®0çªç®ãã1çªç®ã¾ã§ãåå¾
$ ./redis-cli lrange my_list 0 1 1) "helo 1" 2) "helo 2"
ç¾å¨ã®ãªã¹ãã®è¦ç´ ã®3çªç®ãã4çªç®ã¾ã§ãåå¾
$ ./redis-cli lrange my_list 3 4 1) "helo 4" 2) "helo 5"
ç¾å¨ã®ãªã¹ãã®è¦ç´ ã®3çªç®ãã100çªç®ã¾ã§ãåå¾
$ ./redis-cli lrange my_list 3 100 1) "helo 4" 2) "helo 5"
ç¾å¨ã®ãªã¹ãã®è¦ç´ ã®0çªç®ããæ«å°¾(-1çªç®)ã¾ã§ãåå¾
$ ./redis-cli lrange my_list 0 -1 1) "helo 1" 2) "helo 2" 3) "helo 3" 4) "helo 4" 5) "helo 5"
ç¾å¨ã®ãªã¹ãã®è¦ç´ ã®æ«å°¾ãã3çªç®(-3çªç®)ããæ«å°¾(-1çªç®)ã¾ã§ãåå¾
$ ./redis-cli lrange my_list -3 -1 1) "helo 3" 2) "helo 4" 3) "helo 5"
ææ³
å
¨ä½çã«ä½¿ãå´ãä½ã欲ããããè¯ãèãã¦ãããªãã¨æå¿ãã¾ãããããã§ãã¤ãã£ãã®ã¯æ©è½ã®ãã¡ã®ã»ãã®ä¸é¨ã§ãä»ã«ãã»ãããé åºä»ãã»ãããããã·ã¥ãªã©ãä¿ååºæ¥ã¾ãã
ç¹ã«ãªã¹ãã¯ããªã使ãåæãè¯ãã®ã§ã¯ãªãã§ãããããããã¦ãªã¹ãã¸ã®æä½ãæ°å¤ã®ã¤ã³ã¯ãªããã¯ãªã¡ã³ããã¢ãããã¯ã«è¡ããã®ããã¤ã³ããé«ãã§ãã
åºæ¬çã«è±èªã®æ å ±ãææ°ã¨ãªãã¾ãããæ¥æ¬èªããã¥ã¡ã³ãããã¡ãã¨å訳ããããã®ãããã¾ã(å°ãå¤ããã¼ã¸ã§ã³ã®ãã®ã®ããã§ãã)ã
PythonとRedisによるツイッタークローンの実装例ãããã¾ãããSNSã®ããã«å¤æ°ã®ã¢ã¯ã»ã¹ãè¡ããããµã¼ãã¹ã«ã¯ãã£ã¦ã¤ãã¨æããã¾ãã
次ã®ã¨ã³ããªã§ã¯Erlangããã³Rubyããæä½ããå ´åã«ã¤ãã¦è¨ãããã¨æãã¾ãã