環境
centos 7 最簡安裝
官網指導地址:https://redis.io/download
1、yum 安裝wget
# yum install -y wget
2、安裝gcc
yum install -y gcc
3、下載並安裝redis 5
# wget http://download.redis.io/releases/redis-5.0.3.tar.gz
# tar xzf redis-5.0.3.tar.gz
# cd redis-5.0.3
# make MALLOC=libc
關於分配器allocator, 如果有MALLOC 這個 環境變量, 會有用這個環境變量的 去建立Redis。
而且libc 並不是默認的 分配器, 默認的是 jemalloc, 因為 jemalloc 被證明 有更少的 fragmentation problems 比libc。
但是如果你又沒有jemalloc 而只有 libc 當然 make 出錯。 所以加這么一個參數
(
4、啟動服務
src/redis-server ./redis.conf
5、啟動客戶端
src/redis-cli -h host -p port -a password
)
###以后台進程方式啟動redis
修改redis.conf文件 daemonize no =====>yes
指定redis.conf文件啟動 ./redis-server ...../redis.conf
#####關閉redis進程
redis-cli -p 端口號 shutdown
使用systemctl管理
vim /usr/lib/systemd/system/redis.service
[Unit]
Description=Redis Server
After=network.target
[Service]
ExecStart=/usr/local/redis/redis-5.0.3/src/redis-server /usr/local/redis/redis-5.0.3/redis.conf --daemonize no
ExecStop=/usr/local/redis/redis-5.0.3/src/redis-cli -p 6379 shutdown
Restart=always
[Install]
WantedBy=multi-user.target
Description=Redis Server
After=network.target
[Service]
ExecStart=/usr/local/redis/redis-5.0.3/src/redis-server /usr/local/redis/redis-5.0.3/redis.conf --daemonize no
ExecStop=/usr/local/redis/redis-5.0.3/src/redis-cli -p 6379 shutdown
Restart=always
[Install]
WantedBy=multi-user.target
外部連接redis注意事項
redis黙認拒絕外部訪問,如需開啟遠程訪問,需要如下操作:
修改redis.conf
1、bind 127.0.0.1注釋
2、protected-mode yes改為no 或者 requirepass 設置密碼
3、啟動redis-server時后面要跟配置文件redis-conf
redis5.0.3配置集群
cd /usr/local/redis/redis-5.0.3
mkdir 6380 6381 6382 6383 6384 6385
#cp redis.conf 6380 mv redis.conf redis-6380.conf
#cp redis.conf 6381 mv redis.conf redis-6381.conf
#cp redis.conf 6382 mv redis.conf redis-6382.conf
#cp redis.conf 6383 mv redis.conf redis-6383.conf
#cp redis.conf 6384 mv redis.conf redis-6384.conf
#cp redis.conf 6385 mv redis.conf redis-6385.conf
#cp redis.conf 6381 mv redis.conf redis-6381.conf
#cp redis.conf 6382 mv redis.conf redis-6382.conf
#cp redis.conf 6383 mv redis.conf redis-6383.conf
#cp redis.conf 6384 mv redis.conf redis-6384.conf
#cp redis.conf 6385 mv redis.conf redis-6385.conf
修改所有的配置文件 (加端口號的以此類推)
具體修改:
(1)port 6380 #綁定端口
(2)bind 192.168.25.64 #定IP也(可以注釋掉,這樣任何桌面客戶端都可以連接了)
(3)dir /usr/local/redis-cluster/3680 #指定文件存放路徑 ( .rdb .aof nodes-xxxx.conf 這樣的文件都會在此路徑下)
(4)cluster-enabled yes #啟動集群模式
(5)cluster-config-file #集群節點配置文件
(6)daemonize yes #后台啟動
(7)cluster-node-timeout 5000 #指定集群節點超時時間
(8)appendonly yes #指定持久化方式
(9)protected-mode no #非保護模式
具體修改:
(1)port 6380 #綁定端口
(2)bind 192.168.25.64 #定IP也(可以注釋掉,這樣任何桌面客戶端都可以連接了)
(3)dir /usr/local/redis-cluster/3680 #指定文件存放路徑 ( .rdb .aof nodes-xxxx.conf 這樣的文件都會在此路徑下)
(4)cluster-enabled yes #啟動集群模式
(5)cluster-config-file #集群節點配置文件
(6)daemonize yes #后台啟動
(7)cluster-node-timeout 5000 #指定集群節點超時時間
(8)appendonly yes #指定持久化方式
(9)protected-mode no #非保護模式
啟動節點
# ./src/redis-server 6380/redis-6380.conf
# ./src/redis-server 6381/redis-6381.conf
# ./src/redis-server 6382/redis-6382.conf
# ./src/redis-server 6383/redis-6383.conf
# ./src/redis-server 6384/redis-6384.conf
# ./src/redis-server 6385/redis-6385.conf
# ./src/redis-server 6381/redis-6381.conf
# ./src/redis-server 6382/redis-6382.conf
# ./src/redis-server 6383/redis-6383.conf
# ./src/redis-server 6384/redis-6384.conf
# ./src/redis-server 6385/redis-6385.conf
啟動集群
#./src/redis-cli --cluster create 192.168.25.64:6380 192.168.25.64:6381 192.168.25.64:6382 192.168.25.64:6383 192.168.25.64:6384 192.168.25.64:6385 --cluster-replicas 1
客戶端連接集群
./redis-cli -c(連接集群,不加就是連接單機) -h 192.168.25.64 -p 6380
查看集群信息:cluster info
查看節點信息:cluster nodes
docker部署redis集群
創建內部網絡
docker network create redis_network
指定配置文件:/myredis/6380/conf/redis-6380.conf,指定數據存儲目錄:/myredis/6380/data/ (注意:配置文件中必須配置daemonize no,不然容器啟動后會馬上停止)
docker run -p 6380:6380 --name redis6380 --network redis_network --network-alias redis6380 -v /myredis/6380/conf/redis-6380.conf:/usr/local/etc/redis/redis.conf -v /myredis/6380/data/:/data/ -d redis redis-server /usr/local/etc/redis/redis.conf --appendonly yes
docker run -p 6381:6380 --name redis6381 --network redis_network --network-alias redis6381 -v /myredis/6380/conf/redis-6380.conf:/usr/local/etc/redis/redis.conf -v /myredis/6381/data/:/data/ -d redis redis-server /usr/local/etc/redis/redis.conf --appendonly yes
docker run -p 6382:6380 --name redis6382 --network redis_network --network-alias redis6382 -v /myredis/6380/conf/redis-6380.conf:/usr/local/etc/redis/redis.conf -v /myredis/6382/data/:/data/ -d redis redis-server /usr/local/etc/redis/redis.conf --appendonly yes
docker run -p 6383:6380 --name redis6383 --network redis_network --network-alias redis6383 -v /myredis/6380/conf/redis-6380.conf:/usr/local/etc/redis/redis.conf -v /myredis/6383/data/:/data/ -d redis redis-server /usr/local/etc/redis/redis.conf --appendonly yes
docker run -p 6384:6380 --name redis6384 --network redis_network --network-alias redis6384 -v /myredis/6380/conf/redis-6380.conf:/usr/local/etc/redis/redis.conf -v /myredis/6384/data/:/data/ -d redis redis-server /usr/local/etc/redis/redis.conf --appendonly yes
docker run -p 6385:6380 --name redis6385 --network redis_network --network-alias redis6385 -v /myredis/6380/conf/redis-6380.conf:/usr/local/etc/redis/redis.conf -v /myredis/6385/data/:/data/ -d redis redis-server /usr/local/etc/redis/redis.conf --appendonly yes
docker run -p 6381:6380 --name redis6381 --network redis_network --network-alias redis6381 -v /myredis/6380/conf/redis-6380.conf:/usr/local/etc/redis/redis.conf -v /myredis/6381/data/:/data/ -d redis redis-server /usr/local/etc/redis/redis.conf --appendonly yes
docker run -p 6382:6380 --name redis6382 --network redis_network --network-alias redis6382 -v /myredis/6380/conf/redis-6380.conf:/usr/local/etc/redis/redis.conf -v /myredis/6382/data/:/data/ -d redis redis-server /usr/local/etc/redis/redis.conf --appendonly yes
docker run -p 6383:6380 --name redis6383 --network redis_network --network-alias redis6383 -v /myredis/6380/conf/redis-6380.conf:/usr/local/etc/redis/redis.conf -v /myredis/6383/data/:/data/ -d redis redis-server /usr/local/etc/redis/redis.conf --appendonly yes
docker run -p 6384:6380 --name redis6384 --network redis_network --network-alias redis6384 -v /myredis/6380/conf/redis-6380.conf:/usr/local/etc/redis/redis.conf -v /myredis/6384/data/:/data/ -d redis redis-server /usr/local/etc/redis/redis.conf --appendonly yes
docker run -p 6385:6380 --name redis6385 --network redis_network --network-alias redis6385 -v /myredis/6380/conf/redis-6380.conf:/usr/local/etc/redis/redis.conf -v /myredis/6385/data/:/data/ -d redis redis-server /usr/local/etc/redis/redis.conf --appendonly yes
./src/redis-cli --cluster create 172.18.0.2:6380 172.18.0.3:6380 172.18.0.4:6380 172.18.0.5:6380 172.18.0.6:6380 172.18.0.7:6380 --cluster-replicas 1