Redisの代わりにValkeyをインストール

Redisがリポジトリになかったので検索してみると、Valkeyが標準リポジトリから配布されているので調査したときの覚書。
Gemini 3 Pro Previewと対話。

環境: CentOS Stream 10, Valkey 8.0.6


1. Valkeyとは

Valkeyはかつてのオープンソース版Redis(BSDライセンス)の正当な後継として作られたフォーク。
参考: Valkey

2024年3月にRedis社(Redis Inc.)は、長年採用していたBSD 3-Clause(非常に自由度が高いライセンス)を廃止し、厳密な意味でのオープンソース(OSI定義)ではなくなった。
2024年3月にLinux Foundation主導でValkeyプロジェクトが発足。
参考: Valkey - Wikipedia


特徴

Redis (現在)

Valkey

ライセンス

RSALv2 / SSPL (プロプライエタリに近い)

BSD 3-Clause (完全なOSS)

開発主体

Redis Inc. (1社独占)

Linux Foundation (コミュニティ主導)

ベース

オリジナル

Redis 7.2.4からのフォーク

互換性

-

Redisクライアントと完全互換を目指す (Drop-in replacement)

主なサポーター

Redis Inc.

AWS, Google, Oracle, Ericsson, Heroku

クラウド対応

今後、公式以外での利用はライセンス契約が必要になる可能性

主要クラウドベンダーが標準サポートへ移行中

実質的な標準(デファクトスタンダード)はValkeyに移った。


2. Valkeyのインストール

dnf経由でインストール。
# dnf install valkey

起動、自動起動オン、確認。
# systemctl start valkey
# systemctl enable valkey
# systemctl status valkey

待ち受けポート確認。
# ss -atn

/etc/valkey/sentinel.confはサーバー複数台で冗長構成(レプリケーション)を組み、自動復旧させたい場合のみ使う。

設定ファイルをGemini先生に日本語で提案してもらう。
# cd /etc/valkey/
# cp valkey.conf valkey.conf.bak20251209
# vim valkey.conf

# Valkey Configuration for Rspamd (CentOS Stream 10 / Standalone)

################################## ネットワーク設定 ###################################

# 接続を受け付けるIPアドレス
# Rspamdが同居している場合は 127.0.0.1 のままでOKです。
# デフォルト: bind 127.0.0.1 -::1
bind 127.0.0.1 -::1

# 保護モード
# 外部からの意図しないアクセスを防ぎます。
# デフォルト: yes
protected-mode yes

# ポート番号
# デフォルト: 6379
port 6379

# TCPバックログ (接続待ちキュー)
# Rspamdからの大量の接続要求をさばくためデフォルトでOK。
# デフォルト: 511
tcp-backlog 511

# アイドル接続の切断タイムアウト (0は無効=切断しない)
# Rspamdは接続プールを使うため 0 推奨。
# デフォルト: 0
timeout 0

# TCP Keepalive
# デフォルト: 300
tcp-keepalive 300

################################# 一般設定 #####################################

# デーモン化
# systemdで管理するため no にします。
# デフォルト: no
daemonize no

# Systemdとの連携
# CentOS Stream 10 (dnfインストール) の場合は systemd 必須です。
# デフォルト: no (ですが、ここでは systemd に変更します)
supervised systemd

# PIDファイル
# デフォルト: /run/valkey/valkey.pid
pidfile /run/valkey/valkey.pid

# ログレベル
# (debug, verbose, notice, warning)
# デフォルト: notice
loglevel notice

# ログファイルパス
# デフォルト: /var/log/valkey/valkey.log
logfile /var/log/valkey/valkey.log

# データベース数
# Rspamdは複数のDB番号を使い分ける場合があるためデフォルト維持。
# デフォルト: 16
databases 16

# 起動時ロゴの表示
# ログが見やすくなるよう no に変更しても良いですが、デフォルトは yes です。
# デフォルト: yes (ここでは no を推奨)
always-show-logo no

################################ スナップショット (RDB) ################################
# AOFを使わないため、ここが唯一の永続化設定になります。
# Rspamdの学習データを定期的にディスクへ保存します。

# 保存ルール: <秒数> <変更回数>
# デフォルト設定:
save 3600 1
save 300 100
save 60 10000

