浅练一下Redis的安装、持久化、主从复制和集群搭建

1.redis

1.什么是redis

1.1.Redis是用C语言开发的一个开源的高性能键值对(key-value)数据库。redis是将数据存放到内存中,由于内容存取速度快所以redis被广泛应用在互联网项目中。

哪儿用了:

首页轮播广告,因为商城首页访问量特别大,直接从数据库获取首页菜单和大广告位信息数据库压力过大,这些存贮量不大,但是高并发的页面可以使用Redis所以首页菜单和大广告位信息必须从缓存中获取。

为什么用:

因为mysql是存储到硬盘空间,在高并发的情况下并不好用;而redis是将数据存储到内存中,存取效率高;

2.redis下载

http://download.redis.io/releases/redis-3.0.0.tar.gz

3.安装redis

3.1.准备

Redis是c语言开发的。安装redis需要c语言的环境。

yum install gcc-c++

3.2.安装redis

将redis-3.0.0.tar.gz拷贝到/usr/upload下解压源码

tar -zxvf redis-3.0.0.tar.gz

进入解压后的目录进行编译

cd /usr/upload/redis-3.0.0

make

安装到指定目录

make install PREFIX=/usr/local/redis

3.3.启动和关闭redis

3.3.1.前端启动

1、启动方式:

直接运行bin/redis-server将以前端模式启动。

cd /usr/local/redis/bin
./redis-server

2、启动缺点:

ssh命令窗口关闭则redis-server程序结束,不推荐使用此方法

3、启动图例:

​ 占用命令窗口

**4、前端启动的关闭:**ctrl+c

3.3.2.后端启动

第一步:进入源码目录,里面有一份配置文件 redis.conf,然后将其拷贝到安装路径下

cp /usr/upload/redis-3.0.0/redis.conf  /usr/local/redis/bin

第二步:修改/usr/java/redis/bin下的redis.conf,将daemonize由no改为yes

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EUBzzVz6-1661337532541)(E:/每日资料/06-微服务/03-power_shop/动力优品05 - 前台系统搭建、商城首页展示、redis/课件/动力优品05 - 前台系统搭建、商城首页展示、redis/assets/1588858554831.png)]

第三步:启动

./redis-server redis.conf

3.3.3.关闭

到redis/bin目录下执行如下命令

./redis-cli -p 端口号 shutdown

3.3.4.redis的基本命令

redis-cli连上redis服务后,可以在命令行发送命令:

./redis-cli -h 127.0.0.1 -p 6379

4.持久化

​ Redis的高性能是由于其将所有数据都存储在了内存中,为了使Redis在重启之后仍能保证数据不丢失,需要将数据从内存中同步到硬盘中,这一过程就是持久化。

​ Redis支持两种方式的持久化,一种是RDB方式,一种是AOF方式。可以单独使用其中一种或将二者结合用。

4.1.RDB持久化

​ RDB方式的持久化是通过快照(snapshotting)完成的,当符合一定条件时Redis会自动将内存中的数据进行快照并持久化到硬盘。

​ RDB是Redis默认采用的持久化方式,在redis.conf配置文件中默认有此下配置:

save 900 1  #900秒内容如果超过1个key被修改,则发起快照保存
save 300 10 #300秒内容如超过10个key被修改,则发起快照保存
save 60 10000 #表示60秒内如果超过10000个key被修改,则发起快照保存

在redis.conf中:

​ 配置dir指定rdb快照文件的位置

​ 配置dbfilenam指定rdb快照文件的名称

Redis启动后会读取RDB快照文件,将数据从硬盘载入到内存。

4.1.1.实验

1、删除dump.rdb

2、set test abc

3、关闭服务端并观察bin目录的变化

总结:

​ 优点:让redis的数据存取速度变快

​ 缺点:服务器断电时会丢失部分数据(数据的完整性得不到保证)

4.2.AOF持久化

默认情况下Redis没有开启AOF(append onlyfile)方式的持久化,可以通过appendonly参数开启:
appendonly yes

