🐘
Redis の概要と基本的な使い方
概要
Redis について基本的な知識と使い方をまとめました。
筆者は Rails アプリケーションで Redis を使う機会があり、「そもそも Redis とはなんぞや?」
というとこからのスタートだったので、ひとまず Redis 単体で動かしてみようという経緯からこの記事を書きました。
次回は Rails からの Redis の操作を書きたいと思います。
Redis とは
Redis は MySQL などのリレーショナルデータベース管理システム(RDBMS)と比較される、NoSQL に分類されるインメモリデータベースです。
他にも有名なものに、MongoDB が上げられます。
NoSQL と RDBMS の違い
メリットとして、メモリ内で動作するため、RDBMS よりも高速に読み書きができます。
デメリットとしてはメモリで動作するため、データが永続化できないという問題があります。
他の比較として以下のようなことが上げられます。
データモデル | スキーマ | スケーラビリティ | 用途 | |
---|---|---|---|---|
RDBMS | テーブル | 固定されている | 主に垂直スケーリング | 大規模なデータ処理、高速な読み書きが必要な場合。 |
NoSQL | キーバリュー(Redis)、ドキュメント(MongoDB)など様々 | 柔軟(スキーマレス) | 水平スケーリングに優れる | 安定したデータ管理。複雑なトランザクションが必要な場合。 |
使い方
今回は Docker 上で動かします。
以下の docker-compose.yml
を作ってください。
version: '3'
services:
redis:
image: "redis:latest"
ports:
- "6379:6379"
起動します。
docker-compose up
バージョン確認
> redis-server --version
Redis server v=7.2.3 sha=00000000:0 malloc=jemalloc-5.3.0 bits=64 build=844e0bcfd16d3790
Redis クライアントへの接続
> redis-cli
127.0.0.1:6379>
これでコマンド入力を受け付ける状態になります。
キーの設定
> set key_1 "hello"
キーの取得
> get key_1
"hello"
キーの上書き
既存のキーに新しい値を設定すると上書きされる
> set key_1 "hogehoge"
> get key_1
"hogehoge"
キーの一覧
> set key_2 piyopiyo
> set key_3 fugafuga
> keys *
1) "key_2"
2) "key_3"
3) "key_1"
リストへの追加と取得
取得に関しては第1引数と第2引数に、取得したい要素の範囲を渡す。
# 追加
> lpush list_1 hello
(integer) 1
> lpush list_1 world
(integer) 2
> lpush list_1 hogehoge
(integer) 3
# 取得。後入れ先出し法のよう。
> lrange list_1 0 1
1) "hogehoge"
2) "world"
> lrange list_1 0 0
1) "hogehoge"
# 複数の値も追加することができる
> lpush list_1 fugafuga piyopiyo
(integer) 5
# 0 ~ -1 を渡すことで全件取得
> lrange list_1 0 -1
1) "piyopiyo"
2) "fugafuga"
3) "hogehoge"
4) "world"
5) "hello"
キーの削除
> keys *
1) "key_2"
2) "list_1"
3) "key_3"
4) "key_1"
# 削除
> del key_1
(integer) 1
> keys *
1) "key_2"
2) "list_1"
3) "key_3"
Discussion