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 -::1bind 127.0.0.1 -::1# 保護モード# 外部からの意図しないアクセスを防ぎます。# デフォルト: yesprotected-mode yes# ポート番号# デフォルト: 6379port 6379# TCPバックログ (接続待ちキュー)# Rspamdからの大量の接続要求をさばくためデフォルトでOK。# デフォルト: 511tcp-backlog 511# アイドル接続の切断タイムアウト (0は無効=切断しない)# Rspamdは接続プールを使うため 0 推奨。# デフォルト: 0timeout 0# TCP Keepalive# デフォルト: 300tcp-keepalive 300################################# 一般設定 ###################################### デーモン化# systemdで管理するため no にします。# デフォルト: nodaemonize no# Systemdとの連携# CentOS Stream 10 (dnfインストール) の場合は systemd 必須です。# デフォルト: no (ですが、ここでは systemd に変更します)supervised systemd# PIDファイル# デフォルト: /run/valkey/valkey.pidpidfile /run/valkey/valkey.pid# ログレベル# (debug, verbose, notice, warning)# デフォルト: noticeloglevel notice# ログファイルパス# デフォルト: /var/log/valkey/valkey.loglogfile /var/log/valkey/valkey.log# データベース数# Rspamdは複数のDB番号を使い分ける場合があるためデフォルト維持。# デフォルト: 16databases 16# 起動時ロゴの表示# ログが見やすくなるよう no に変更しても良いですが、デフォルトは yes です。# デフォルト: yes (ここでは no を推奨)always-show-logo no################################ スナップショット (RDB) ################################# AOFを使わないため、ここが唯一の永続化設定になります。# Rspamdの学習データを定期的にディスクへ保存します。# 保存ルール: <秒数> <変更回数># デフォルト設定:save 3600 1save 300 100save 60 10000# 保存失敗時の書き込み停止# ディスクフルなどで保存できない場合、メモリへの書き込みも止めて整合性を守ります。# デフォルト: yesstop-writes-on-bgsave-error yes# RDB圧縮 (LZF)# CPU負荷は僅かですがディスク容量を節約できます。# デフォルト: yesrdbcompression yes# RDBチェックサム# デフォルト: yesrdbchecksum yes# 保存ファイル名# デフォルト: dump.rdbdbfilename 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 (エラーを返す) が安全です。# デフォルト: noevictionmaxmemory-policy noeviction############################## AOF (Append Only Mode) ################################ AOFの有効化# 今回の要件により無効化します。# デフォルト: noappendonly no# 以下、AOFが無効なら無視されますが、デフォルト値を記載しておきます。appendfilename "appendonly.aof"appenddirname "appendonlydir"appendfsync everysecno-appendfsync-on-rewrite noauto-aof-rewrite-percentage 100auto-aof-rewrite-min-size 64mbaof-load-truncated yesaof-use-rdb-preamble yes################################## スローログ #################################### 実行時間がこれ以上のコマンドを記録 (マイクロ秒)# 10000 = 10ms# デフォルト: 10000slowlog-log-slower-than 10000# スローログ保持数# デフォルト: 128slowlog-max-len 128################################ 高度な設定 #################################### ハッシュテーブルのアクティブなリハッシュ# メモリ解放を助けます。# デフォルト: yesactiverehashing yes# クライアント出力バッファ制限# デフォルト値:client-output-buffer-limit normal 0 0 0client-output-buffer-limit replica 256mb 64mb 60client-output-buffer-limit pubsub 32mb 8mb 60# バックグラウンドタスクの頻度 (Hz)# デフォルト: 10hz 10# 動的HZ調整# クライアント数に応じてHzを自動調整します。# デフォルト: yesdynamic-hz yes# Jemallocバックグラウンドスレッド# メモリの断片化をバックグラウンドで整理します。# デフォルト: yesjemalloc-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