redis.io
redis主要是内存
make USE_SYSTEMD=yes
make install
cd utils/
./install_server.sh
vim install_server.sh
./install_server.sh
全部回车
ps ax
cd /etc/redis/
vim 6379.conf
/etc/init.d/redis_6379 restart
netstat -antlp
redis-cli
info
scp -r redis-6.2.4 server2:
server2
cd redis-6.2.4/
ls
make install
cd utils/
./install_server.sh
cd /etc/redis/
vim 6379.conf
/etc/init.d/redis_6379 restart
netstat -antlp
redis-cli
CONFIG GET *
vim /etc/redis/6379.conf
/replicaof
slave只读
/etc/init.d/redis_6379 restart
redis cli
info
server1
set name westos
get name
server2
get name
添加slave,以此类推 server3设置为slave
server1
select 1
CONFIG SET min-slaves-to-write 2
bgsave
min-slaves-to-write表示后端有多少个slave可用
slave切成master是由sentinel判断。
当网络畅通之后的原来的master作为slave
作为master最少有一到两个slave可用。
server1
cd redis-6.2.4/
ls
cp sentinel.conf /etc/redis/
vim sentinel.conf
2表示要满足两票才认为挂了,才是真正挂掉
10秒钟没有响应就认为挂了。
1表示master集群中最多有一个节点不可用。数字越大则表示集群中不可用的节点就越多。
整个故障切换超时的时间。
redis的sentinel系统
监控
提醒
自动故障迁移:
scp sentinel.conf server2:/etc/redis/
scp sentinel.conf server3:/etc/redis/
redis-sentinel /etc/redis/sentinel.conf
server2,3
在启动以下之前,把配置文件复制过来
redis-sentinel /etc/redis/sentinel.conf
把1启动起来
server1
/etc/init.d/redis_6379 start
codis用redis做的二次开发,得下它的版本
redis集群基本做到了无中心化。
高可用
server1
/etc/init.d/redis_6379 stop
/etc/init.d/mysqld stop
cd redis-6.2.4/
ls
cd utils/
ls
cd create-cluster/
less README.md
./create-cluster start #开启6个实例,启动任何一个实例都可以用这个脚本启
ps ax
./create-cluster create #把之前创建的6个实例,分别是一主一从,这样集群就创建完毕了
redis-cli -c -p 3001 #连接实例
info
redis-cli --cluster check 127.0.0.1:3001#任何一个实例都能接入集群,查看集群状态
redis-cli -c -p 3001
info
set name westos 只要哈希槽不完整,这个集群就不能用,这个集群中有自动的高可用切换技术,这个集群建立完毕,可以直接在外边做一个负载均衡
vim create-cluster
redis-cli -c -p 3001 #连接实例
SHUTDOWN
redis-cli --cluster add-node 127.0.0.1:3007 127.0.0.1:3001 #此时加进去是master
redis-cli --cluster add-node 127.0.0.1:3008 127.0.0.1:3001 --cluster-slave --cluster-master-id master的id,此时的master没有哈希槽
redis-cli --cluster reshard 127.0.0.1:3001#迁移哈希槽
1000
接收的Id
被迁移的id或者直接写all
ls
cat nodes-30001.conf
appendonly 追加,类似mysql日志,rdb是用于主从复制的,是个内存快照
redis 持久化 rdb aof
cd /var/lib/redis/
ls
cd 6379/
ls
vim /etc/redis/6379.conf
redis和数据库的整合
由于数据比较庞大,一般会做解耦,更灵活,也意味着复杂度变高了。
要给数据库编译一个模块,
这里需要把数据库的版本降下来
server2
vim /etc/redis/6379.conf
/etc/init.d/redis_6379 start
redis-cli
info
server3
poweroff
server4 #作为数据库端
yum install -y mariadb-server
systemctl start mariadb
mysql -
grant all on test.* to redis@'%' identified by 'westos';
show
server1
cp test.php /usr/local/nginx/html/
cd /usr/local/nginx/html/
vim test.php
systemctl start php-fpm
netstat -antlp
cd ..
cd conf/
ls
vim nginx.conf
nginx
浏览器访问172.25.0.1/test
浏览器访问172.25.0.1/test.php
cd ..
cd html/
php -m | grep mysql
php -m |grep redis
cd
cd rhel7/
cd phpredis-master/
phpize
ls
./configure --enable-redis
make
编译时出问题
重新换了一个虚拟机
server3
ls
/etc/init.d/redis_6379 stop
chkconfig redis_6379 off #关掉开机自启
rm -fr *
php -m | grep mysql
php -m |grep redis
cd nginx-1.20.2/
./configure --with-http_ssl_module
make && make install
ls
cd /usr/local/
cd nginx/
ln -s /usr/local/nginx/sbin/nginx /usr/local/bin/
cd ..
cd nginx/conf/
vim nginx.conf
nginx
nginx -s reload
netstat -antlp
yum install -y php
yum list php-fpm
yum install -y php-mysql
php -m | grep mysql
php -m |grep redis
解决依赖性
ls
php -m | grep mysql
php -m |grep redis
systemctl start php-fpm
cd /etc/php-fpm.d/
ls
vim www.conf
netstat -antlp
ls
cd
cd rhel7/
cp test.php /usr/local/nginx/html/
cd /usr/local/nginx/html/
vim test.php
cd
cd rhel7/
ls
scp test.sql server4:
server4
vim test.sql
mysql < test.sql
mysql
use test
show tables;
select * from test;
浏览器访问172.25.0.1/test.php
所有的访问会从redis中得到
问题:当修改mariadb中的数据时,不能和redis中的数据同步
server4
update test set name='westos' where id=1;
select * from test;
server2
get 1
触发数据库之后,怎样把数据同步到redis
server4
yum install -y mariadb-devel
make && make install