Centos7でのRedis3のインストール

[ Redis](https://cloud.tencent.com/product/crs?from=10680)公式ウェブサイトhttp://redis.io

中国のマニュアルhttp://www.cnblogs.com/stephen-liu74/archive/2012/02/27/2370212.html

1.最新バージョンのredisをダウンロードします

http://redis.io/downloadをダウンロード

現在、redis3.2.11の最新バージョン

cd /usr/local/src

wget http://download.redis.io/releases/redis-3.2.11.tar.gz

  1. redisをコンパイルしてインストールします(詳細については、ソースルートディレクトリのREADMEを参照してください)。

tar -zxvf redis-3.2.11.tar.gz

cd redis-3.2.11

make

makeコマンドが実行された後、6つの実行可能ファイルがsrcディレクトリに生成されます。つまり、redis-server、redis-cli、redis-benchmark、redis-check-aof、redis-check-dump、redis-sentinel、およびそれらのファイルです。役割は次のとおりです。

redis-server:Redisサーバーのデーモン起動プログラム

redis-cli:Redisコマンドライン操作ツール。もちろん、telnetを使用してプレーンテキストプロトコルに従って操作することもできます

redis-benchmark:システムおよび構成でのRedisの読み取りおよび書き込みパフォーマンスをテストするためのRedisパフォーマンステストツール

redis-check-aof:ログチェックの更新

redis-check-dump:ローカルデータベースチェックに使用されます

redis-sentinel:クラスター管理ツール

インストール:

make PREFIX=/usr/local/redis install

テスト

make test

tclによって異なりますが、インストールされていない場合は、最初にインストールしてください

yum -y install tcl tcl-devel

3、Redisを構成します

mkdir -p / usr / local / redis / etc / usr / local / redis / log / usr / local / redis / data#構成ファイル、ログファイル、データベースストレージディレクトリを作成します

cp /usr/local/src/redis-3.2.11/redis.conf /usr/local/redis/etc/

touch /usr/local/redis/log/redis.log

  1. Redis.conf構成パラメーター:

デーモンとして実行するかどうか

daemonize yes

バックグラウンドプロセスとして実行する場合は、pidを指定する必要があります。デフォルトは/var/run/redis.pidです。

pidfile /var/run/redis.pid

ホストIPをバインドします。デフォルト値は127.0.0.1です。

bind 0.0.0.0

Redisのデフォルトのリスニングポート

port 6379

クライアントがアイドル状態になってから何秒後に切断されますか。デフォルトは300(秒)です。

timeout 300

ロギングレベル、4つのオプション値、デバッグ、詳細、通知(デフォルト値)、警告があります

loglevel notice

ログ出力のファイル名を指定します。デフォルト値はstdoutです。または、/ dev / nullに設定してログを保護することもできます。

logfile "/usr/local/redis/log/redis.log"

使用可能なデータベースの数。デフォルト値は16、デフォルトデータベースは0です。

databases 16

データをディスクに保存するための戦略

キーデータが変更された場合、900秒に1回ディスクにリフレッシュします

save 900 1

10キーのデータが変更された場合、300秒に1回ディスクに更新します

save 300 10

1w個のキーデータが変更された場合、60秒に1回ディスクにリフレッシュします

save 60 10000

.rdbデータベースをダンプするときにデータオブジェクトを圧縮するかどうか

rdbcompression yes

ローカルデータベースファイルの名前。デフォルト値はdump.rdbです。

dbfilename dump.rdb

ローカルデータベースストレージパス。デフォルト値は./です。

dir /usr/local/redis/data

PIDファイルディレクトリを設定する

pidfile /usr/local/redis/redis.pid

########### Replication #####################

Redisレプリケーション構成

slaveof本機がスレーブサービスの場合、マスターサービスのIPとポートを設定してください

masterauth本機がスレーブサービスの場合、マスターサービスの接続パスワードを設定してください

接続パスワード

requirepass foobared

クライアント接続の最大数

maxclients 30000

最大メモリ使用量設定最大メモリ設定に達した後、Redisは最初に期限切れまたは期限切れ寸前のキーをクリアしようとします。このメソッドが処理された後、最大メモリ設定に到達せず、それ以上の書き込み操作を実行できなくなります。

maxmemory

更新操作のたびにログを記録するかどうか。電源を入れないと、電源を切った状態で一定時間データが失われる場合があります。 redis自体が上記の保存条件に従ってデータファイルを同期するため、一部のデータは一定期間のみメモリに存在します。デフォルト値はnoです

appendonly no

ログファイル名を更新します。デフォルト値はappendonly.aofです。

appendfilename

ログ条件を更新します。3つのオプション値があります。オペレーティングシステムがデータキャッシュをディスクに同期するのを待つことを意味するのではなく、常にfsync()を手動で呼び出して、各更新操作の後にデータをディスクに書き込むことを意味し、everysecは1秒に1回同期することを意味します(デフォルト値)。

appendfsync always

appendfsync everysec

appendfsync no

################ VIRTUAL MEMORY ###########

VM機能を有効にするかどうか、デフォルト値はnoです。

vm-enabled no

vm-enabled yes

仮想メモリファイルパス。デフォルト値は/tmp/redis.swapであり、複数のRedisインスタンスで共有することはできません。

vm-swap-file /tmp/redis.swap

vm-max-memoryよりも大きいすべてのデータを仮想メモリに格納します。vm-max-memoryがいくら小さく設定されていても、すべてのインデックスデータはメモリに格納されます(Redisインデックスデータはキーです)。つまり、vm-maxの場合です。 -memoryが0に設定されている場合、すべての値は実際にはディスク上に存在します。デフォルト値は0です。

vm-max-memory 0

vm-page-size 32

vm-pages 134217728

vm-max-threads 4

############# ADVANCED CONFIG ###############

glueoutputbuf yes

hash-max-zipmap-entries 64

hash-max-zipmap-value 512

ハッシュテーブルをリセットするかどうか

activerehashing yes

注:Redisの公式ドキュメントでは、VMの使用に関するいくつかの提案が示されています。

キーが小さく、値が大きい場合、VMを使用した場合の効果が高くなります。これにより、より多くのメモリを節約できます。

キーが小さくない場合は、いくつかの方法を使用して大きなキーを大きな値に変換することを検討できます。たとえば、キーと値を新しい値に結合することを検討できます。

スワップファイルを保存するには、linuxext3などのスパースファイルをサポートするファイルシステムを使用することをお勧めします。

パラメータvm-max-threadsは、スワップファイルにアクセスするスレッドの数を設定できます。マシンのコア数を超えないようにすることをお勧めします。0に設定すると、スワップファイルに対するすべての操作がシリアルになります。時間がかかる場合があります。時間遅延がありますが、データの整合性には十分な保証があります。

  1. システムカーネルパラメータを調整する

メモリの状況が厳しい場合は、カーネルパラメータを設定する必要があります。

echo 1 > /proc/sys/vm/overcommit_memory

この構成の意味について説明します:/ proc / sys / vm / overcommit_memory

このファイルは、メモリ割り当てに関するカーネルの戦略を指定し、その値は0、1、2にすることができます。

0 、これは、カーネルがアプリケーションプロセスに十分な使用可能なメモリがあるかどうかをチェックすることを意味します。十分な使用可能なメモリがある場合、メモリアプリケーションは許可されます。そうでない場合、メモリアプリケーションは失敗し、エラーがアプリケーションプロセスに返されます。

1 、これは、現在のメモリ状態に関係なく、カーネルがすべての物理メモリの割り当てを許可することを意味します。

2 、これは、カーネルがすべての物理メモリとスワップスペースの合計を超えるメモリの割り当てを許可することを意味します

Redisがデータをダンプすると、子プロセスがフォークされます。理論的には、子プロセスが占有するメモリは親のメモリと同じです。たとえば、親が占有するメモリは8Gです。このとき、8Gのメモリも子に割り当てる必要があります。余裕がない場合、redisサーバーがダウンしたり、IO負荷が高すぎたりして、効率が低下することがよくあります。したがって、ここでのより最適化されたメモリ割り当て戦略は1に設定する必要があります(つまり、カーネルでは、現在のメモリ状態に関係なく、すべての物理メモリを割り当てることができます)。

4.Redisを実行します

環境変数を追加する

echo "export PATH=$PATH:/usr/local/redis/bin" >> /etc/profile

.  /etc/profile

  1. サービスを実行する

redis-server /etc/redis/redis.conf

redisサービスはバックグラウンドで開始できます。実行されていることを確認したら、redis-benchmarkコマンドを使用してテストおよび確認するか、次のようにredis-cliコマンドを使用して実際に操作できます。

redis-cli set foo bar

OK

redis-cli get foo

bar

  1. クローズサービス

redis-cli shutdown

ポートが変更された場合は、ポートを指定できます。

redis-cli -p 6380 shutdown

  1. 保存/バックアップ

データのバックアップは、ファイルを定期的にバックアップすることで実現できます。

redisはディスクに非同期で書き込まれるため、メモリ内のデータをすぐにハードディスクに書き込みたい場合は、次のコマンドを実行できます。

redis-clisaveまたはredis-cli-p 6380 save(ポートを指定)

上記の展開操作には、カーネルパラメータのコピーや設定など、特定の権限が必要であることに注意してください。

redis-benchmarkコマンドを実行すると、メモリデータもハードディスクに書き込まれます。

  1. 同期メカニズム

redisによって実装される同期メカニズムは比較的単純であり、同期メカニズムの共通のチェックポイントと検証メカニズムがありません。

実行時に、マスター->スレーブ同期要求の転送が破棄された場合、データがマスターから完全にロードされたときにスレーブが再起動するまで、スレーブは要求の関連情報を復元できません。したがって、redisを使用して、そのキー/値と値を使用して複数のタイプの機能をサポートし、比較的重要でないデータを格納することをお勧めします。

5.ランダムスタートを設定します

vi /etc/init.d/redis#以下を追加

#! /bin/bash

redis - this script starts and stops the redis-server daemon

chkconfig:   - 80 12

description:  Redis is a persistent key-value database

processname: redis-server

config:      /etc/redis/redis.conf

pidfile:     /var/run/redis.pid

source /etc/init.d/functions

BIN="/usr/local/redis/bin"
CONFIG="/usr/local/redis/etc/redis.conf"
PIDFILE="/usr/local/redis/redis.pid"

Read configuration

[ - r "SYSCONFIG" ] && source "SYSCONFIG"
RETVAL=0
prog="redis-server"
desc="Redis Server"

start() {
        if [ -e PIDFILE ];then              echo "desc already running...."
             exit 1
        fi
        echo -n $"Starting $desc: "
        daemon BIN/prog CONFIG         RETVAL=?
        echo
        [ RETVAL -eq 0 ] && touch /var/lock/subsys/prog
        return $RETVAL
}

stop() {
        echo -n $"Stop $desc: "
        killproc prog         RETVAL=?
        echo
        [ RETVAL -eq 0 ] && rm -f /var/lock/subsys/prog $PIDFILE
        return $RETVAL
}

restart() {
    stop
    start
}

case "1" in   start)         start         ;;   stop)         stop         ;;   restart)         restart         ;;   condrestart)         [ -e /var/lock/subsys/prog ] && restart
        RETVAL=$?
        ;;
  status)
        status prog         RETVAL=?
        ;;
   *)
        echo $"Usage: $0 {start|stop|restart|condrestart|status}"
        RETVAL=1
