首页 > 代码库 > 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的数据时,不能同步到redisredis中仍然会有对应的 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的基本搭建