linux下安装redis,以及redis的操作(持久化RDB、AOF,主从复制,集群),VMware下载

目录

1.下载VMware虚拟机 / CentOS7

2.linux上安装Redis

3.Redis的操作

3.1事务和锁机制

3.2.悲观锁、乐观锁

4.持久化

4.1RDB

4.2AOF

5.主从复制

1.下载VMware虚拟机 / CentOS7

VMware软件下载地址:下载 VMware Workstation Pro | CN

虚拟机密钥:百度上搜一下 都有 ,下载完虚拟机再下载centos7把他装配到虚拟机中

虚拟机下载地址:centos-7-isos-x86_64安装包下载_开源镜像站-阿里云

2.linux上安装Redis

Redis版本库: https://download.redis.io/releases/    进入根据自己的需要选择对应的版本

然后打开虚拟机输入:  

wget https://download.redis.io/releases/redis-6.2.1.tar.gz

 然后再解压源码包

tar xzf redis-6.2.1.tar.gz

解压完后进入解压后的目录进行编译,然后再进入src进行安装

//进入 编译 make
cd redis-6.2.1
make

//然后进入src 进行安装
cd src
make install

然后就安装完成了。但是由于安装redis的时候,我们没有选择安路径,所以是默认的位置安装。然后我们可以把执行文件和配置文件移到习惯的目录。

然后我们在 usr/local/ 目录下创建一个redis,然后再redis里面分别创建bin、和etc

mkdir -p /usr/local/redis/bin
mkdir -p /usr/local/redis/etc

把 redis.conf 移到 etc文件下 把redis-benchmark、 redis-check-aof 、redis-check-rdb 、redis-cli、 redis-server 、redis-sentinel 复制到bin文件下

[root@localhost ~]# cd redis-6.2.1/
[root@localhost redis-6.2.1]# cp redis.conf /usr/local/redis/etc/
[root@localhost redis-6.2.1]# cd src
[root@localhost src]# cp redis-benchmark /usr/local/redis/bin/
[root@localhost src]# cp redis-check-aof /usr/local/redis/bin/
[root@localhost src]# cp redis-check-rdb /usr/local/redis/bin/
[root@localhost src]# cp redis-cli /usr/local/redis/bin/
[root@localhost src]# cp redis-sentinel /usr/local/redis/bin/
[root@localhost src]# cp redis-server /usr/local/redis/bin/

比较重要的3个可执行文件:
redis-server:Redis服务器程序
redis-cli:Redis客户端程序,它是一个命令行操作工具。也可以使用telnet根据其纯文本协议操作。
redis-benchmark:Redis性能测试工具,测试Redis在你的系统及配置下的读写性能
 

deamonize 将Redis服务以守护进程在后台运行,则把该项的值改为yes

进入vi redis.conf

设置完 启动服务器redis-server redis.conf

3.Redis的操作

3.1事务和锁机制

Multi
Exec
Discard
从输入 Multi 命令开始,输入的命令都会依次进入命令队列中,但不会执行,直到输入 Exec 后,Redis 会将之前的命令队列中的命令依次执行。
组队的过程中可以通过 Discard 来放弃组队。

组队成功,提交成功

 放弃组队

组队中有命令错误,不会执行

 

 组队中不报错,执行时报错

​ 

总结: 组队时的错误:在组队的时候有一个出现错误,其他全部都不会成功 执行时的错误:如果执行阶段某个命令报出了错误,则只有报错的命令不会被执行,而其他的命令都会执行,不会回滚。

3.2.悲观锁、乐观锁

悲观锁:每次错误之前先上索,上锁之后别人就不能操作,解锁之后才能别人才能操作。
缺点:不能多人同时进行,这种效率低。
乐观锁:在数据操作的时候给数据加上一个数据的版本号,谁先操作数据就要更新数据和版本号,下一个人在要操作
        数据的时候要先判断当前操作数据的版本号和数据库的版本号是否一致。
乐观锁适用于多读的应用类型,这样可以提高吞吐量。Redis就是利用这种check-and-set 机制实现事物的。
Watch、unwatch
在执行 multi 之前,先执行 watch key1 [key2],可以监视一个(或多个 )key 。如果在事务执行之前这个 key 被其他命令所改动,那么事务将被打断。

取消 WATCH 命令对所有 key 的监视。如果在执行 WATCH 命令之后,EXEC 命令或 DISCARD 命令先被执行,那么就不需要再执行 UNWATCH 

 用两个客户端演示 乐观锁(再执行事务之前设置监视)

4.持久化

4.1RDB

在指定的时间间隔内将内存中的数据集快照写入磁盘, 即 Snapshot 快照,恢复时是将快照文件直接读到内存里。
Redis 会单独创建一个子进程(fork)来进行持久化。
先将数据写入到一个临时文件中,待持久化过程完成后,再将这个临时文件内容覆盖到 dump.rdb。
整个过程中,主进程是不进行任何 IO 操作的,这就确保了极高的性能。如果需要进行大规模数据的恢复,且对于数据恢复的完整性不是非常敏感,那 RDB 方式要比 AOF 方式更加的高效。
RDB 的缺点是最后一次持久化后的数据可能丢失。

