首页 > 代码库 > redisd的基本搭建
redisd的基本搭建
Redis
Rhel6.5 server1.example.com 172.25.23.1
Selinux iptables disables 加解析
一.安装redis
1.tar zxf redis-3.0.2.tar.gz
2.cd redis-3.0.2
3.make && make install
注意:在安装的过程中可能要解决依赖性yum install -y gcc yum install -y *
解决完依赖性后,需要重新解压
4.ls /usr/local/bin
redis-server: Redis 服务主程序。
redis-cli: Redis 客户端命令行工具,也可以用 telnet 来操作。
redis-benchmark: Redis 性能测试工具,用于测试读写性能。
redis-check-aof:检查 redis aof 文件完整性,aof 文件持久化记录服务器执行的所有写操作命令,用于还原数据。
redis-check-dump:检查 redis rdb 文件的完整性,rdb 就是快照存储,即按照一定的策略周期性的将数据保存到磁盘,是默认的持久化方式。
redis-sentinel:是集群管理工具,主要负责主从切换
5.cd utils
6. ./install_server.sh (一路Enter)
7.会自动启动服务
8.redis-cli
......
二.Redis 作 mysql 的缓存服务器
1.安装软件
安装 lnmp 环境,安装以下软件包:
nginx php php-fpm php-cli php-common php-gd php-mbstring php-mysql php-pdo php-devel mysql mysql-server
yum install -y mysql-server nginx-1.8.0-1.el6.ngx.x86_64.rpm php-*
2.修改配置文件
(1)修改时区 vim /etc/php.ini
(2)配置nginx
vim /etc/nginx/conf.d/default.conf
(3)导入php测试网页
cp ~/redis/test.php /usr/share/nginx/html/
cd /usr/share/nginx/html/
mv test.php index.php
3.安装 php 的 redis 扩展
unzip phpredis-master.zip
cd phpredis-master
phpize
--> ls后可看到有configure
./configure (缺少re2c)
yum install re2c-0.13.5-1.el6.x86_64.rpm -y
./configure
make && make install
ls /root/redis/phpredis-master/modules
--> 可看到有redis.so
cd /etc/php.d------- 加载redis模块
cp mysql.ini redis.ini
vim redis.ini
4.导入数据
/etc/init.d/mysqld start
mysql_secure_installation
mysql -pwestos -e "create database test"
mysql -pwestos test < test.sql
cat test.sql
mysql -pwestos -e "grant all on test.* to redis@localhost identified by ‘westos‘"
/etc/init.d/nginx start
/etc/init.d/php-fpm start
4.测试
(1) Redis-cli
(2) 访问172.25.23.1
第一次的时候获取的是redis的数据,再次刷新redis再从mysql获取数据,
5.在修改mysql的数据时,不能同步到redis。redis中仍然会有对应的 KEY,数据就不会更新,此时就会出现 mysql 和 redis 数据不一致的情况。
三.配置 gearman 实现数据同步
Update mysql -> gearmand (job service) -> worker ->redis
Update mysql -> trigger -> udf -> json -> plugin ->gearmand -> worker ->redis
Gearman 是一个支持分布式的任务分发框架:
Gearman Job Server:Gearman 核心程序,需要编译安装并以守护进程形式运行在后台。
Gearman Client:可以理解为任务的请求者。
Gearman Worker:任务的真正执行者,一般需要自己编写具体逻辑并通过守护进程方式运行,Gearman Worker 接收到 Gearman Client 传递的任务内容后,会按顺序处理。
大致流程:下面要编写的 mysql 触发器,就相当于 Gearman 的客户端。修改表,插入表就相当于直接下发任务。然后通过 lib_mysqludf_json UDF 库函数将关系数据映射为 JSON 格式,然后在通过 gearman-mysql-udf 插件将任务加入到 Gearman 的任务队列中,最后通过redis_worker.php,也就是 Gearman 的 worker 端来完成 redis 数据库的更新。
1.安装gearman软件包
yum installl -y gearmand-1.1.8-2.el6.x86_64.rpm
/etc/init.d/gearmand start
2.安装lib_mysqludf_json
lib_mysqludf_json UDF 库函数将关系数据映射为 JSON 格式。通常,数据库中的数据映射为格式,是通过程序来转换的。
yum install -y mysql-devel
unzip lib_mysqludf_json-master.zip
cd lib_mysqludf_json-master
cp lib_mysqludf_json.so /usr/lib64/mysql/plugin/
gcc $(mysql_config --cflags) -shared -fPIC -o lib_mysqludf_json.so lib_mysqludf_json.c
查看 mysql 的模块目录
注册 UDF 函数
3.安装gearman-mysql-udf
这个插件是用来管理调用 Gearman 的分布式的队列
tar zxf gearman-mysql-udf-0.6.tar.gz
cd gearman-mysql-udf-0.6
./configure --libdir=/usr/lib64/mysql/plugin
yum install -y gcc-c++
./configure --libdir=/usr/lib64/mysql/plugin
make && make install
注册 UDF 函数
4.安装 php 的 gearman 扩展
tar zxf gearman-1.1.2.tgz
cd gearman-1.1.2
phpize
./configure
make && make install
cd /etc/php.d/
cp mysql.ini gearman.ini
vim gearman.ini
/etc/init.d/php-fpm reload
5.导入数据库
/etc/init.d/php-fpm reload
mysql -pwestos test < test.sql
cat test.sql (mysql触发器)
指定 gearman 的服务信息
查看触发器
6.编写worker.php
cp worker.php /usr/share/nginx/html/
vim worker.php
nohup php worker.php & ------- 打入后台运行
7.测试
更新数据
查看redis
查看浏览页
四.开启多个redis 服务
1.重新运行安装文件,改端口号
2.复制配置文件并修改
cd /etc/redis/
cp 6379.conf 6376.conf
vim 6376.conf ---> :%s/6379/6376/g
redis-server 6376.conf# 启动服务
五.Redis 主从设置
Server1.example.com 172.25.23.1 master
Server2.example.com 172.25.23.2 slave
1.slave安装软件 ------ 过程同master端相同
2.slave修改配置文件
vim /etc/redis/6379.conf
/etc/init.d/redis_6379 restart
3.slave测试可以获取master 端的数据
4.Master
vim /etc/redis/6379.conf
# save <seconds> <changes> #指定在多长时间内,有多少次更新操作,才将数据同步到数据文件,这个选项有两个属性值,只有当两个属性值均满足时才会触
发;可以设置多种级别:
save 900 1 # 每900秒(15分钟)至少一次键值变更时被触发;
save 300 10 # 每300秒(5分钟)至少 10 次键值变更时被触发;
save 60 10000 # 每60秒至少 10000 次键值变更时被触发
/etc/init.d/redis_6379 restart
六.Redis监控端
Server1.example.com 172.25.23.1 master
Server2.example.com 172.25.23.2 slave
Server3.example.com 172.25.23.3 sentiel
1.监听端安装软件----- 同master 相同
2.将监听的配置文件拷贝到主配置目录中
cd ~/redis-3.0.2
cp sentinel.conf /etc/redis/
cd /etc/redis/
vim sentinel.conf
监听172.25.23.1 的6379端口,有一个出现故障就报告
默认的是30s 测试时,可以将时间缩短
/etc/init.d/redis_6379 restart
3.测试
(1)启动监听服务
redis-server /etc/redis/sentinel.conf --sentinel
# /etc/redis/sentinel.conf 是sentinel.conf的路径
......
(2) redis-cli -p 26379 info(不能关掉监听服务,重新打开一个bash,再次ssh 链接server3,测试)
(3) 断掉master的服务,slave会接管
在监听服务开启的页面会显示
......
......
重新开启master 的服务
仍然是slave接管,直至slave出现故障,master才会再次接管
在监听服务开启的页面会显示
......
七.性能测试
.....
......
redis-benchmark -h 172.25.23.1 -p 6379 -n 100000 -c 20
执行100000次请求,在有20个并发时的性能
......
八.集群管理
1.安装软件
yum install -y rubygems-1.3.7-5.el6.noarch.rpm
gem install redis-3.3.1.gem --local
2.创建集群
(1)
(2) 开启服务
创建集群,每一个主节点有一个从节点
......
(3) 数据去中心化(根据内部的一系列hash算法等,算出中心区域的hash槽,将数据存入该hash槽)
(4)
ps -ax | grep cluster
当集群的数据中心节点的主从都挂掉时,整个集群也就挂掉了
本文出自 “11841085” 博客,转载请与作者联系!
redisd的基本搭建