# 保存失敗時の書き込み停止
# ディスクフルなどで保存できない場合、メモリへの書き込みも止めて整合性を守ります。
# デフォルト: yes
stop-writes-on-bgsave-error yes

# RDB圧縮 (LZF)
# CPU負荷は僅かですがディスク容量を節約できます。
# デフォルト: yes
rdbcompression yes

# RDBチェックサム
# デフォルト: yes
rdbchecksum yes

# 保存ファイル名
# デフォルト: dump.rdb
dbfilename dump.rdb

# データ保存ディレクトリ
# デフォルト: ./ (dnf版は通常 /var/lib/valkey)
dir /var/lib/valkey

################################## セキュリティ ###################################

# パスワード設定
# Rspamdの設定ファイル側でもパスワード指定が必要になります。
# 同一サーバ内で閉じるなら設定なしでも運用可能ですが、設定を推奨します。
# デフォルト: コメントアウト (設定なし)
# requirepass your_secret_password

################################# クライアント ####################################

# 最大同時接続数
# Rspamdが高負荷になった場合に備え、OSのファイルディスクリプタ上限に注意してください。
# デフォルト: 10000
# maxclients 10000

############################## メモリ管理 (重要) ################################

# 最大メモリ使用量
# Rspamdがメモリを食いつぶしてOSごと落ちるのを防ぐため、必ず設定してください。
# 目安: 搭載メモリの50%〜70%程度
# デフォルト: 0 (無制限)
maxmemory 1gb

# メモリあふれ時の削除ポリシー (Eviction Policy)
# Rspamdのキャッシュ用途なら allkeys-lru が良いですが、
# Bayes学習データなどが消えると困る場合は noeviction (エラーを返す) が安全です。
# デフォルト: noeviction
maxmemory-policy noeviction

############################## AOF (Append Only Mode) ###############################

# AOFの有効化
# 今回の要件により無効化します。
# デフォルト: no
appendonly no

# 以下、AOFが無効なら無視されますが、デフォルト値を記載しておきます。
appendfilename "appendonly.aof"
appenddirname "appendonlydir"
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
aof-use-rdb-preamble yes

################################## スローログ ###################################

# 実行時間がこれ以上のコマンドを記録 (マイクロ秒)
# 10000 = 10ms
# デフォルト: 10000
slowlog-log-slower-than 10000

# スローログ保持数
# デフォルト: 128
slowlog-max-len 128

################################ 高度な設定 ###################################

# ハッシュテーブルのアクティブなリハッシュ
# メモリ解放を助けます。
# デフォルト: yes
activerehashing yes

# クライアント出力バッファ制限
# デフォルト値:
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit replica 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60

# バックグラウンドタスクの頻度 (Hz)
# デフォルト: 10
hz 10

# 動的HZ調整
# クライアント数に応じてHzを自動調整します。
# デフォルト: yes
dynamic-hz yes

# Jemallocバックグラウンドスレッド
# メモリの断片化をバックグラウンドで整理します。
# デフォルト: yes
jemalloc-bg-thread yes

再起動して確認(設定ファイルをテストするコマンドはないらしい)。
# systemctl restart valkey
# systemctl status valkey

ログを確認。
# less /var/log/valkey/valkey.log


3. Valkeyの保守用コマンド

リアルタイム監視 (Ctrl-cで終了)
# valkey-cli --stat

サーバーの全情報を表示
# valkey-cli INFO

  • valkey-cli INFO memory      # メモリ使用量 (used_memory_human が重要)
  • valkey-cli INFO server      # バージョンや起動時間 (uptime)
  • valkey-cli INFO clients     # 現在の接続数 (connected_clients)
  • valkey-cli INFO persistence # RDB/AOFの保存状態 (rdb_last_bgsave_status)

特定の設定だけピンポイントで確認
# valkey-cli CONFIG GET maxmemory
# valkey-cli CONFIG GET dir

全体をスキャンして統計を表示 (サーバー負荷を抑えつつ実行)
# valkey-cli --bigkeys

最小/平均/最大レイテンシをリアルタイム計測(Ctrl-cで終了)
# valkey-cli --latency



▼ 関連記事