Fork
缺点
作用是复制一个与当前进程一样的进程。新进程的所有数据(变量、环境变量、程序计数器等) 数值都和原进程一致,但是是一个全新的进程,并作为原进程的子进程
在 Linux 程序中,fork() 会产生一个和父进程完全相同的子进程,但子进程在此后多会 exec 系统调用,出于效率考虑,Linux 中引入了 写时复制技术
一般情况父进程和子进程会共用同一段物理内存,只有进程空间的各段的内容要发生变化时,才会将父进程的内容复制一份给子进程

优点
适合大规模的数据恢复;
对数据完整性和一致性要求不高更适合使用;
节省磁盘空间;
恢复速度快。
Fork 的时候,内存中的数据被克隆了一份,大致 2 倍的膨胀性需要考虑;
虽然 Redis 在 fork 时使用了写时拷贝技术,但是如果数据庞大时还是比较消耗性能;
在备份周期在一定间隔时间做一次备份,所以如果 Redis 意外 down 掉的话,就会丢失最后一次快照后的所有修改。

设置 20秒 可以写3次

演示RDB持久化(数据恢复)

现在一个客户端加入 三个key

再到另一个客户端复制一份dump.rdb为 d.rdb,然后杀掉进程,删掉dump.rdb,再把d.rdb转成dump.rdb 重启服务器 打开客户端查看数据

4.2AOF

以日志的形式来记录每个写操作(增量保存),将 Redis 执行过的所有写指令记录下来(读操作不记录), 只许追加文件但不可以改写文件,Redis 启动之初会读取该文件重新构建数据,换言之,如果 Redis 重启就会根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作。

执行流程:
客户端的请求写命令会被 append 追加到 AOF 缓冲区内;
AOF 缓冲区根据 AOF 持久化策略 [always,everysec,no] 将操作 sync 同步到磁盘的 AOF 文件中;
AOF 文件大小超过重写策略或手动重写时,会对 AOF 文件 Rewrite 重写,压缩 AOF 文件容量;
Redis 服务重启时,会重新 load 加载 AOF 文件中的写操作达到数据恢复的目的。
AOF 和 RDB 同时开启时,系统默认读取 AOF 的数据(数据不会存在丢失)
官方推荐两个都启用。

如果对数据不敏感,可以选单独用 RDB。
不建议单独用 AOF,因为可能会出现 Bug。
如果只是做纯内存缓存,可以都不用。

 AOF 默认不开启
把appendonly no 改成yes 这样AOF就开启了

优点:
备份机制更稳健,丢失数据概率更低;
可读的日志文本,通过操作 AOF 稳健,可以处理误操作。

缺点:
比起 RDB 占用更多的磁盘空间;
恢复备份速度要慢;
每次读写都同步的话,有一定的性能压力;

官方推荐两个都启用。
如果对数据不敏感,可以选单独用 RDB。
不建议单独用 AOF,因为可能会出现 Bug。
如果只是做纯内存缓存,可以都不用。

然后关掉服务器 再重启 会发现多了一个appendonly.aof文件

此时appendonly.aof为零是因为RDB和AOF同时开启时,系统默认取AOF的数据。

 然后我们再设置key 会发现appendonly.aof的数据发生了变化

AOF的数据持久化恢复 跟上面RDB一样 ,要复制一份apendonly.aof文件 a.aof,然后删掉进程,删除appendonly文件,再把a.aof变成 appendonly.aof 然后再重启服务,查看key

5.主从复制

主机数据更新后根据配置和策略, 自动同步到备机的 master/slaver 机制,Master 以写为主,Slaver 以读为主。

根目录下创建一个myredis 然后把redis.conf复制到里面

 进入redis.conf 把appendonly 改成no

紧接着又创建三个分别为redis6379.conf  redis6380.conf  redis6381.conf

然后修改三个.conf里面的数据

include /root/myredis/redis.conf
pidfile /var/run/redis_6379.pid
port 6379
dbfilename dump6379.rdb                     

 

然后运行三台redis服务器

 然后开启三个客户端 redis-cli -p 6379 / 6380 / 6381

然后设置主从关系 配从不配主

slaveof  <ip>  <port>

查看运行情况 info replication

 主机 6379,从机 6380 和 6381

1.假设从机 6380 挂掉。

        当6380重启后,6380不再是6379的从机,而是作为新的master;
        当再次把6380作为6379的从机加入后,从机会把数据从头到尾复制。

 2.假设主机 6379 挂掉。

        6380和6381仍然是6379的从机,不会做任何事;
        当6379重启后,依然是主服务器。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值