CentOS下のRedisデータベースの基本的なインストールと配置教程

5228 ワード

Redisはオープンソースのマルチプラットフォームデータ記憶ソフトで、ANSI Cを使って編集し、直接メモリにデータセットを使用することで、非常に高い効率を実現します。RedisはLua、C、Java、Python、Perl、PHPなど多くの言語を含む様々なプログラミング言語をサポートしています。redisのコード量はとても小さくて、約3万行しかありません。「少ない」ことしかしませんが、よくできています。メモリ内で動作しても、データの保存が持続しています。また、redisの信頼性が高く、クラスタをサポートしています。これらはあなたのデータの安全を保証します。
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.com
redis.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
daemenize
daemenizeをセットしてください。systemdはフロントで実行する必要があります。そうしないとredisは突然キャンセルされます。

daemonize no
pidfile
pidfileを/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"
20151215150107505.jpg (698×429)
スナップ?ショット
デフォルトでは、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