たぶん忘れるメモ

記憶力はないのです。

Redisってなに?

Radius と Redis を間違えていて(発音的な意味で)、ちょっぴり恥ずかしい思いをしたのでちゃんと調べてみた。

Redis

数年前得たぼんやりとした知識では、Memcacheの代わりに使うこと増えたね。使うの? だったら Windows にインストール出来ないのでどっかサーバ立てましょうよ的な印象でした。VMでもいいんですけど、コマンド叩けないプログラマの環境を構築するのにこっちが面倒になるので Windows で簡単に入れられないのはサーバ作っちゃいましょってやってました。

今回ググってみたら今Windows版のRedisあるんですね。しかもマイクロソフト製… そういやKVS製品なかった。

https://github.com/MSOpenTech/Redis

Node.jsも気がついたらWindowsインストーラあったり、まだまだWindowsで開発頑張れそうです。

memcache vs redis

さて、Memcacheよりも速いよ、レプができて型あるよってくらいしか Redis のことを知らなかったので、「memcache vs redis」 でググったらまんまの内容が stackoverflow で見つかったので、拙い英語力で読んでみる。

http://stackoverflow.com/questions/10558465/memcache-vs-redis

+50されてるのが、詳しいんだけどなんかRedisに肩入れされてますね?

ベンチマーク結果をぐぐると単純にget/setした場合は、memcacheのほうが速いという記事のほうが多いです。
単純な分速いんだろうなぁ。永続性とか安定性とか速度以外にも必要なものはあるので、単純に速度比較のみで優劣を図るのは個人的にはちょっと違うと思う。

となるとRedisを使いたいときはどんな時だろう? 永続性とか安定性とかは運用してる人に聞くとして、使わなくてもわかる機能面をもうちょっと掘り下げる。

KVSとして、特徴

  • データタイプがある

インクリメントできるんだ! これいいなぁ。memcacheだとトランザクションないからインクリメントで正確性を求めるなら使えないって感じだった。あ、…ファイルロックつかったような、気が…

あと、String, Lists, Sets, Hashes, Sorted Sets が使えるとのこと。 今までシリアライズしてAddして、取ってきてからアンシリアライズしてたのが、直接KVSにListsやらの形で格納できるのはいいなぁ。Setsなんか重複の考慮をKVSでやってくれる。

ユーザ向けのアラートメッセージとかに使うと便利なのかも。
チャット的なので、誰々さんがINしました!的な軽いものなら合いそう。

  • キーのリネームできる

すごいけどすごいけど便利だけど、使うの怖い↓

If newkey already exists it is overwritten.

単純にキャッシュとして使うには少しもったいない気がします。簡易DB的な使い方が向いてそう。SQLLiteっぽい? memcacheでやってたのをそのままRedisにしてもいいけど、使うと決めたならこのへんのクラスはリファクタリングしたいかな。