​ AOF文件的保存位置和RDB文件的位置相同,都是通过dir参数设置的,默认的文件名是appendonly.aof,可以通过appendfilename参数修改:

appendfilename appendonly.aof

​ AOF持久化策略如下:

#appendfsync always   #每次有数据修改发生时都会写入AOF文件。
appendfsync everysec  #每秒钟同步一次,该策略为AOF的缺省策略。
#appendfsync no        #从不同步。高效但是数据不会被持久化。
4.2.1.实验

1、设置appendonly为yes

2、设置一个key

3、观察appendonly.aof

总结:

​ 优点:持久化良好,能包证数据的完整性

​ 缺点:大大降低了redis系统的存取速度

5.主从配置

1、过程

​ a.从会往主发送sync命令
​ b.主会往从发送rdb文件
​ c.主会往从发送写命令

2.配置
1、拷贝redis
cd /usr/local
cp -r redis redis-6380
2、修改redis-6380的redis.conf

主:无需配置
从:slaveof 主ip 主port

    实验:
        1.往主写数据,观察从是否同步
        2.关闭主,往从写数据(写失败)
        3.从只读,不可写
3、redis主从复制

​ 从发送一个sync请求同步给主
​ 主接到请求,响应回去一个rdb文件保持数据一致性
​ 之后主会把写的命令传给从,保证数据的一致性,达到主从复制

6.redis集群

1、redis集群是多少台?

​ 投票容错超过半数:3台 高可用:再加3台备份,一共6台

2、为什么集群中有一台挂了,则整个集群都挂了呢?

​ redis集群中有16384个槽平分给集群的3个节点,存取数据时:crc16(key)%16384=0~16383,通过对key值得计算得到他要保存的槽,如果一个节点挂掉,会导致这个集群无法正常运行。

3、搭建步骤
1、安装ruby环境

​ yum install ruby
​ yum install rubygems
​ cd /usr/upload
​ gem install redis-3.0.0.gem
​ cd redis-3.0.0/src
​ ll *.rb

2、拷贝6台redis,并启动

​ 1)必须删除dump.rdb和appendonly.aof文件
​ 2)拷贝6个节点
​ cp -r /usr/local/redis /usr/local/redis-cluster/redis-7001
​ … …
​ 3)修改配置文件
​ port 7001
​ cluster-enable yes
​ … …
​ 4)创建启动脚本(v-y-p)
​ cd /usr/local/redis-cluster/redis-7001/bin
​ ./redis-server redis.conf
​ cd /usr/local/redis-cluster/redis-7002/bin
​ ./redis-server redis.conf
​ cd /usr/local/redis-cluster/redis-7003/bin
​ ./redis-server redis.conf
​ cd /usr/local/redis-cluster/redis-7004/bin
​ ./redis-server redis.conf
​ cd /usr/local/redis-cluster/redis-7005/bin
​ ./redis-server redis.conf
​ cd /usr/local/redis-cluster/redis-7006/bin
​ ./redis-server redis.conf

5)更改权限

​ chmod 777 nginx-cluster.sh

3、使用ruby脚本搭建redis集群

​ cd /usr/upload/redis.3.0.0/src
​ ./redis-trib.rb create --replicas 1 192.168.163.134:7001 192.168.163.134:7002 192.168.163.134:7003 192.168.163.134:7004 192.168.163.134:7005 192.168.163.134:7006

4、测试redis cluster命令
  ./redis-cli -c -p 7001
  cluster info   #打印集群的信息
  cluster nodes  #列出集群当前已知的所有节点(node),以及这些节点的相关信息  

1 192.168.163.134:7002 192.168.163.134:7003 192.168.163.134:7004 192.168.163.134:7005 192.168.163.134:7006

4、测试redis cluster命令
  ./redis-cli -c -p 7001
  cluster info   #打印集群的信息
  cluster nodes  #列出集群当前已知的所有节点(node),以及这些节点的相关信息  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值