CentOS下のRedisデータベースの基本的なインストールと配置教程
Redisはオープンソースのマルチプラットフォームデータ記憶ソフトで、ANSI Cを使って編集し、直接メモリにデータセットを使用することで、非常に高い効率を実現します。RedisはLua、C、Java、Python、Perl、PHPなど多くの言語を含む様々なプログラミング言語をサポートしています。redisのコード量はとても小さくて、約3万行しかありません。「少ない」ことしかしませんが、よくできています。メモリ内で動作しても、データの保存が持続しています。また、redisの信頼性が高く、クラスタをサポートしています。これらはあなたのデータの安全を保証します。
Redisを構築
redisは現在、公式RPMのインストールパッケージがありません。ソースコードからコンパイルする必要があります。コンパイルするためにはMakeとGCCをインストールする必要があります。
GCCとMakeがインストールされていない場合はyumでインストールします。
ソースファイルのディレクトリに入ります。
redisを正常に動作させるためにはいくつかのカーネルパラメータを配置する必要がある。
vm.overcommt_を設定します。memoryは1で、これはデータが断ち切られることを免れることができて、詳しい情況はこれに会います。
redis.co nfはredisの設定ファイルですが、このファイルの名前は63791.comで、この数字はredisの傍受ネットワークポートです。このような名前を使うことをオススメします。
例のredis.com nf乃至/etc/redis/6379.com nfをコピーします。
daemenizeをセットしてください。systemdはフロントで実行する必要があります。そうしないとredisは突然キャンセルされます。
pidfileを/var/run/redis_に設定します。63797.pid。
デフォルトのポートを使う準備がないなら、変更できます。
ログレベルを設定します。
ログファイルのパスを変更します。
設定ディレクトリは/var/lib/redis/6379です。
下には安全性を向上させるいくつかの操作があります。
Unix sockets
多くの場合、クライアントプログラムとサーバ端末プログラムは同じマシンで動作しますので、ネットワーク上のsocketをモニターする必要はありません。これがあなたの使用状況と似ているなら、ネットワークsocketの代わりにunix socketを使用できます。そのためには、ポートを0に設定して、次のオプションを設定してunix socketを有効にしてください。
unix socketのソケットファイルを設定します。
リモートアクセスが必要かもしれません。もしそうなら、パスワードを設定してください。このように操作する前にパスワードを入力してください。
下記の命令の出力を想像してみます。はい、サーバーの設定を出力しますので、可能な限り、このようなアクセスを拒否するべきです。
CONFIG GET*
これを制限したり禁止するために、他のコマンドはレンame-commandコマンドを使用することができます。コマンド名と代わりの名前を提供してください。禁止するには、代わりの名前を空の文字列に設定する必要があります。コマンドの名前を推測することを禁止するのは安全です。
スナップ?ショット
デフォルトでは、redisは定期的に私たちが設定したディレクトリのdump.rdbファイルにデータセットを保存します。セーブの周波数はsaveコマンドで設定できます。最初のパラメータは秒単位の時間フレームで、2番目のパラメータはデータファイルに修正された数です。
15分ごとに少なくとも一回のキーを修正しました。
起動時に起動
システムの起動リストにsystemdを使って、redisを追加することができます。
コピー例のinit_スクリプトファイルから/etc/init.dまでは、スクリプト名に代表されるポート番号に注意してください。
Redisを構築
redisは現在、公式RPMのインストールパッケージがありません。ソースコードからコンパイルする必要があります。コンパイルするためにはMakeとGCCをインストールする必要があります。
GCCとMakeがインストールされていない場合はyumでインストールします。
yum install gcc make
公式サイトからタタ圧縮バッグをダウンロードします。
curl http://download.redis.io/releases/redis-3.0.4.tar.gz -o redis-3.0.4.tar.gz
展開します。
tar zxvf redis-3.0.4.tar.gz
解凍後のディレクトリに入ります。
cd redis-3.0.4
Makeを使ってソースファイルをコンパイルします。
make
インストールソースファイルのディレクトリに入ります。
cd src
Redisのサーバとクライアントを/usr/local/binにコピーします。
cp redis-server redis-cli /usr/local/bin
sentinel、benchmarkとcheckもコピーしたほうがいいです。
cp redis-sentinel redis-benchmark redis-check-aof redis-check-dump /usr/local/bin
redis設定フォルダを作成します。
mkdir /etc/redis
/var/lib/redisで有効にデータを保存するディレクトリを作成します。
mkdir -p /var/lib/redis/6379
システムパラメータredisを正常に動作させるためにはいくつかのカーネルパラメータを配置する必要がある。
vm.overcommt_を設定します。memoryは1で、これはデータが断ち切られることを免れることができて、詳しい情況はこれに会います。
sysctl -w vm.overcommit_memory=1
backlogs接続数を変更する最大値は、redis.co.nfのtcp-backlogs値、すなわちデフォルト値511を超える。kersnel.orgでsyssctlベースのipネットワークトンネルに関する情報をより多く見つけることができます。
sysctl -w net.core.somaxconn=512
透明な巨ページメモリ(tranparent huge pages)のサポートをキャンセルします。これはredisの使用過程に遅延とメモリアクセスの問題が発生するためです。
echo never > /sys/kernel/mm/transparent_hugepage/enabled
redis.comredis.co nfはredisの設定ファイルですが、このファイルの名前は63791.comで、この数字はredisの傍受ネットワークポートです。このような名前を使うことをオススメします。
例のredis.com nf乃至/etc/redis/6379.com nfをコピーします。
cp redis.conf /etc/redis/6379.conf
このファイルを編集してパラメータを設定します。
vi /etc/redis/6379.conf
daemenizedaemenizeをセットしてください。systemdはフロントで実行する必要があります。そうしないとredisは突然キャンセルされます。
daemonize no
pidfilepidfileを/var/run/redis_に設定します。63797.pid。
pidfile /var/run/redis_6379.pid
ポーターデフォルトのポートを使う準備がないなら、変更できます。
port 6379
loglevelログレベルを設定します。
loglevel notice
logfileログファイルのパスを変更します。
logfile /var/log/redis_6379.log
dir設定ディレクトリは/var/lib/redis/6379です。
dir /var/lib/redis/6379
安全下には安全性を向上させるいくつかの操作があります。
Unix sockets
多くの場合、クライアントプログラムとサーバ端末プログラムは同じマシンで動作しますので、ネットワーク上のsocketをモニターする必要はありません。これがあなたの使用状況と似ているなら、ネットワークsocketの代わりにunix socketを使用できます。そのためには、ポートを0に設定して、次のオプションを設定してunix socketを有効にしてください。
unix socketのソケットファイルを設定します。
unixsocket /tmp/redis.sock
socketファイルの権限を制限します。
unixsocketperm 700
今はredis-cliにアクセスできるように、-sパラメータを使ってこのsocketファイルを指すべきです。
redis-cli -s /tmp/redis.sock
requirepassリモートアクセスが必要かもしれません。もしそうなら、パスワードを設定してください。このように操作する前にパスワードを入力してください。
requirepass "bTFBx1NYYWRMTUEyNHhsCg"
rename-command下記の命令の出力を想像してみます。はい、サーバーの設定を出力しますので、可能な限り、このようなアクセスを拒否するべきです。
CONFIG GET*
これを制限したり禁止するために、他のコマンドはレンame-commandコマンドを使用することができます。コマンド名と代わりの名前を提供してください。禁止するには、代わりの名前を空の文字列に設定する必要があります。コマンドの名前を推測することを禁止するのは安全です。
rename-command FLUSHDB "FLUSHDB_MY_SALT_G0ES_HERE09u09u"
rename-command FLUSHALL ""
rename-command CONFIG "CONFIG_MY_S4LT_GO3S_HERE09u09u"
スナップ?ショット
デフォルトでは、redisは定期的に私たちが設定したディレクトリのdump.rdbファイルにデータセットを保存します。セーブの周波数はsaveコマンドで設定できます。最初のパラメータは秒単位の時間フレームで、2番目のパラメータはデータファイルに修正された数です。
15分ごとに少なくとも一回のキーを修正しました。
save 900 1
5分ごとに少なくとも10回キーを修正しました。
save 300 10
1分おきに、少なくとも10000回キーを修正しました。
save 60 10000
ファイル/var/lib/redis/6379/dump.rdbは前回保存してからのメモリのデータセットの転送データを含みます。一時ファイルを作成してからファイルを交換します。ここにはデータ破壊の問題がありません。心配しないでください。直接このファイルをコピーしてもいいです。起動時に起動
システムの起動リストにsystemdを使って、redisを追加することができます。
コピー例のinit_スクリプトファイルから/etc/init.dまでは、スクリプト名に代表されるポート番号に注意してください。
cp utils/redis_init_script /etc/init.d/redis_6379
今はsystemdを使いますので、/etc/systems/systemの下で単位ファイルを作成します。名前はredis_です。63799.service。
vi /etc/systemd/system/redis_6379.service
下記の内容を記入してください。詳細はsystemd.serviceです。
[Unit]
Description=Redis on port 6379
[Service]
Type=forking
ExecStart=/etc/init.d/redis_6379 start
ExecStop=/etc/init.d/redis_6379 stop
[Install]
WantedBy=multi-user.target