下載Redis
下載網址
圖形界面下載網址
- Redis需要gcc環境(如果已經有該環境跳過此步驟)
yum install gcc-c++
安裝Redis
- 在/usr/local下創建redis文件夾
mkdir redis
cd redis
- 下載、解壓、編譯Redis:
wget http://download.redis.io/releases/redis-5.0.4.tar.gz
tar xzf redis-5.0.4.tar.gz
cd redis-5.0.4
# 指定內存池類型,提高性能
make MALLOC=libc
cd src
make PREFIX=/usr/local/redis install
- 拷貝redis.conf配置文件到特定目錄;
mkdir -p /usr/local/redis/6379
cp redis.conf /usr/local/redis/6379/
- 添加redis到命令到全局變量,方便在任何目錄執行;
vi /etc/profile
# 在最后行添加:
export PATH="$PATH:/usr/local/redis/bin"
- 將 redis-trib.rb 復制到 /usr/local/bin 目錄下
cd src
cp redis-trib.rb /usr/local/redis/bin/
- 對redis.conf文件修改如下
#設置占用最大內存 數字為bytes 該值為0.75G
maxmemory 751619276
# redis 內存回收機制 默認noeviction:拒絕更多內存,當前為回收已經過期的key,並且優先回收存活時間(TTL)較短的鍵
maxmemory-policy volatile-ttl
# 開啟AOF持久化
appendonly yes
# AOF追寫策略
appendfsync everyse
#是否同步重寫問件 yes性能更好,有概率丟失文件
no-appendfsync-on-rewrite no
# 設置AOF增長比例和最小觸發文件大小,即至(64*100% + 64)mb時觸發重寫文件
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
# 注釋掉RDB持久化參數
#save 900 1
#save 300 10
#save 60 10000
# 刪除目錄下的dump.rdb
rm -rf dump.rdb
# 手動重寫AOF
執行 bgrewriteaof
- 啟動驗證redis
cd /usr/local/redis/
bin/redis-server 6379/redis.conf
- 性能測試
# 啟動5個連接,發起100000個請求,每個請求的大小為10bytes
bin/redis-benchmark -t get -h localhost -p 6379 -c 5 -n 100000 -d 10
- 設置開機自啟
vi /etc/init.d/redis
# 填入以下內容
#!/bin/sh
# chkconfig: 2345 56 26
# description: Redis Service
### BEGIN INIT INFO
# Provides: Redis
# Required-Start: $all
# Required-Stop: $all
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: starts Redis
# Description: starts the BT-Web
### END INIT INFO
# Simple Redis init.d script conceived to work on Linux systems
# as it does use of the /proc filesystem.
PATH=/usr/local/bin:/sbin:/usr/bin:/bin
# redis端口號
REDISPORT=6379
# redis-server所在目錄的絕對路徑
EXEC=/usr/local/redis/bin/redis-server
# redis-cli所在目錄的絕對路徑
REDIS_CLI=/usr/local/redis/bin/redis-cli
PIDFILE=/var/run/redis.pid
# redis.conf所在目錄的絕對路徑
CONF="/usr/local/redis/6379/redis.conf"
AUTH="nginx"
case "$1" in
start)
if [ -f $PIDFILE ]
then
echo "$PIDFILE exists, process is already running or crashed."
else
echo "Starting Redis server..."
$EXEC $CONF
fi
if [ "$?"="0" ]
then
echo "Redis is running..."
fi
;;
stop)
if [ ! -f $PIDFILE ]
then
echo "$PIDFILE exists, process is not running."
else
PID=$(cat $PIDFILE)
echo "Stopping..."
$REDIS_CLI -p $REDISPORT -a $AUTH SHUTDOWN
sleep 2
while [ -x $PIDFILE ]
do
echo "Waiting for Redis to shutdown..."
sleep 1
done
echo "Redis stopped"
fi
;;
restart|force-reload)
${0} stop
${0} start
;;
*)
echo "Usage: /etc/init.d/redis {start|stop|restart|force-reload}" >&2
exit 1
esac
chmod 755 redis
chkconfig redis on
service redis start
- 在redis文件夾下創建redis-cluster,並且在redis-cluster文件夾下創建7004 7005 7006文件夾
- 將redis5.0.4的文件夾下redis.conf文件復制到剛剛創建的7004 7005 7006文件夾下
cp redis.conf /usr/local/redis/redis-cluster/7004
cp redis.conf /usr/local/redis/redis-cluster/7005
cp redis.conf /usr/local/redis/redis-cluster/7006
- 修改剛剛復制的三個配置文件redis.conf
port 7000 //端口7000,7002,7003
bind 本機ip //默認ip為127.0.0.1 需要改為其他節點機器可訪問的ip 否則創建集群時無法訪問對應的端口,無法創建集群
daemonize yes //redis后台運行
pidfile /var/run/redis_7000.pid //pidfile文件對應7000,7001,7002
cluster-enabled yes //開啟集群 把注釋#去掉
cluster-config-file nodes_7000.conf //集群的配置 配置文件首次啟動自動生成 7000,7001,7002 把注釋#去掉
cluster-node-timeout 15000 //請求超時 默認15秒,可自行設置 把注釋#去掉
appendonly yes //aof日志開啟 有需要就開啟,它會每次寫操作都記錄一條日志
- 在/usr/local/redis/bin目錄下啟動各個節點
./redis-server /usr/local/redis/redis-cluster/7004/redis.conf
./redis-server /usr/local/redis/redis-cluster/7005/redis.conf
./redis-server /usr/local/redis/redis-cluster/7006/redis.conf
- 檢查redis啟動情況
ps -ef | grep redis //查看redis啟動情況
netstat -tnlp | grep redis//查看redis端口開啟情況
另一個服務器也執行相同操作,分別創建7001 7002 7003節點
創建集群
./redis-cli --cluster create --cluster-replicas 1 10.104.132.37:7001 10.104.132.37:7002 10.104.132.37:7003 10.104.132.52:7004 10.104.132.52:7005 10.104.132.52:7006
- 其中,前三個 ip:port 為第一台機器的節點,剩下三個為第二台機器
運行界面如上,則表示配置成功
驗證集群
- 在第一台機器上連接集群的7001端口的節點,在另外一台連接7005節點,連接方式為
./redis-cli -h 10.104.132.37 -c -p 7001
./redis-cli -h 10.104.132.52 -c -p 7005
Redis其他操作命令
關閉所有節點
pkill -9 redis