esac
exit $RETVAL

このスクリプトを使用して管理する前に、次のカーネルパラメータを設定する必要があります。そうしないと、Redisスクリプトは、redisを再起動または停止するときにエラーを報告し、サービスを停止する前にデータをディスクに自動的に同期できません。

vi /etc/sysctl.conf

vm.overcommit_memory = 1

その後、アプリケーションが有効になります。

sysctl -p

( メモリを調整します(メモリの状況が厳しい場合は、カーネルパラメータを設定する必要があります)
echo 1 > /proc/sys/vm/overcommit_memory
説明:
このファイルは、メモリ割り当てに関するカーネルの戦略を指定し、その値は0、1、2にすることができます。
0 カーネルがアプリケーションプロセスに十分な使用可能なメモリがあるかどうかをチェックすることを示します。十分な使用可能なメモリがある場合、メモリアプリケーションは許可されます。そうでない場合、メモリアプリケーションは失敗し、エラーがアプリケーションプロセスに返されます。
1 現在のメモリ状態に関係なく、カーネルがすべての物理メモリの割り当てを許可することを示します。
2 カーネルがすべての物理メモリとスワップスペースの合計を超えるメモリの割り当てを許可することを示します
)

次に、サービスを追加して自動的に開始します。

chmod 755 /etc/init.d/redis

