Redisの基本定義
RedisはANSI C言語で実装されたオープンソースの、ネットワーク経由で利用可能、メモリ上でのデータ保管と永続化に対応したKey‑Valueデータベース/ストレージシステムです。複数のプログラミング言語向けクライアントAPIが用意されています。
- NoSQLの非リレーショナルデータベースに分類されます;
- Memcachedと同系統のソフトウェアですが機能が豊富で、Memcachedの弱点を補えます;
- MySQLなどリレーショナルデータベースの補助キャッシュとしてよく使われます。
対応するデータ型
String:文字列型List:双方向連結リストSet:順序なし集合zset(sorted set):ソート済み集合Hash:ハッシュ構造(Mapに似た形式)
Memcachedは文字列だけに対応しており、これが両者の代表的な違いの一つです。
主な特徴
- 多言語クライアント対応
公式よりJava、C/C++、C#、PHP、JavaScript、Python、Ruby、Perlなど多くの言語向けSDKが提供され、開発で簡単に利用できます。 - マスタースレーブ同期機構
マスタースレーブレプリケーションに対応。遠隔地へのバックアップや読み書き分離を実現し、可用性を高められます。 - 高パフォーマンス
データは基本的にメモリ上に置かれるため読み書きが高速で、分散キャッシュとして広く使われます。 - データ永続化機能
メモリのデータをディスクに保存可能。再起動してもデータが完全に消えません(Memcachedは標準で永続化機能がありません)。
開発背景
初期のRedisプロジェクトはVMwareの資金援助を受け開発・保守されていました。
デモとしてWinForm(C#)の簡易Redisクライアントサンプルを使用します。C#からRedisを扱う入門的なサンプルコードです。
- キーと値を設定
- キーを指定して値を取得
Redis と Memcached 簡易比較
| 特徴 | Redis | Memcached |
|---|---|---|
| データ型 | 5種類の基本構造 | 文字列のみ |
| 永続化 | RDB/AOF永続化に対応 | 永続化非対応 |
| マスタースレーブ複製 | 対応 | 標準機能なし |
| メモリ退避 | 複数の退避ポリシー | LRUによる退避 |
紹介
Next: インストール