Redis在Linux上的安装和集群搭建(CentOS为例)

一、Redis简介

1.关于关系型数据库和nosql数据库

关系型数据库是基于关系表的数据库,最终会将数据持久化到磁盘上,而nosql数据 库是基于特殊的结构,并将数据存储到内存的数据库。从性能上而言,nosql数据库 要优于关系型数据库,从安全性上而言关系型数据库要优于nosql数据库,所以在实 际开发中一个项目中nosql和关系型数据库会一起使用,达到性能和安全性的双保证。

2.noSQL特点

在大数据存取上具备关系型数据库无法比拟的性能优势, 例如:

  1. 易扩展
    • NoSQL数据库种类繁多, 但是一个共同的特点都是去掉关系数据库的关系型特性。数据之间无关系, 这样就非常容易扩展。也无形之间, 在架构的层面上带来了可扩展的能力。
  2. 大数据呈, 高性能
    • NoSQL数据库都具有非常高的读写性能, 尤其在大数据呈下, 同样表现优秀。这得益千它的无关系性, 数据库的结构简单。
  3. 灵活的数据模型
    • NoSQL无需事先为要存储的数据建立字段, 随时可以存储自定义的数据格式。而在关系数据库里, 增删字段是一件非常麻烦的事情。如果是非常大数据呈的表, 增加字段简直就是一个疆梦。这点在大数据星的Web2.0时代尤其明显。
  4. 高可用
    • NoSQL在不太影响性能的情况, 就可以方便的实现高可用的架构。比如Cassandra, HBase模型, 通过复制模型也能实现高可用。综上所述, NoSQL的非关系特性使其成为了后Web2.0时代的宠儿, 助力大型Web2.0网站的再次起飞, 是一项全新的数据库革命性运动。

3.什么是redis

Redi s 是用 C 语言开发的一个开源的高性能键值对 ( key-value) 数据库。它通过提供多种键值数据类型来适应不同场景下的存储需求,目 前为止Redis 支待的键值 数据类型如下:

1 、 字符串类型

2、 散列类型

3、 列表类型

4、 集合类型

5、 有序集合类型。

4.redis 的应用场景

• 缓存(数据查询、短连接、新闻内容、商品内容等等)(最多使用)

• 聊天室的在线好友列表。

• 任务队列。(秒杀、抢购、12306 等等)

• 应用排行榜。

• 网站访问统计 。

• 数据过期处理(可以精确到毫秒)

• 分布式栠群架构中的 session 分离。

二、Redis的安装

1.安装环境

安装redis需要先将官网下载的源码进行编译,编译依赖gcc环境,如果没有gcc环境,需要安装gcc:

yum install gcc-c++

版本说明:本教程使用redis3.0版本。3.0版本主要增加了redis集群功能。

2.安装步骤

1、下载redis的源码包。http://download.redis.io/releases/redis-3.0.0.tar.gz

2、把源码包上传到linux服务器

alt+p打开SecureCRT的SFTP窗口:put E://redis-3.0.0.tar.gz

默认放到root文件夹

3、解压源码包

tar -zxvf redis-3.0.0.tar.gz

4、进入解压后的目录进行编译,将.c文件编译为.o文件

cd /usr/local/redis-3.0.0 make

编译成功

image-20200525170335262

5、安装到指定目录

make PREFIX=/usr/local/redis install

安装完后,在/usr/local/redis/bin下有几个可执行文件

redis-benchmark ---一性能刹试工具
redis-check-aof ----AOF文件修复工具
redis-check-dump ----RDB文件检查工具(快照持久化文件)
redis-cli ----命令行客户端
redis-server ----redis服务器启动命令

redis3.0新增的redis-sentinel是redis集群管理工具可实现高可用。

6、如需远程连接redis,需配置redis端口6379在linux防火墙中开发

/sbin/iptables -I INPUT -p tcp --dport 6379 -j ACCEPT

/etc/rc.d/init.d/iptables save

3.启动Redis

3.1前端启动模式

/usr/local/redis/bin/redis-server

直接运行bin/redis-server将以前端模式启动,前端模式启动的缺点是启动完成后,不能再进行
其他操作,如果要操作必须使用ctrl+c,同时redis-server程序结束,不推荐使用此方法。

image-20200525171227622

