🐘

Redis の概要と基本的な使い方

2023/12/25に公開

概要

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