<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Go towards a Word-Progress &#187; redis</title>
	<atom:link href="http://wordprogress.org/archives/tag/redis/feed" rel="self" type="application/rss+xml" />
	<link>http://wordprogress.org</link>
	<description>　～言霊とプログラム言語の共進化!?</description>
	<lastBuildDate>Fri, 22 Jan 2010 03:37:35 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<atom:link rel="hub" href="http://pubsubhubbub.appspot.com"/><atom:link rel="hub" href="http://superfeedr.com/hubbub"/>		<item>
		<title>WordPress on Windows Azure (with redisdb-win32)!?</title>
		<link>http://wordprogress.org/archives/712</link>
		<comments>http://wordprogress.org/archives/712#comments</comments>
		<pubDate>Tue, 24 Nov 2009 09:11:44 +0000</pubDate>
		<dc:creator>アルケー</dc:creator>
				<category><![CDATA[クラウド]]></category>
		<category><![CDATA[Azure]]></category>
		<category><![CDATA[redis]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://wordprogress.org/?p=712</guid>
		<description><![CDATA[最近、すっかりGo言語のサイトと化している当WordProgressサイト。
だが、もともとは、ドメイン名にWordProgressといういささか紛らわしい名前をつけたWordPressサイトをオープンさせたくらいであって、業界標準の簡易CMSとなっている感のあるWordPressのカスタマイズに実はかなりの関心を持っている。
特に、WordPressを活用した企業サイトを立ち上げている場合、ある程度以上のアクセスが集まると、レスポンスが遅くなるといった問題が生じることが多い。また、ブログ投稿ツールとしては非常に優れているWordPressの管理画面も企業サイトのワークフローにそぐわない場合もある。
ということで、技術者どもの集まりである我々が、ちょっくらそのあたりのWordPressのカスタマイズでもやってみるか、と思いGoogle App Engine (for Java)上でのPHPの稼動や、Windows AzureのPHP対応などに興味を持っていたところではある・・・。最近、Go言語にかまけて、このあたりごぶさたになっていたのだが、
WordPress on Windows AzureのInfoQ記事をみかけて再度、むむっとやる気が。
おりしも、年末締め切りで、Window Azureクラウドの開発コンテストなるものが開催され、PHPでも参加できるとのこと。まぁ、商品はたわいもないもののようだが、ちょっと本気だしてカスタマイズしてみる、には良い機会やもと思う今日この頃。
&#8212;
実はWindows Server2008の使用権などをもっていたりして、早く調査しておけばよかったのだが、windows のIISサーバではmemcachedのようなキャッシュの仕組みは何で運用されているんだろうか？・・・WordPressの裏方には、昨日当サイトで大々的に(?)とりあげたredis-db(実はwin32版もある)あたりをもってくるのもありかな、など、妄想は早くも広がりはじめている・・・実際にコンテストに応募となった際にはまた、ご報告いたします
m(_ _)m =&#62;ただの 妄想で終わる可能性もあるため、下手に下手に。。

[追記] @IT誌にこのあたりのもっと詳しい解説があった。う～ん、Windows azure界隈はやはり良く分かってない。無知の涙(違)。。
]]></description>
			<content:encoded><![CDATA[<p>最近、すっかりGo言語のサイトと化している当WordProgressサイト。<br />
だが、もともとは、ドメイン名にWordProgressといういささか紛らわしい名前をつけたWordPressサイトをオープンさせたくらいであって、業界標準の簡易CMSとなっている感のあるWordPressのカスタマイズに実はかなりの関心を持っている。</p>
<p>特に、WordPressを活用した企業サイトを立ち上げている場合、ある程度以上のアクセスが集まると、レスポンスが遅くなるといった問題が生じることが多い。また、ブログ投稿ツールとしては非常に優れているWordPressの管理画面も企業サイトのワークフローにそぐわない場合もある。</p>
<p>ということで、技術者どもの集まりである我々が、ちょっくらそのあたりのWordPressのカスタマイズでもやってみるか、と思いGoogle App Engine (for Java)上でのPHPの稼動や、Windows AzureのPHP対応などに興味を持っていたところではある・・・。最近、Go言語にかまけて、このあたりごぶさたになっていたのだが、<br />
<span style="font-family: 'Lucida Grande', Verdana, Arial, 'Bitstream Vera Sans', sans-serif; line-height: normal; font-size: 22px; white-space: pre;"><a href="http://www.infoq.com/jp/news/2009/11/WordPress-Azure">WordPress on Windows AzureのInfoQ記事</a></span>をみかけて再度、むむっとやる気が。</p>
<p>おりしも、年末締め切りで、<a href="http://msdn.microsoft.com/ja-jp/azure/ee702427.aspx">Window Azureクラウドの開発コンテストなるもの</a>が開催され、PHPでも参加できるとのこと。まぁ、商品はたわいもないもののようだが、ちょっと本気だしてカスタマイズしてみる、には良い機会やもと思う今日この頃。</p>
<p>&#8212;</p>
<p>実はWindows Server2008の使用権などをもっていたりして、早く調査しておけばよかったのだが、windows のIISサーバではmemcachedのようなキャッシュの仕組みは何で運用されているんだろうか？・・・WordPressの裏方には、昨日当サイトで大々的に(?)とりあげたredis-db(実は<a href="http://code.google.com/p/redisdb-win32/">win32版</a>もある)あたりをもってくるのもありかな、など、妄想は早くも広がりはじめている・・・実際にコンテストに応募となった際にはまた、ご報告いたします<br />
m(_ _)m =&gt;ただの 妄想で終わる可能性もあるため、下手に下手に。。</p>
<hr/>
[追記] <a href="http://www.atmarkit.co.jp/news/200911/18/azure.html">@IT誌にこのあたりのもっと詳しい解説</a>があった。う～ん、Windows azure界隈はやはり良く分かってない。無知の涙(違)。。</p>
]]></content:encoded>
			<wfw:commentRss>http://wordprogress.org/archives/712/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>golangでredisdbをいじくる[シンプルな読み書き]</title>
		<link>http://wordprogress.org/archives/695</link>
		<comments>http://wordprogress.org/archives/695#comments</comments>
		<pubDate>Mon, 23 Nov 2009 14:18:11 +0000</pubDate>
		<dc:creator>kyon</dc:creator>
				<category><![CDATA[Go]]></category>
		<category><![CDATA[NoSQL]]></category>
		<category><![CDATA[redis]]></category>

		<guid isPermaLink="false">http://wordprogress.org/?p=695</guid>
		<description><![CDATA[ということで、前回までで一通り準備を終えたので、golangからredisdbをいじってみた。
元のベンチマークのソースから書いていったので全体ごちゃごちゃしているのでソースの要部を以下に :
◇書き込み側
 ・・・
//redisクライアントの生成
  //(ドライバのソースに複数種類のクライアントがあるが使い分け不明)
	client, e := redis.NewSynchClient(); // (spec);
	if e != nil {
          return onError ("on NewSynchClient call: ", e);
       }
	if client == nil {
          return failedTest ("NewSynchClient returned nil!");
 [...]]]></description>
			<content:encoded><![CDATA[<p>ということで、<a href="http://wordprogress.org/archives/692">前回</a>までで一通り準備を終えたので、golangからredisdbをいじってみた。</p>
<p>元のベンチマークのソースから書いていったので全体ごちゃごちゃしているのでソースの要部を以下に :</p>
<h3>◇書き込み側</h3>
<pre class="brush:c"> ・・・
//redisクライアントの生成
  //(ドライバのソースに複数種類のクライアントがあるが使い分け不明)
	client, e := redis.NewSynchClient(); // (spec);
	if e != nil {
          return onError ("on NewSynchClient call: ", e);
       }
	if client == nil {
          return failedTest ("NewSynchClient returned nil!");
       }

	doSetAndGet(client);
	client.Quit();
・・・
func doSetAndGet (client redis.Client)  {
	keys := [...] string { "one","two","three","four"};
	for i, key := range keys {
        fmt.Printf("%d: writing key %s\n", i+1, key);
		client.Set(key, //ここで書き込み
                   strings.Bytes("value"+ strconv.Itoa(i+1)));
    }
	allkey,_ := client.AllKeys();
	fmt.Printf("keys =&gt; %d \n",allkey);
	client.Save();
}

}</pre>
<h3>◇読み込み側</h3>
<pre class="brush:c">func doGetOnly (client redis.Client) {
	keys,_ := client.AllKeys();
	fmt.Printf("keys =&gt; %f \n",keys);
	for i, key := range keys {
        fmt.Printf("%d:  key %s =&gt; ", i, key);
		val1,_ := client.Get(key);
		fmt.Printf("as a string =&gt; %s \n",val1);
	}
}
</pre>
<h3>◇実行結果</h3>
<p>kyon@andLinux:~/windows/redis/redis-go/bench$ 8g -I ./../src/pkg/redis kyonclient1.go<br />
kyon@andLinux:~/windows/redis/redis-go/bench$ 8l -o k1.out kyonclient1.8<br />
kyon@andLinux:~/windows/redis/redis-go/bench$ ./k1.out</p>
<p>=== My 1st golang-redis .(writing ver. 1 Client) &#8212; 100 opts &#8212; 127.0.0.1:6379</p>
<p>1: writing key one<br />
2: writing key two<br />
3: writing key three<br />
4: writing key four<br />
keys =&gt; %d([]string=[four three two one])<br />
kyon@andLinux:~/windows/redis/redis-go/bench$ 8g -I ./../src/pkg/redis kyonclient2.go<br />
kyon@andLinux:~/windows/redis/redis-go/bench$ 8l -o k2.out kyonclient2.8<br />
kyon@andLinux:~/windows/redis/redis-go/bench$ ./k2.out</p>
<p>=== My 1st golang-redis .(reading ver. 1 Client) &#8212; 100 opts &#8212; 127.0.0.1:6379</p>
<p>keys =&gt; %f([]string=[four three two one])<br />
0:  key four =&gt; as a string =&gt; value4<br />
1:  key three =&gt; as a string =&gt; value3<br />
2:  key two =&gt; as a string =&gt; value2<br />
3:  key one =&gt; as a string =&gt; value1</p>
<h3>◇redis-cliで確認</h3>
<p>kyon@andLinux:~/windows/redis/redis-1.02$ ./redis-cli get one<br />
value1<br />
kyon@andLinux:~/windows/redis/redis-1.02$ ./redis-cli get two<br />
value2</p>
<h3>◇感想</h3>
<p>ひっかかったところもほとんどなく、楽しかった。redis-dbがシンプルな作りであることもあり、golang-redisのソースは読みやすかった。golang-redis、KVSの学習兼golangのコードの書き方におすすめ。実用的に使えるかは・・・追検証にゆだねる。</p>
]]></content:encoded>
			<wfw:commentRss>http://wordprogress.org/archives/695/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>golang-redis 導入～ベンチマーク</title>
		<link>http://wordprogress.org/archives/692</link>
		<comments>http://wordprogress.org/archives/692#comments</comments>
		<pubDate>Mon, 23 Nov 2009 10:50:02 +0000</pubDate>
		<dc:creator>kyon</dc:creator>
				<category><![CDATA[Go]]></category>
		<category><![CDATA[NoSQL]]></category>
		<category><![CDATA[redis]]></category>

		<guid isPermaLink="false">http://wordprogress.org/?p=692</guid>
		<description><![CDATA[ということで、redisdbとは何かを確認した(前編/後編)ので、さっそくgolang-redisを導入して，付属するベンチマークを試してみる。
はじめに、こちらの本家から持ってきたソースを解凍し、 ドライバをmake。
kyon@andLinux:~/windows/redis/redis-go/src/pkg/redis$ make
8g -o redis.8 reflect.go sync.go specification.go error.go redis.go protocol.go connection.go synchclient.go asynchclient.go
ベンチマーク
kyon@andLinux:~/windows/redis/redis-go/src/pkg/redis$ cd ../../../bench/
kyon@andLinux:~/windows/redis/redis-go/bench$ chmod 755 runbench
kyon@andLinux:~/windows/redis/redis-go/bench$ ./runbench synchclient
=== Bench synchclient ================ 1 Client &#8212; 20000 opts &#8212; 127.0.0.1:6379
&#8212;
cmd: PING
20000 iterations of PING in 710 msecs
&#8212;
cmd: INCR
20000 iterations of INCR in 870 msecs
&#8212;
cmd: SET
20000 iterations of SET in 980 msecs
&#8212;
cmd: GET
20000 iterations of [...]]]></description>
			<content:encoded><![CDATA[<p>ということで、redisdbとは何かを確認した(<a href="http://wordprogress.org/archives/681">前編</a>/<a href="http://wordprogress.org/archives/686">後編</a>)ので、さっそくgolang-redisを導入して，付属するベンチマークを試してみる。<br />
はじめに、<a href="http://github.com/evangineer/Go-Redis">こちら</a>の本家から持ってきたソースを解凍し、 ドライバをmake。</p>
<p>kyon@andLinux:~/windows/redis/redis-go/src/pkg/redis$ make<br />
8g -o redis.8 reflect.go sync.go specification.go error.go redis.go protocol.go connection.go synchclient.go asynchclient.go</p>
<h3>ベンチマーク</h3>
<p>kyon@andLinux:~/windows/redis/redis-go/src/pkg/redis$ cd ../../../bench/<br />
kyon@andLinux:~/windows/redis/redis-go/bench$ chmod 755 runbench<br />
kyon@andLinux:~/windows/redis/redis-go/bench$ ./runbench synchclient</p>
<p>=== Bench synchclient ================ 1 Client &#8212; 20000 opts &#8212; 127.0.0.1:6379</p>
<p>&#8212;<br />
cmd: PING<br />
20000 iterations of PING in 710 msecs<br />
&#8212;<br />
cmd: INCR<br />
20000 iterations of INCR in 870 msecs<br />
&#8212;<br />
cmd: SET<br />
20000 iterations of SET in 980 msecs<br />
&#8212;<br />
cmd: GET<br />
20000 iterations of GET in 740 msecs<br />
&#8212;<br />
cmd: SADD<br />
20000 iterations of SADD in 960 msecs<br />
&#8212;<br />
cmd: LPUSH<br />
20000 iterations of LPUSH in 1000 msecs<br />
&#8212;<br />
cmd: RPUSH<br />
20000 iterations of RPUSH in 1000 msecs<br />
&#8212;<br />
cmd: LPOP<br />
20000 iterations of LPOP in 840 msecs<br />
&#8212;<br />
cmd: RPOP<br />
20000 iterations of RPOP in 830 msecs<br />
kyon@andLinux:~/windows/redis/redis-go/bench$ ./runbench gosynchclient</p>
<p>=== Bench synchclient ================ 10 Concurrent Clients &#8212; 2000 opts each &#8212;</p>
<p>&#8212;<br />
cmd: concurrent PING<br />
20000 iterations of concurrent PING in 960 msecs<br />
&#8212;<br />
cmd: concurrent SET<br />
20000 iterations of concurrent SET in 1120 msecs<br />
&#8212;<br />
cmd: concurrent GET<br />
20000 iterations of concurrent GET in 1040 msecs<br />
&#8212;<br />
cmd: concurrent INCR<br />
20000 iterations of concurrent INCR in 1070 msecs<br />
&#8212;<br />
cmd: concurrent DECR<br />
20000 iterations of concurrent DECR in 1040 msecs<br />
&#8212;<br />
cmd: concurrent LPUSH<br />
20000 iterations of concurrent LPUSH in 1210 msecs<br />
&#8212;<br />
cmd: concurrent LPOP<br />
20000 iterations of concurrent LPOP in 1100 msecs<br />
&#8212;<br />
cmd: concurrent RPUSH<br />
20000 iterations of concurrent RPUSH in 1210 msecs<br />
&#8212;<br />
cmd: concurrent RPOP<br />
20000 iterations of concurrent RPOP in 1040 msecs</p>
<p>どうやら、ノートPC上のバーチャルOS上でも、１秒間に２万回くらいのデータ操作ができている模様。</p>
<p>ほんとか？・・・については、ソース嫁なので、これから読みます、はい。</p>
<h3>[追記]ソース読んだ。</h3>
<p><span style="font-weight: normal; font-size: 13px;">実際に20000回ループはしていた。また、redis側のログも出ている。10000回だとこんな感じ。</span></p>
<p>kyon@andLinux:~/windows/redis/redis-go/bench$ ./runbench synchclient</p>
<p>=== Bench synchclient ================ 1 Client &#8212; 10000 opts &#8212; 127.0.0.1:6379</p>
<p>&#8212;<br />
cmd: PING<br />
10000 iterations of PING in 390 msecs<br />
&#8212;<br />
cmd: INCR<br />
10000 iterations of INCR in 430 msecs<br />
&#8212;<br />
cmd: SET<br />
10000 iterations of SET in 550 msecs<br />
&#8212;<br />
cmd: GET<br />
10000 iterations of GET in 500 msecs<br />
&#8212;<br />
cmd: SADD<br />
10000 iterations of SADD in 500 msecs<br />
&#8212;<br />
cmd: LPUSH<br />
10000 iterations of LPUSH in 520 msecs<br />
&#8212;<br />
cmd: RPUSH<br />
10000 iterations of RPUSH in 530 msecs<br />
&#8212;<br />
cmd: LPOP<br />
10000 iterations of LPOP in 430 msecs<br />
&#8212;<br />
cmd: RPOP<br />
10000 iterations of RPOP in 430 msecs</p>
]]></content:encoded>
			<wfw:commentRss>http://wordprogress.org/archives/692/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>ところでredisって何？(後編)</title>
		<link>http://wordprogress.org/archives/686</link>
		<comments>http://wordprogress.org/archives/686#comments</comments>
		<pubDate>Mon, 23 Nov 2009 10:29:11 +0000</pubDate>
		<dc:creator>kyon</dc:creator>
				<category><![CDATA[NoSQL]]></category>
		<category><![CDATA[未分類]]></category>
		<category><![CDATA[redis]]></category>

		<guid isPermaLink="false">http://wordprogress.org/?p=686</guid>
		<description><![CDATA[golangもつなげるっぽい、redis-dbを学ぶの後編。
ということで、さっそく再起動したPCで先ほどのデータを呼び出してみる。
memcachedに近しいパフォーマンスを誇るredis-dbだが永続化もよろしくやってくれている・・・はず。
kyon@andLinux:~/windows/redis/redis-1.02$ ./redis-cli smembers SOS
1. mikuru
2. koizumi
3. kyom
4. haruhi
5. kyon
6. nagato
よし、余計な一人を含めて、再度メンバーを呼び出せた。
キー(nagato)から値(clojure)も再度取得してみる。
kyon@andLinux:~/windows/redis/redis-1.02$ ./redis-cli get nagato
clojure
余計な３番を消そう。
kyon@andLinux:~/windows/redis/redis-1.02$ ./redis-cli srem SOS kyom
1
kyon@andLinux:~/windows/redis/redis-1.02$ ./redis-cli smembers sos
(nil)
kyon@andLinux:~/windows/redis/redis-1.02$ ./redis-cli smembers SOS
1. mikuru
2. koizumi
3. kyon
4. haruhi
5. nagato
キーは大文字・小文字が区別されるのか。
団長つながりで大サーカスの方も追加してみる。
kyon@andLinux:~/windows/redis/redis-1.02$ ./redis-cli sadd yasuD yasuda
1
kyon@andLinux:~/windows/redis/redis-1.02$ ./redis-cli sadd yasuD kurochan
1
kyon@andLinux:~/windows/redis/redis-1.02$ ./redis-cli sadd yasuD hiro
1
kyon@andLinux:~/windows/redis/redis-1.02$ ./redis-cli smembers yasuD
1. kurochan
2. yasuda
3. hiro
３人そろった。
２つの団を結合(sunion)してみよう。
kyon@andLinux:~/windows/redis/redis-1.02$ ./redis-cli sunion SOS yasuD
1. kurochan
2. mikuru
3. yasuda
4. koizumi
5. kyon
6. [...]]]></description>
			<content:encoded><![CDATA[<p>golangもつなげるっぽい、redis-dbを学ぶの後編。<br />
ということで、さっそく再起動したPCで<a href="http://wordprogress.org/archives/681">先ほどのデータ</a>を呼び出してみる。<br />
memcachedに近しいパフォーマンスを誇るredis-dbだが永続化もよろしくやってくれている・・・はず。</p>
<p>kyon@andLinux:~/windows/redis/redis-1.02$ ./redis-cli smembers SOS<br />
1. mikuru<br />
2. koizumi<br />
3. kyom<br />
4. haruhi<br />
5. kyon<br />
6. nagato</p>
<p>よし、余計な一人を含めて、再度メンバーを呼び出せた。<br />
キー(nagato)から値(clojure)も再度取得してみる。<br />
kyon@andLinux:~/windows/redis/redis-1.02$ ./redis-cli get nagato<br />
clojure</p>
<p>余計な３番を消そう。</p>
<p>kyon@andLinux:~/windows/redis/redis-1.02$ ./redis-cli srem SOS kyom<br />
1</p>
<p>kyon@andLinux:~/windows/redis/redis-1.02$ ./redis-cli smembers sos<br />
(nil)<br />
kyon@andLinux:~/windows/redis/redis-1.02$ ./redis-cli smembers SOS<br />
1. mikuru<br />
2. koizumi<br />
3. kyon<br />
4. haruhi<br />
5. nagato<br />
キーは大文字・小文字が区別されるのか。</p>
<p>団長つながりで大サーカスの方も追加してみる。<br />
kyon@andLinux:~/windows/redis/redis-1.02$ ./redis-cli sadd yasuD yasuda<br />
1<br />
kyon@andLinux:~/windows/redis/redis-1.02$ ./redis-cli sadd yasuD kurochan<br />
1<br />
kyon@andLinux:~/windows/redis/redis-1.02$ ./redis-cli sadd yasuD hiro<br />
1<br />
kyon@andLinux:~/windows/redis/redis-1.02$ ./redis-cli smembers yasuD<br />
1. kurochan<br />
2. yasuda<br />
3. hiro<br />
３人そろった。</p>
<p>２つの団を結合(sunion)してみよう。<br />
kyon@andLinux:~/windows/redis/redis-1.02$ ./redis-cli sunion SOS yasuD<br />
1. kurochan<br />
2. mikuru<br />
3. yasuda<br />
4. koizumi<br />
5. kyon<br />
6. haruhi<br />
7. hiro<br />
8. nagato</p>
<p>セット(集合)なので、順序は気にしないらしい。<br />
ということで、<strong>rdedisは書き込みが１秒１０万個のデータが書き込み可能、読み出しも８万個/秒とかいう高速KVS(Key-Value storage)</strong>。その他の機能として、リスト操作、ソートされたセット(v1.1から)があり、今後の発展も期待できるが、まぁ、いまのところはただの高速KVSと思っておこう。</p>
<p>おまけにリスト操作(LPUSH/RPUSH)の例も。というふうにhead/tailの両方から操作できるらしい。<br />
kyon@andLinux:~/windows/redis/redis-1.02$ ./redis-cli k1 v1<br />
Unknown command &#8216;k1&#8242;<br />
kyon@andLinux:~/windows/redis/redis-1.02$ ./redis-cli rpush k1 v1<br />
OK<br />
kyon@andLinux:~/windows/redis/redis-1.02$ ./redis-cli rpush k2 v2<br />
OK<br />
kyon@andLinux:~/windows/redis/redis-1.02$ ./redis-cli rpush rpop k1<br />
OK<br />
kyon@andLinux:~/windows/redis/redis-1.02$ ./redis-cli get k1<br />
(error) ERR Operation against a key holding the wrong kind of value<br />
kyon@andLinux:~/windows/redis/redis-1.02$ ./redis-cli rpush k1 vv1<br />
OK<br />
kyon@andLinux:~/windows/redis/redis-1.02$ ./redis-cli LLEN k1<br />
2<br />
kyon@andLinux:~/windows/redis/redis-1.02$ ./redis-cli LLEN k2<br />
1<br />
kyon@andLinux:~/windows/redis/redis-1.02$ ./redis-cli rpush k1 vvv1<br />
OK<br />
kyon@andLinux:~/windows/redis/redis-1.02$ ./redis-cli LLEN k1<br />
3<br />
コマンドは大文字・小文字どちらでも良い模様。</p>
]]></content:encoded>
			<wfw:commentRss>http://wordprogress.org/archives/686/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>ところでredisって何？(前編)</title>
		<link>http://wordprogress.org/archives/681</link>
		<comments>http://wordprogress.org/archives/681#comments</comments>
		<pubDate>Mon, 23 Nov 2009 03:21:18 +0000</pubDate>
		<dc:creator>kyon</dc:creator>
				<category><![CDATA[NoSQL]]></category>
		<category><![CDATA[redis]]></category>

		<guid isPermaLink="false">http://wordprogress.org/?p=681</guid>
		<description><![CDATA[Redisとは、超高速なkey-valueストレージである上に、ただのKVSではなく、といろいろ語ろうと思ったが・・・自分もたいして使ってないので、まずは使ってみよう。。
redisのインストールは簡単なので本家に譲る。
以下では、redis-cliクライアントの経由で試してみる。golangで試すはその後に。
例によって、メンバー数５又は６のSOS団でテスト開始。
はじめにただのkey-valueストレージとして。
kyon@andLinux:~/windows/redis$ cd redis-1.02/
kyon@andLinux:~/windows/redis/redis-1.02$ ./redis-cli set nagato clojure
OK
kyon@andLinux:~/windows/redis/redis-1.02$ ./redis-cli set haruhi sleepingbeauty
OK
kyon@andLinux:~/windows/redis/redis-1.02$ ./redis-cli set mikuru mikurubaem
OK
kyon@andLinux:~/windows/redis/redis-1.02$ ./redis-cli get nagato
clojure
kyon@andLinux:~/windows/redis/redis-1.02$ ./redis-cli keys na*
nagato
kyon@andLinux:~/windows/redis/redis-1.02$ ./redis-cli set kyon whatitis
OK
kyon@andLinux:~/windows/redis/redis-1.02$ ./redis-cli set koizumi java8
OK
kyon@andLinux:~/windows/redis/redis-1.02$ ./redis-cli keys k*
koizumi kyon
団長はただのKVSには興味がないようなので、もう少し。
kyon@andLinux:~/windows/redis/redis-1.02$ ./redis-cli sadd SOS nagato
1
kyon@andLinux:~/windows/redis/redis-1.02$ ./redis-cli sadd SOS mikuru
1
kyon@andLinux:~/windows/redis/redis-1.02$ ./redis-cli sadd SOS koizumi
1
kyon@andLinux:~/windows/redis/redis-1.02$ ./redis-cli scard SOS
3
kyon@andLinux:~/windows/redis/redis-1.02$ ./redis-cli sadd SOS kyom
1
kyon@andLinux:~/windows/redis/redis-1.02$ ./redis-cli sadd SOS [...]]]></description>
			<content:encoded><![CDATA[<p>Redisとは、超高速なkey-valueストレージである上に、ただのKVSではなく、といろいろ語ろうと思ったが・・・自分もたいして使ってないので、まずは使ってみよう。。<br />
redisのインストールは簡単なので<a href="http://code.google.com/p/redis/">本家</a>に譲る。</p>
<p>以下では、redis-cliクライアントの経由で試してみる。golangで試すはその後に。</p>
<p>例によって、メンバー数５又は６のSOS団でテスト開始。</p>
<h3>はじめにただのkey-valueストレージとして。</h3>
<p>kyon@andLinux:~/windows/redis$ cd redis-1.02/<br />
kyon@andLinux:~/windows/redis/redis-1.02$ ./redis-cli set nagato clojure<br />
OK<br />
kyon@andLinux:~/windows/redis/redis-1.02$ ./redis-cli set haruhi sleepingbeauty<br />
OK<br />
kyon@andLinux:~/windows/redis/redis-1.02$ ./redis-cli set mikuru mikurubaem<br />
OK<br />
kyon@andLinux:~/windows/redis/redis-1.02$ ./redis-cli get nagato<br />
clojure<br />
kyon@andLinux:~/windows/redis/redis-1.02$ ./redis-cli keys na*<br />
nagato<br />
kyon@andLinux:~/windows/redis/redis-1.02$ ./redis-cli set kyon whatitis<br />
OK<br />
kyon@andLinux:~/windows/redis/redis-1.02$ ./redis-cli set koizumi java8<br />
OK<br />
kyon@andLinux:~/windows/redis/redis-1.02$ ./redis-cli keys k*<br />
koizumi kyon</p>
<h3>団長はただのKVSには興味がないようなので、もう少し。</h3>
<p>kyon@andLinux:~/windows/redis/redis-1.02$ ./redis-cli sadd SOS nagato<br />
1<br />
kyon@andLinux:~/windows/redis/redis-1.02$ ./redis-cli sadd SOS mikuru<br />
1<br />
kyon@andLinux:~/windows/redis/redis-1.02$ ./redis-cli sadd SOS koizumi<br />
1<br />
kyon@andLinux:~/windows/redis/redis-1.02$ ./redis-cli scard SOS<br />
3<br />
kyon@andLinux:~/windows/redis/redis-1.02$ ./redis-cli sadd SOS kyom<br />
1<br />
kyon@andLinux:~/windows/redis/redis-1.02$ ./redis-cli sadd SOS kyon<br />
1<br />
kyon@andLinux:~/windows/redis/redis-1.02$ ./redis-cli sadd SOS haruhi<br />
1<br />
kyon@andLinux:~/windows/redis/redis-1.02$ ./redis-cli scard SOS<br />
6<br />
kyon@andLinux:~/windows/redis/redis-1.02$ ./redis-cli smembers SOS<br />
1. mikuru<br />
2. koizumi<br />
3. kyom<br />
4. haruhi<br />
5. kyon<br />
6. nagato</p>
<p>あれ、typoしたぶん一人多い気が。あと、この順番では、団長がなっとくしない模様。setで団長をどう定義するのとかについては、<a href="http://wordprogress.org/archives/686">続く(後編)</a>。</p>
]]></content:encoded>
			<wfw:commentRss>http://wordprogress.org/archives/681/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>golangなNoSQLドライバ Go-Redis</title>
		<link>http://wordprogress.org/archives/676</link>
		<comments>http://wordprogress.org/archives/676#comments</comments>
		<pubDate>Mon, 23 Nov 2009 02:39:12 +0000</pubDate>
		<dc:creator>kyon</dc:creator>
				<category><![CDATA[Go]]></category>
		<category><![CDATA[NoSQL]]></category>
		<category><![CDATA[redis]]></category>

		<guid isPermaLink="false">http://wordprogress.org/?p=676</guid>
		<description><![CDATA[golangのinterfaceがしっくりくるようググるうちに、
NoSQLな高速ストレージredisのgolangドライバ Go-Redisにたどりついた。
golang-mongoの方はこれからのようだが、Go-Redisの方は、実装けっこう進んでる感じ。
で、クライアントのベンチマークコードまでつけてくれているよ。すばらしい。
それで、interfaceの使い方については、connection.goのコードに以下のくだりが、

// Handle to a future response
type PendingResponse struct {
	future interface{}
}

なるほど、こうやって、struct内でinterface宣言して、futureをいろいろ使いまわすのか。
他の言語うんぬん言う前に、やはりgolangなソース嫁だな。ソースが俺の嫁。

[追記]
おっち、こちらがGo-Redisの本家かな
]]></description>
			<content:encoded><![CDATA[<p>golangのinterfaceがしっくりくるようググるうちに、<br />
NoSQLな高速ストレージredisのgolangドライバ <a href="http://github.com/alphazero/Go-Redis">Go-Redis</a>にたどりついた。<br />
golang-mongoの方はこれからのようだが、Go-Redisの方は、実装けっこう進んでる感じ。</p>
<p>で、クライアントのベンチマークコードまでつけてくれているよ。すばらしい。</p>
<p>それで、interfaceの使い方については、<a href="http://github.com/alphazero/Go-Redis/blob/master/src/pkg/redis/connection.go">connection.go</a>のコードに以下のくだりが、</p>
<pre class="brush:c">
// Handle to a future response
type PendingResponse struct {
	future interface{}
}
</pre>
<p>なるほど、こうやって、struct内でinterface宣言して、futureをいろいろ使いまわすのか。<br />
他の言語うんぬん言う前に、やはりgolangなソース嫁だな。ソースが俺の嫁。</p>
<hr/>
[追記]<br />
おっち、<a href="http://github.com/evangineer/Go-Redis">こちらがGo-Redisの本家</a>かな</p>
]]></content:encoded>
			<wfw:commentRss>http://wordprogress.org/archives/676/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
