一、 Redis 介绍
1 Redis 简介
Remote Dictionary Server(Redis)是一个开源的使用 ANSI C 语言编写、支持网络、可 基于内存亦可持久化的日志型、Key-Value 数据库,并提供多种语言的 API。 它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Map), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。
2 Redis 的特点
2.1优点:
- 支持多种数据结构,如 string(字符串)、 list(双向链表)、dict(hash 表)、set(集合)、 zset(排序 set)、hyperloglog(基数估算)
- 支持持久化操作,可以进行 aof 及 rdb 数据持久化到磁盘,从而进行数据备份或数 据恢复等操作,较好的防止数据丢失的手段。
- 支持通过 Replication 进行数据复制,通过 master-slave 机制,可以实时进行数据的 同步复制,支持多级复制和增量复制,master-slave 机制是 Redis 进行 HA 的重要手段。
- 单进程请求,所有命令串行执行,并发情况下不需要考虑数据一致性问题。
二、 安装 Redis 单机版
第一步 需要在 linux 系统中安装 gcc
命令:yum install -y gcc-c++
第二步 需要将下载好的 redis 压缩包添加到 linux 服务器中
版本:redis-3.0.6.tar.gz
redis 的版本:副版本号奇数版本号是测试版,不建议在生产环境中使用。
偶数版本时稳定版建议在生产环境中使用。
3.0.6 版本更新比较大。集成了集群技术
第三步 解压压缩包
命令:tar -zxvf redis…
第四步 编译 redis
命令:进入 redis 的解压完毕的根目录下 执行命令:make
第五步 安装 redis
命 令 : 进 入 redis 的 解 压 完 毕 的 根 目 录 下 ,
执 行 命 令 : make install PREFIX=/usr/local/redis
第六步:启动 redis
1,前端启动
在 bin 目录下执行命令: ./redis-server (ctrl+c)
退出 redis
2.后端启动
(1)先将 redis 解压目录下的 redis.conf 文件拷贝到 安装好的 redis 的 bin 目录下
命令:cp redis.conf /usr/local/redis/bin
(2)修改拷贝过来的 redis.conf 配置文件
命令:vi redis.conf
将 daemonize no 改为 yes
:set nu 显示行号
(3)启动 redis
在 bin 目录下执行命令:./redis-server redis.conf
(4)查看 redis 启动是否成功
输入命令:ps aux|grep redis
(5) 关闭 redis 的命令
./redis-cli shutdown
第七步:测试 redis 在 bin 目录下启动 redis 自带的客户端 ./redis-cli
常见 redis 命令:
ping—>pong 集群搭建详看:
三、 在单机基础安装 Redis 集群版
3.1需求:
搭建一个 Redis 的最小集群,使用伪集群方式。 Redis 中最小的集群三对主从。
在 192.168.31.6 中安装 6 个 redis 实例。
如果使用已经使用过的单机版创建集群时,需要删除 dump.rdb 与 apeendonly.aof 文 件。
6 个 redis 实例的端口分配:8001、8002、8003、8004、8005、8006
3.2、集群步骤:
redis 集群时需要使用一个 ruby 的脚本来完成集群。
第一步、 安装 ruby 环境
命令: yum install ruby
第二步、 安装 ruby 的包管理器
命令:yum install rubygems
第三步、 进入到 redis 的安装目录下的 src 目录下找到 redis-trib.rb 这个文件 这是集群 时需要的脚本
第四步 这个脚本的执行需要依赖于一些其他的 ruby 包 所以我们还要下载一个 redis-3.0.0.gem
将这个文件上传到 linux 服务器中
第五步 安装这个 ruby 包
命令:gem install redis-3.0.0.gem
第六步 先启动 redis 的 6 个实例
先在 local 目录下创建一个目录名称为:redis-cluster
命令:mkdir redis-cluster
/usr/local/redis/bin
第七步 修改 redis.conf 配置文件
命令:vi redis.conf
(1)修改端口:默认的为 6379 将六个 redis 实例的端口改成从 8001-8006 在配置文件 的 port 属性中。
:set nu
此处默认,不用更改,检查一遍
(2)修改开启集群 在配置文件中搜索 cluster 找到后 将默认为注释的 cluster-enabled yes 去掉注释
(3) cp bin/ …/redis-cluster/redis01 -r
第八步 将这个 redis01 拷贝 5 份到当前这个目录下
命令:
cp redis01/ redis02 ‐r
cp redis01/ redis03 ‐r
cp redis01/ redis04 ‐r
cp redis01/ redis05 ‐r
cp redis01/ redis06 ‐r
第九步 修改拷贝的这些 redis 的port端口
命令:
[root@localhost redis-cluster]# vi redis02/redis.conf [root@localhost redis-cluster]# vi redis03/redis.conf [root@localhost redis-cluster]# vi redis04/redis.conf [root@localhost redis-cluster]# vi redis05/redis.conf [root@localhost redis-cluster]# vi redis06/redis.conf
第十步 把创建集群的 ruby 脚本复制到 redis-cluster 中
命令:[root@localhost src]# cp *.rb /usr/local/redis-cluster/
第十一步 创建一个能够批量启动的脚本程序
命令:vi startall.sh
第十二步 在脚本文件中添加命令
cd redis01
/redis‐server redis.conf
cd ..
cd redis02
./redis‐server redis.conf
cd ..
cd redis03
./redis‐server redis.conf
cd ..
cd redis04
./redis‐server redis.conf
cd ..
cd redis05
./redis‐server redis.conf
cd ..
cd redis06
./redis‐server redis.conf
cd ..
第十三步 将批量启动脚本设置为可执行权限
命令:chmod +x startall.sh
第十五步 执行这个批量启动的脚本
命令:
[root@localhost redis-cluster]# ./startall.sh
第十六步 查看 redis 是否启动成功
命令:ps aux|grep redis
第十七步 创建集群
命令:1 ./redis‐trib.rb create ‐‐replicas 1 192.168.31.7:8001 192.168.31.7:8002 192.168.31.7:8003 192.168.31.7:8004 192.168.31.7:8005 192.168.31.7:8006
06 控制台会显示如下信息 输入 yes
>>> Creating clusterConnecting to node 192.168.10.128:7001: OK Connecting to node 192.168.10.128:7002: OK Connecting to node 192.168.10.128:7003: OK
Connecting to node 192.168.10.128:7004: OK Connecting to node 192.168.10.128:7005: OK Connecting to node 192.168.10.128:7006: OK >>> Performing hash slots allocation on 6 nodes... Using 3 masters: 192.168.10.128:7001 192.168.10.128:7002 192.168.10.128:7003 Adding replica 192.168.10.128:7004 to 192.168.10.128:7001 Adding replica 192.168.10.128:7005 to 192.168.10.128:7002 Adding replica 192.168.10.128:7006 to 192.168.10.128:7003 M: 8cf30cb6141b5d5db1fce2c8bdabe32666bbb1e7 192.168.10.128:7001 slots:0-5460 (5461 slots) master M: e8038d0965377ff0793911a10984174b57ddbaaf 192.168.10.128:7002 slots:5461-10922 (5462 slots) master M: be58583284fd2f26f03f2fce6c4e38de240eb841 192.168.10.128:7003 slots:10923-16383 (5461 slots) master S: e66b85a7e72913f1ca4657600a0113d2cb0ece8e 192.168.10.128:7004 replicates 8cf30cb6141b5d5db1fce2c8bdabe32666bbb1e7 S: 9f1897cb9c570487685c467b7b4b53f4c0c9f556 192.168.10.128:7005 replicates e8038d0965377ff0793911a10984174b57ddbaaf S: 1966b2674ce141da372438a29e9e84bfad266da3 192.168.10.128:7006 replicates be58583284fd2f26f03f2fce6c4e38de240eb841 Can I set the above configuration? (type 'yes' to accept):
如果控制台输出如下信息表集群成功
>>> Nodes configuration updated >>> Assign a different config epoch to each node >>> Sending CLUSTER MEET messages to join the cluster Waiting for the cluster to join....... >>> Performing Cluster Check (using node 192.168.10.128:7001) M: 8cf30cb6141b5d5db1fce2c8bdabe32666bbb1e7 192.168.10.128:7001 slots:0-5460 (5461 slots) master M: e8038d0965377ff0793911a10984174b57ddbaaf 192.168.10.128:7002 slots:5461-10922 (5462 slots) master M: be58583284fd2f26f03f2fce6c4e38de240eb841 192.168.10.128:7003
slots:10923-16383 (5461 slots) master M: e66b85a7e72913f1ca4657600a0113d2cb0ece8e 192.168.10.128:7004 slots: (0 slots) master replicates 8cf30cb6141b5d5db1fce2c8bdabe32666bbb1e7M: 9f1897cb9c570487685c467b7b4b53f4c0c9f556 192.168.10.128:7005 slots: (0 slots) master replicates e8038d0965377ff0793911a10984174b57ddbaaf M: 1966b2674ce141da372438a29e9e84bfad266da3 192.168.10.128:7006 slots: (0 slots) master replicates be58583284fd2f26f03f2fce6c4e38de240eb841 [OK] All nodes agree about slots configuration. >>> Check for open slots... >>> Check slots coverage... [OK] All 16384 slots covered.
第十八步:集群创建成功后每个节点中会生成nodes.conf:这个配置文件,里面记录了集群 的详细信息:
只要有nodes.conf这个配置文件那么在下次启动集群的时候,就不需要再创建集群了,只 需要把每个节点启动起来就可以了,只需要执行
命令:
[root@localhost redis-cluster]# ./startall.sh
测试 Redis 集群
测试 Redis 集群:可以连接集群中的任意一个节点进行测试 注意一定要有-c 参数,否 则能连上,但是无法操作 redis 集群
命令:
[root@localhost redis-cluster]# ./redis01/redis-cli -h 192.168.31.7 -p 8001 -c
关闭 Redis 集群
命令:bin/redis-cli -p 8001 shutdown 也可以编写一个批量关闭的脚本
命令:vi shutdownall.sh
redis01/redis-cli -h 192.168.31.7 -p 8001 shutdown redis01/redis-cli -h 192.168.31.7 -p 8002 shutdown redis01/redis-cli -h 192.168.31.7 -p 8003 shutdown redis01/redis-cli -h 192.168.31.7 -p 8004 shutdown redis01/redis-cli -h 192.168.31.7 -p 8005 shutdown redis01/redis-cli -h 192.168.31.7 -p 8006 shutdown
执行权限: 1 chmod +x shutdownall.sh