解决方案:可以通过修改配置文件 配置redis后台启动,即服务器启动了但不会穿件控制台窗口

3.2后端启动

1、从redis的源码目录中复制redis.conf到redis的安装目录

cp redis.conf /usr/local/redis/bin/

2、修改配置文件

image-20200525171559936

3、打开服务

./redis-server redis.conf

4、打开客户端

./redis-cli

redis默认使用6379端口。

img

也可更改redis.conf文件,修改端口号:

img

redis常用命令:1.get/set 2.ping/pong 3.del 4.keys *

三、Redis集群的搭建

1.需要的环境

搭建集群需要使用到官方提供的ruby脚本。需要安装ruby的环境。

安装ruby

yum install ruby

yum install rubygems

redis集群管理工具redis-trib.rb

[root@bogon ~]# cd redis-3.0.0

[root@bogon redis-3.0.0]# cd src

[root@bogon src]# ll *.rb

-rwxrwxr-x. 1 root root 48141 Apr 1 07:01 redis-trib.rb

安装ruby和redis的接口程序

先上传redis-3.0.0.gem到Linux服务器

gem install redis-3.0.0.gem

image-20200525223134668

环境搭建完成

2.集群结点规划

集群中有三个节点的集群,每个节点有一主一备。需要6台虚拟机。搭建一个伪分布式的集群,使用6个redis实例来模拟。

在同一台服务器用不同的端口表示不同的redis服务器,如下:

主节点:192.168.101.3:7001 192.168.101.3:7002 192.168.101.3:7003

从节点:192.168.101.3:7004 192.168.101.3:7005 192.168.101.3:7006

在/usr/local下创建redis-cluster目录,其下创建redis01,将redis安装目录bin下的文件拷贝到redis1中

cd /usr/local

mkdir redis-cluster

[root@localhost local]# cd redis
[root@localhost redis]# cp -r bin …/redis-cluster/redis01

修改配置文件

cd …/redis-cluster/redis01/

rm -f dump.rdb

vim redis.conf

image-20200525225820719

找cluster小技巧:输入/cluster直接定位

image-20200525225838155

拷贝redis01的所有内容到redis02…06

cp -r redis01/ redis02

cp -r redis01/ redis03

修改每一个redis下面配置文件的端口号

vim redis02/redis.conf…

将redis源码目录src下的redis-trib.rb拷贝到redis-cluster目录下。

cd redis-3.0.0/src

cp *.rb /usr/local/redis-cluster/

3.启动每个结点redis服务

vim 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

查看ps aux|grep redis

image-20200525231709590

4.执行创建集群命令

执行redis-trib.rb,此脚本是ruby脚本,它依赖ruby环境。

./redis-trib.rb create --replicas 1 192.168.10.130:7001 192.168.10.130:7002 192.168.10.130:7003 192.168.10.130:7004 192.168.10.130:7005 192.168.10.130:7006

image-20200525232140871

注意:

如果执行时报如下错误:

[ERR] Node XXXXXX is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0

解决方法是删除生成的配置文件nodes.conf,如果不行则说明现在创建的结点包括了旧集群的结点信息,需要删除redis的持久化文件后再重启redis,比如:appendonly.aof、dump.rdb

5.测试集群

redis01/redis-cli -h 192.168.10.130 -p 7003 -c

其中-c表示以集群方式连接redis,-h指定ip地址,-p指定端口号

cluster nodes 查询集群结点信息

cluster info 查询集群状态信息

image-20200525232603825

6.关闭redis

为了以后方便,创建shutdown.sh脚本

redis01/redis-cli -p 7001 shutdown
redis01/redis-cli -p 7002 shutdown
redis01/redis-cli -p 7003 shutdown
redis01/redis-cli -p 7004 shutdown
redis01/redis-cli -p 7005 shutdown
redis01/redis-cli -p 7006 shutdown

这里面有vim小技巧:

在光标的位置按“yy”,复制当前行;然后再光标的行按“p”,粘贴到下一行,原来的往下顺移。

给权限:chmod +x shutdown.sh

执行并查看进程:

./shutdown.sh

ps aux|grep redis

image-20200525234423937

结语

能把机票报销一下吗?这个月飞机都是为你打的(奇怪的知识增加了)

image-20200525234300013

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值