Redisのインストールと構成(4.0.9)
Redisのインストールと構成
Redisは、データベース、キャッシュ、およびメッセージ・エージェントとして使用されるメモリ・データ構造のオープン・ソース(BSDライセンス)です.文字列、ハッシュ、リスト、コレクション、範囲クエリーのソートセット、ビットマップ、スーパーログ、半径クエリーの地理空間インデックスなどのデータ構造をサポートします.Redisには、内蔵レプリケーション、Luaスクリプト、LRU駆逐、トランザクション、および異なるレベルのディスク持続性があり、Redis Centinelによって高可用性を提供し、Redisクラスタによって自動パーティション化されます.
一、Redisのインストール
まず、gccなどのインストールに必要な環境を設定し、YUMパッケージ管理ツールでインストールします.
[root@VM_186_206_centos ~]# yum install gcc
その後、wgetを通じてredisのソースコード圧縮アーカイブファイルをダウンロードします(ここでダウンロードしたのはRedis 4.0.9の安定版で、Redis 3.2には大きな脆弱性があり、核客はあなたが起動したredis-serverを通じてコンピュータの制御権を取得し、鉱山ウイルスをインストールします).
Redis公式サイト
Redis-4.0.9のダウンロードアドレス
http://download.redis.io/releases/redis-4.0.9.tar.gz
wgetでソースリソースをダウンロード
[root@VM_186_206_centos ~]# wget http://download.redis.io/releases/redis-4.0.9.tar.gz
ダウンロードしたファイルを解凍してアーカイブします
[root@VM_186_206_centos ~]# tar -zxvf redis-4.0.9.tar.gz
アーカイブを解凍したフォルダを目的のディレクトリに挿入
[root@VM_186_206_centos ~]# rm redis-4.0.9 /usr/local/redis-4.0.9
ソースコードへのコンパイル
[root@VM_186_206_centos ~]# cd /usr/local/redis-4.0.9
[root@VM_186_206_centos redis-4.0.9]# make
コンパイル中にエラーが発生する可能性があります.最も重要なのは、linuxにgccのコンパイル環境がインストールされているかどうかです.
コンパイル中に次のエラーが発生する可能性があります.
In file included from adlist.c:34:0:
zmalloc.h:50:31: fatal error: jemalloc/jemalloc.h: No such file or directory
#include
エラーの解決方法はmakeの後にパラメータMALLOC=libcを加えることです
[root@VM_186_206_centos redis-4.0.9]# make MALLOC=libc
コンパイルが完了したら、コンパイルにエラーがないかどうかを確認できます.
[root@VM_186_206_centos redis-4.0.9]# make test
...
\o/ All tests passed without errors!
Cleanup: may take some time... OK
ソースコードのコンパイルが完了すると使用できますが、使用前に環境変数にredisを追加して便利に後で使用する必要があります.
まずユーザホームディレクトリに入り、作成する.bash_profileファイル、redisのパスをPATHに追加
[root@VM_186_206_centos redis-4.0.9]# cd ~
[root@VM_186_206_centos ~]# vim .bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
REDIS_HOME=/usr/local/redis-4.0.9
PATH=$PATH:$HOME/bin:$REDIS_HOME/src
export PATH
これでインストール完了
二、Redis-serverの構成
Redisの構成については、Redisのディレクトリに構成ファイルをコピーし、元の構成ファイルで変更しないで、変更エラーが元のファイルを見つけられないようにする必要があります.
[root@VM_186_206_centos ~]# cp /usr/local/redis-4.0.9/redis.conf ./redisConfig/redis.conf
[root@VM_186_206_centos ~]# cd redisConfig
[root@VM_186_206_centos redisConfig]# vim redis.conf
Redisのプロファイルは非常に長いので、ここではすべて貼らないで、行番号を標識として、どのように構成するかを説明します.
まずredisバインドのIPアドレスを設定します
ここでバインドされたIPアドレスはifconfigのNICアドレスでなければなりません.そうしないと、エラーが発生して起動に失敗します.
[root@VM_186_206_centos ~]# ifconfig
eth0: flags=4163 mtu 1500
inet xxx.xxx.xxx.xxx netmask 255.255.224.0 broadcast xxx.xxx.xxx.255
ether XX:XX:XX:XX:XX:XX txqueuelen 1000 (Ethernet)
RX packets 29994 bytes 4629635 (4.4 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 28531 bytes 4220669 (4.0 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73 mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
loop txqueuelen 1 (Local Loopback)
RX packets 4632659 bytes 1237206796 (1.1 GiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 4632659 bytes 1237206796 (1.1 GiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
バインディング127.0.0.1ネットワークループアドレスがネイティブのみで使用可能で、外部からアクセスできない場合は、外部IPアドレスをバインディングする必要があります(クラウドサービスを使用する場合は、ここでイントラネットアドレスをバインディングすればいいです).
69行
bind xxx.xxx.xxx.xxx
次にリスニングされたポート番号92行
port 8464
最大TCP接続数101行
tcp-backlog 128
(ここではlinuxカーネルと同じ値に変更しましたが、大規模なアプリケーションではカーネルの値を2048程度に変更してより多くの接続に対応する必要がある場合)Redisをデーモンプロセスに設定する(オプション)
136行
daemonize yes
Redisログパスの設定171行
logfile "./redis.log"
Redisのデータベース数(デフォルト16データベース)186行
databases 16
196行ではデータ永続化の設定について説明しますが、ここでは簡単に説明します.save 900 1
データが900秒(15分)後に永続化された.save 300 10
の10のデータが300秒(5分)後に持続化した.save 60 10000
の1万件のデータが60秒(1分)後に永続化された.RDB永続化保存のファイル名とパスの設定
253行
dbfilename dump.rdb
263行dir ./
(現在のプロファイルのパス)265行にはRedisクラスタの読み書き分離(奴隷スレーブモード)ホストがデータの書き込みを行い,奴隷がデータの読み取りを行う(後述)
487行では、データベースのセキュリティに関する設定です.
500行
requirepass xxxx
Redisにアクセスするパスワード(できるだけ複雑なパスワードを書く)を設定521行で最大クライアントへの接続数の設定
532行
maxclients 10000
534行はメモリのスケジューリングと制限に関する設定です603行では怠け者解放について(これはRedis 4.0に新しく追加された構成です)
Redisの重度使用患者は、DELコマンドを使用して体積の大きいキーを削除したり、FLUSHDBとFLUSHALLを使用して大量のキーを含むデータベースを削除したりした場合、Redisがブロックされることがあるはずです.また、Redisは、期限切れのデータをクリーンアップしたり、メモリが期限切れのデータを淘汰したりする際に、たまたま大きなボリュームのキーにぶつかった場合、サーバがブロックされます.以上の問題を解決するために、Redis 4.0はRedisのメカニズムを導入し、削除キーやデータベースの操作をバックグラウンドスレッドに入れて実行し、サーバのブロックをできるだけ避けることができます.
652行のAppend Only Modeの構成については、変更モードではデータベースへの追加操作(データを削除すると追加されたデータが削除される)がすべて記録され、サーバの予期せぬダウンタイムデータの損失を防止する別の手段であり、サーバの予期せぬダウンタイムがAppend Only Modeを使用してデータ復旧を行う場合、AOMがRDBを再利用してデータ復旧を再開できない場合、データ損失の確率は低い.
672行
appedonly yes
Append Only Modeを起動676行
appendfilename "appendonly.aof"
このモードでファイルが保存されている名前(パスのデフォルトはredis.confと同じパス)差は少なくこれらの構成ですが、後の構成は必要に応じて変更すればいいです.
構成をロードしてRedisサービスを開始
[root@VM_186_206_centos redisConfig]# redis-server redis.conf
[root@VM_186_206_centos redisConfig]# cat redis.log
15119:C 02 Jun 11:29:14.658 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
15119:C 02 Jun 11:29:14.658 # Redis version=4.0.9, bits=64, commit=00000000, modified=0, pid=15119, just started
15119:C 02 Jun 11:29:14.658 # Configuration loaded
_._
_.-``__ ''-._
_.-`` `. `_. ''-._ Redis 4.0.9 (00000000/0) 64 bit
.-`` .-```. ```\/ _.,_ ''-._
( ' , .-` | `, ) Running in standalone mode
|`-._`-...-` __...-.``-._|'` _.-'| Port: XXXX
| `-._ `._ / _.-' | PID: 15120
`-._ `-._ `-./ _.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' | http://redis.io
`-._ `-._`-.__.-'_.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' |
`-._ `-._`-.__.-'_.-' _.-'
`-._ `-.__.-' _.-'
`-._ _.-'
`-.__.-'
15120:M 02 Jun 11:29:14.660 # Server initialized
15120:M 02 Jun 11:29:14.661 # WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled.
15120:M 02 Jun 11:29:14.661 * Ready to accept connections
redisでlogには、上記の内容が表示され、構成に成功し、正常に実行されたことを示しています.
次にredis-cliでサーバに接続しようとします
[root@VM_186_206_centos ~]# redis-cli -h xxx.xxx.xxx.xxx -p xxxx
xxx.xxx.xxx.xxx:xxxx> AUTH xxxx
OK
xxx.xxx.xxx.xxx:xxxx> PING
PONG