Redis とは?

編集

Redis の概要

編集
  • Redis(Remote Dictionary Server)は、オープンソースのインメモリデータストアです。
  • キーバリュー型のデータベースとして設計されており、高速なデータアクセスを提供します。
  • データの永続化もサポートしており、キャッシュ、セッション管理、メッセージキューなど、さまざまな用途で利用されます。

Redis の特徴

編集
  • 高速: データをメモリに保存するため、非常に高速なアクセスが可能。
  • 多様なデータ型: 文字列、リスト、セット、ハッシュ、ソート済みセットなどをサポート。
  • 永続化: スナップショットやAOF(Append-Only File)を使用してデータをディスクに保存。
  • レプリケーション: マスタースレーブレプリケーションをサポート。
  • トランザクション: 複数のコマンドをアトミックに実行可能。

Redis のインストールとセットアップ

編集

インストール

編集
  • debian:
    sudo apt-get update
    sudo apt-get install redis-server
    
  • macOS:
    brew install redis
    
  • Windows: Windows Subsystem for Linux (WSL) を使用するか、Docker を利用。

起動と停止

編集
  • 起動:
    redis-server
    
  • 停止:
    redis-cli shutdown
    

設定ファイル

編集
  • 設定ファイルは通常 /etc/redis/redis.conf にあります。
  • 主な設定項目:
    • port: リスニングポート(デフォルト: 6379)
    • bind: バインドするIPアドレス
    • requirepass: パスワード認証

Redis の基本操作

編集

Redis CLI の使用

編集
  • Redis CLI を起動:
    redis-cli
    
  • 基本的なコマンド:
    • SET key value: キーに値を設定
    • GET key: キーの値を取得
    • DEL key: キーを削除
    • KEYS pattern: パターンに一致するキーを検索

データの永続化

編集
  • RDB(スナップショット): 定期的にデータをディスクに保存。
  • AOF(Append-Only File): すべての書き込み操作をログに記録。

データ型とその使い方

編集

文字列(String)

編集
  • 文字列を保存するためのデータ型。
  • 例:
    SET mykey "Hello"
    GET mykey
    

リスト(List)

編集
  • 順序付きの要素のリスト。
  • 例:
    LPUSH mylist "world"
    LPUSH mylist "hello"
    LRANGE mylist 0 -1
    

セット(Set)

編集
  • 一意の要素の集合。
  • 例:
    SADD myset "apple"
    SADD myset "banana"
    SMEMBERS myset
    

ハッシュ(Hash)

編集
  • フィールドと値のペアを保存。
  • 例:
    HSET myhash field1 "Hello"
    HGET myhash field1
    

ソート済みセット(Sorted Set)

編集
  • スコア付きの一意の要素の集合。
  • 例:
    ZADD myzset 1 "one"
    ZADD myzset 2 "two"
    ZRANGE myzset 0 -1 WITHSCORES
    

高度な機能

編集

トランザクション

編集
  • 複数のコマンドをアトミックに実行。
  • 例:
    MULTI
    SET key1 "value1"
    SET key2 "value2"
    EXEC
    

Pub/Sub

編集
  • メッセージのパブリッシュとサブスクライブをサポート。
  • 例:
    SUBSCRIBE mychannel
    PUBLISH mychannel "Hello"
    

Lua スクリプティング

編集
  • Lua スクリプトを使用して複雑な操作を実行。
  • 例:
    EVAL "return redis.call('GET', 'mykey')" 0
    

パフォーマンスチューニング

編集

メモリ最適化

編集
  • maxmemory 設定を使用してメモリ使用量を制限。
  • maxmemory-policy でデータの削除ポリシーを設定。

レプリケーション

編集
  • マスタースレーブレプリケーションを使用して読み取り負荷を分散。

クラスタリング

編集
  • Redis Cluster を使用してデータを分散保存。

セキュリティと運用

編集

認証

編集
  • requirepass を使用してパスワード認証を設定。

ネットワークセキュリティ

編集
  • bind 設定を使用してアクセス可能なIPアドレスを制限。

バックアップとリストア

編集
  • RDB や AOF を使用して定期的にバックアップ。

ユースケースとベストプラクティス

編集

キャッシュ

編集
  • データベースの負荷を軽減するためにキャッシュとして使用。

セッション管理

編集
  • ユーザーのセッションデータを保存。

メッセージキュー

編集
  • Pub/Sub やリストを使用してメッセージキューを実装。

トラブルシューティング

編集

パフォーマンスの問題

編集
  • メモリ使用量やネットワーク遅延を確認。

データの不整合

編集
  • レプリケーションや永続化設定を確認。

接続の問題

編集
  • ファイアウォールやネットワーク設定を確認。

参考資料

編集

このハンドブックは、Redis の基本的な使い方から高度な機能までをカバーしています。Redis を効果的に活用するための参考としてご利用ください。