TAG | redis
チームWordProgressの新着記事一覧です :
(※各記事の内容を閲覧するためには、各記事のタイトルをクリックしてください。)
記事概要の
プレビュー
最近、すっかり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でも参加できるとのこと。まぁ、商品はたわいもないもののようだが、ちょっと本気だしてカスタマイズしてみる、には良い機会やもと思う今日この頃。
—
実はWindows Server2008の使用権などをもっていたりして、早く調査しておけばよかったのだが、windows のIISサーバではmemcachedのようなキャッシュの仕組みは何で運用されているんだろうか?・・・WordPressの裏方には、昨日当サイトで大々的に(?)とりあげたredis-db(実はwin32版もある)あたりをもってくるのもありかな、など、妄想は早くも広がりはじめている・・・実際にコンテストに応募となった際にはまた、ご報告いたします
m(_ _)m =>ただの 妄想で終わる可能性もあるため、下手に下手に。。
[追記] @IT誌にこのあたりのもっと詳しい解説があった。う~ん、Windows azure界隈はやはり良く分かってない。無知の涙(違)。。
Azure, redis, Wordpress
Hide
ということで、前回までで一通り準備を終えたので、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!”);
[...]
Go, redis
Hide
ということで、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 — 20000 opts — 127.0.0.1:6379
—
cmd: PING
20000 iterations of PING in 710 msecs
—
cmd: INCR
20000 iterations of INCR in 870 msecs
—
cmd: SET
20000 iterations of SET in 980 msecs
—
cmd: GET
20000 iterations of [...]
Go, redis
Hide
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
余計な3番を消そう。
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
3人そろった。
2つの団を結合(sunion)してみよう。
kyon@andLinux:~/windows/redis/redis-1.02$ ./redis-cli sunion SOS yasuD
1. kurochan
2. mikuru
3. yasuda
4. koizumi
5. kyon
6. [...]
redis
Hide
|
Posted by kyon in NoSQL
Redisとは、超高速なkey-valueストレージである上に、ただのKVSではなく、といろいろ語ろうと思ったが・・・自分もたいして使ってないので、まずは使ってみよう。。
redisのインストールは簡単なので本家に譲る。
以下では、redis-cliクライアントの経由で試してみる。golangで試すはその後に。
例によって、メンバー数5又は6の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 [...]
redis
Hide
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の本家かな
redis
Hide