redis 服务
一、软件的安装
安装方式1:(脚本安装)
server1
:
lftp 172.25.254.250
get redis-6.2.4.tar.gz
tar zxf redis-6.2.4.tar.gz
cd redis-6.2.4/
make
make install
cd utils/
./install_server.sh
vim install_server.sh
./install_server.sh
cd /etc/redis/
vim 6379.conf
/etc/init.d/redis_6379 restart
scp redis-6.2.4.tar.gz server2:
redis-cli
127.0.0.1:6379> set name rtt
127.0.0.1:6379> get name
安装方式2:(启用systend控制)
server2
:
tar zxf redis-6.2.4.tar.gz
cd redis-6.2.4/
make USER_SYSTEMD=yes
make install
./install_server.sh
cp systemd-redis_server.service /usr/lib/systemd/system/redis.service
cd /usr/lib/systemd/system/redis.service
vim /usr/lib/systemd/system/redis.service
mkdir /etc/redis
cd ..
cp redis.conf /etc/redis/
cd /etc/redis/
vim redis.conf
mkdir /var/lib/redis
systemctl daemon-reload
systemctl start redis.service
二、redis主从复制及切换
1、主从复制
设定 server11 主
server12 从
server13 从
server11
:
vim /etc/redis/6379.conf
server12:
vim /etc/redis/6379.conf
server13:
vim /etc/redis/6379.conf
/etc/init.d/redis_6379 restart
redis-cli ##查看主从
2、主从自动切换
server11:
cd redis-6.2.4
cp sentinel.conf /etc/redis/
vim /etc/redis/sentinel.conf
scp /etc/redis/sentinel.conf server12:/etc/redis/sentinel.conf
scp /etc/redis/sentinel.conf server13:/etc/redis/sentinel.conf
cd /etc/redis/
redis-sentinel sentinel.conf
server12:
redis-sentinel sentinel.conf
server13:
redis-sentinel sentinel.conf
关闭server11
redis-sentinel sentinel.conf ## 11关闭后 server12 13 进行投票
三、redis集群的搭建及管理
1、搭建集群
vim /etc/redis/6379.conf
mkdir /usr/local/redis
cd /usr/local/redis
mkdir 700{1..6}
cd 7001
vim redis.conf
port 7001
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
daemonize yes
redis-server redis.conf
ps ax
cp redis.conf ../7002/
cp redis.conf ../7003/
cp redis.conf ../7004/
cp redis.conf ../7005/
cp redis.conf ../7006/
vim ../7002
port 7002
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
daemonize yes
cd ../7002
redis-server redis.conf
...
cd ../7006
vim redis.conf
port 7006
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
daemonize yes
edis-server redis.conf
ps ax
redis-cli --cluster create 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 127.0.0.1:7006 --cluster-replicas 1 ##创建集群
redis-cli --cluster check 127.0.0.1:7001 ## check 查看集群信息
主从自动切换
redis-cli -c -p 7001
127.0.0.1:7001> SHUTDOWN ##
redis-cli --cluster info 127.0.0.1:7002 ## info 查看集群结构
cd ../7001
redis-server redis.conf
redis-cli --cluster info 127.0.0.1:7001
2、添加节点
添加master端
port 7007
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
daemonize yes
redis-server redis.conf
cd ../7008
vim redis.conf
port 7008
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
daemonize yes
redis-server redis.conf
ps ax
redis-cli --cluster check 127.0.0.1:7002
redis-cli --cluster add-node 127.0.0.1:7007 127.0.0.1:7001
1、指定分配(done 指定master进行分片)
redis-cli --cluster reshard 127.0.0.1:7001 ##重新分片
redis-cli --cluster add-node 127.0.0.1:7008 127.0.0.1:7002
redis-cli --cluster check 127.0.0.1:7002
2、按比例分配(all 从所有master取)
redis-cli --cluster reshard 127.0.0.1:7002
添加slave
redis-cli --cluster add-node 127.0.0.1:7008 127.0.0.1:7001 --cluster-slave --cluster-master-id 82639238ad5f37faa3c9c7975c078bde8fbd7693 ##指定7007为7008的master
redis-cli --cluster check 127.0.0.1:7002
3、删除节点
删除master
删除master
前清空哈希槽
redis-cli --cluster reshard 127.0.0.1:7002 ##重新分配哈希槽
redis-cli --cluster check 127.0.0.1:7002
redis-cli --cluster del-node 127.0.0.1:7001 ace02308eecb6fdcced4b501d9ebc05d09353ebe ##删除master7008
删除slave
redis-cli --cluster add-node 127.0.0.1:7008 127.0.0.1:7001 --cluster-slave --cluster-master-id 82639238ad5f37faa3c9c7975c078bde8fbd7693 ##将7008以slave加入7007
redis-cli --cluster del-node 127.0.0.1:7001 ace02308eecb6fdcced4b501d9ebc05d09353ebe ##删除salve 7008
四、redis+mysql 即 Redis作mysql的缓存服务器
server3
:mysql
yum install -y mariadb-server
scp server4:/etc/my.cnf /etc/my.cnf
systemctl start mariadb.service
mysql
MariaDB [(none)]> grant all on test.* to redis@'%' identified by 'westos';
MariaDB [(none)]> Bye
lftp 172.25.254.250
lftp 172.25.254.250:/pub/docs/redis> get test.sql
ls
mysql < test.sql
server1
: nginx php
lftp 172.25.254.250:/pub/docs/redis/
lftp 172.25.254.250:/pub/docs/redis> get test.php
lftp 172.25.254.250:/pub/docs/redis> mirror rhel7
yum install psmisc ##killall
killall redis-server
/etc/init.d/redis_6379 stop
chkconfig redis_ 6379 off ##取消开机自启
yum install -y *.rpm
systemctl daemon-reload
cd /etc/php-fpm.d/
vim www.conf
systemctl restart php-fpm
cp test.php /usr/local/nginx/html/
cd /usr/local/nginx/html/
vim test.php
vim ../conf/nginx.conf ##注释掉87行
nginx -s reload
server2
: redis
/etc/init.d/redis_6379 restart
网页中进行查询:
redis同步mysql数据
server3:
lftp 172.25.254.250
lftp 172.25.254.250:/pub/docs/redis> get lib_mysqludf_json-master.zip
yum install -y unzip
unzip lib_mysqludf_json-master.zip
cd lib_mysqludf_json-master/
gcc $(mysql_config --cflags) -shared -fPIC -o lib_mysqludf_json.so
lib_mysqludf_json.c
cp lib_mysqludf_json.so /usr/lib64/mysql/plugin/
mysql> CREATE FUNCTION json_object RETURNS STRING SONAME
'lib_mysqludf_json.so';
mysql> select * from mysql.func;
lftp 172.25.254.250
lftp 172.25.254.250:/pub/docs/redis> get gearman-mysql-udf-0.6.tar.gz
lftp 172.25.254.250:/pub/docs/redis> mirror rhel7/
tar zxf gearman-mysql-udf-0.6.tar.gz
cd gearman-mysql-udf-0.6/
./configure --libdir=/usr/lib64/mysql/plugin/
cd rhel7/
yum install -y libevent-devel-2.0.21-4.el7.x86_64.rpm libgearman-1.1.12-18.el7.x86_64.rpm libgearman-devel-1.1.12-18.el7.x86_64.rpm
make
make install
mysql
MariaDB [(none)]> CREATE FUNCTION gman_do_background RETURNS STRING SONAME 'libgearman_mysql_udf.so';
MariaDB [(none)]> CREATE FUNCTION gman_servers_set RETURNS STRING SONAME 'libgearman_mysql_udf.so';
MariaDB [(none)]> select * from mysql.func;
MariaDB [(none)]> SELECT gman_servers_set('172.25.72.1:4730');
vim test.sql ##注释掉 1、2行 开启其他命令行
mysql < test.sql
mysql
MariaDB [(none)]> show triggers from test;
server1
:
cd rhel7/
systemctl start gearmand.service
vim worker.php
netstat -antlp
nohup php worker.php &
测试
:
server3
:
MariaDB [(none)]> update test.test set name='rtt' where id=1; ##更改name