chkconfig redis on

chkconfig --list redis

Centos7起動スクリプト

/usr/lib/systemd/system/redis.service

#####################################

[ Unit]

Description=Startup script for the Redis

Documentation=http://redis.io

After=network.target remote-fs.target nss-lookup.target

[ Service]

Type=forking

PIDFile=/usr/local/redis/redis.pid

ExecStart=/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf

ExecReload=/bin/kill -s HUP $MAINPID

ExecStop=/bin/kill -s QUIT $MAINPID

PrivateTmp=true

[ Install]

WantedBy=multi-user.target

実行中のユーザーを指定します

useradd -M -s /sbin/nologin redis

chown -R redis:redis / usr / local / redis / log / usr / local / redis / data pidfile

cat /usr/lib/systemd/system/redis.service

[ Unit]

Description=Startup script for the Redis

Documentation=http://redis.io

After=network.target remote-fs.target nss-lookup.target

[ Service]

User=redis

Group=redis

Type=forking

ExecStart=/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf

ExecReload=/bin/kill -s HUP $MAINPID

ExecStop=/bin/kill -s QUIT $MAINPID

PrivateTmp=true

[ Install]

WantedBy=multi-user.target

systemctl enable redis; systemctl start redis

Recommended Posts

Centos7でのRedis3のインストール
CentOSでのRedisクラスターのインストール
CentOSでのRedisクラスターのインストール
centos7でのredisのインストールと構成
2019-07-09CentOS7のインストール
centos7_1708のインストール
ジェンキンス学習のcentos6.9の下でのインストール
CentOSでのJava-JDKのインストールと構成
CentOS7でのErlang20.2のインストールと展開
Centos5インストールガイド
Python-centos6のインストール
Dockerのインストール(CentOS7のインストール)
CentOS7ドッカーのインストール
CentOS 7でのTomcatのインストールと構成(Tomcatの起動)
CentOS6 / 7でのMySQL8.0のインストール、展開、および構成
CentOSでのZabbixのインストールと展開およびローカリゼーション
CentOS7でのJenkinsのインストールと展開のチュートリアル
CentOS7.2でのKVMのインストールと予備使用
CentOSオンラインインストールRabbitMQ3.7
CentOS7でGitBookを展開する
CentOS7.4でHadoop-2.7.6をコンパイルします
CentOS7の下にmysql5.7をインストールします
Centos7の下にActiveMQをインストールします
ランプ(centos7)設置ランプ環境
CentOS7の下にPostgreSQL12をインストールします
VMwareにCentOSをインストールする
UbuntuでのLNMPのインストール
VMware10でのCentOS7のインストールと構成のグラフィックチュートリアル
CentOS8のグラフィカルインストール
Mysql8.0.15インストール構成(centos7)
CentOS7にredis5.0をインストールします
Centos7にmysqlをインストールします
centos6.8でランプを構成する
Linuxノート(1):CentOS-7のインストール
CentOS6.5でのrsyncサーバーのインストールと構成
Centos7の下にJenkinsをインストールします
MariaDBCentos7の下にMariaDBをインストールします
CentOS6.5の下にmysql5.1をインストールします
CentOS7インストールRedis5.0.8オリジナル
CentOSでのMySQL8.0のインストールと展開、非常に詳細!
CentOSオンラインインストールRabbitMQ3.7
DockerCentOSのインストール方法
CentosでのMicrosoftROpenの非ルートインストール
Linux CentOS7インストールチュートリアル
Centos7dockerのインストールの詳細
Centos7でのFastDFSのインストールから入力まで
Centosでのconfluence6.3操作記録のインストールとクラッキング
CentosでのJira7操作記録のインストールとクラッキング
CentOS6.6でのXen仮想化の戦闘
Discourse CentOS8の新しいインストールマニュアル
Centos6.5でドッカー環境を構築する
Centos7ミニインストールプロセスの記録
CentOS7でOpenV **サーバーを構築する
Centosmysqlのインストールと構成
CentOS7でOpenLDAPサーバーを構築する
Centos7へのGlusterfsクラスターのインストール
CentOS 7 GaleraClusterインストールガイド
CentOS7のインストールと構成PPTP
CentOS7で静的IPを構成する
CentOS6.9でOracle11gR2データベースをインストールします
CentOSのインストールと構成cmake