redis 的 String 类型
set key1 v1
get key1
keys *
EXISTS key1
APPEND key1 "hello"
STRLEN key1
redis 中的list 类型
lpush one tow threee
rpush one two threee
redis 中 set 类型
redis 中 set 类型
redis 中持久化技术
redis 中主从复制
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RUIBF5ga-1630832182471)(D:\GZ2136\Day_0825\资料\typora-user-images\typora-user-images\image-20210617132220975.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AIim8W4w-1630832182474)(D:\GZ2136\Day_0825\资料\typora-user-images\typora-user-images\image-20210617132253986.png)]
默认情况下 redis的所有server 服务器都是 master 主节点
info replication
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GlEiZrvd-1630832182479)(D:\GZ2136\Day_0825\资料\typora-user-images\typora-user-images\image-20210617132607135.png)]
依次拷贝三个redis的配置文件
redis6379.conf redis6380.conf redis6381.conf
分别修改三个配置文件的内容
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LccNmac6-1630832182481)(D:\GZ2136\Day_0825\资料\typora-user-images\typora-user-images\image-20210617133603117.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qZyxTHaq-1630832182482)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210617133622357.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-W2AYAMI1-1630832182484)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210617133635983.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jKYp2qeE-1630832182485)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210617133648934.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Whg5TvGp-1630832182486)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210617133707239.png)]
分别启动三台机器
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8zL6ESyI-1630832182487)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210617134440357.png)]
默认情况下,每台服务器都是master主机
然后在 6380 机器中 使用 客户端 输入 如下命令
127.0.0.1:6380> slaveof 127.0.0.1 6379
OK
info replication
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-64c9LjUu-1630832182488)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210617135026361.png)]
再去测试 主机
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-42nLVNTI-1630832182489)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210617135104927.png)]
同理设置 6381
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PBJNlSAM-1630832182491)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210617135300633.png)]
再去看看 主机的
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-V5Xluc28-1630832182492)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210617135327890.png)]
当前配置的是死的,实际开发中应该改的是 核心配置文件
主机可以写,从机可以读
从机 不能写
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aW8htKd6-1630832182493)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210617135759408.png)]
默认情况下,如果主机挂了,从机并不会自动变为 主节点,而需要手动将从节点配置成主节点,如果需要自动变为 主节点,那么久需要配置哨兵模式
哨兵模式
-
编写哨兵配置文件
sentinel.conf sentinel monitor myredis 192.168.233.130 6379 1
启动哨兵模式
redis-sentinel sentinel.conf
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1n2RkxAA-1630832182494)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210618084805330.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ruJWL5h6-1630832182495)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210618084823997.png)]
测试
-
停止掉主机
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ns9lVlz7-1630832182496)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210618085028838.png)]
稍等一会儿测试
-
看到如下打印的日志信息
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ShIpQYxg-1630832182497)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210618085110679.png)]
6380 机器已经变成主机了
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ph6ebN5u-1630832182498)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210618085245514.png)]
6381 机器是从机 ,这样子再次构成了一机一从
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-crRpRoph-1630832182499)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210618085316321.png)]
redis 中持久化策略
1.1 Redis的持久化
redis是内存数据库,它把数据存储在内存中,这样在加快读取速度的同时也对数据安全性产生了新的问题,即当redis所在服务器发生宕机后,redis数据库里的所有数据将会全部丢失。为了解决这个问题,redis提供了持久化功能——RDB和AOF(Append Only File)
- rbd 策略
1.1.1 RDB
RDB(Redis DataBase)是 Redis 默认的持久化方案。在指定的时间间隔内,执行指定次数的写操作,则会将内存中的数据写入到磁盘中。即在指定目录下生成一个dump.rdb文件。Redis重启会通过加载dump.rdb文件来恢复数据。
1.1.1.1 RDB原理:
Redis会复制一个与当前进程一样的进程。新进程的所有数据(变量、环境变量、程序计数器等)数值都和原进程一致,但是是一个全新的进程,并作为原进程的子进程,来进行持久化。
整个过程中,主进程是不进行任何IO操作的,这就确保了极高的性能。
如果需要进行大规模数据的恢复,且对于数据恢复的完整性不是非常敏感,那RDB方式要比AOF方式更加的高效。RDB的缺点是最后一次持久化后的数据可能丢失。
1.1.1.2 RDB保存的文件:
RDB保存的文件是dump.rdb文件 ,位置保存在Redis的启动目录。Redis每次同步数据到磁盘都会生成一个dump.rdb文件,新的dump.rdb会覆盖旧的dump.rdb文件。
1.1.1.3 配置RDB 持久化策略
在redis.conf的快照配置中,配置RDB保存的策略。
在客户端执行FLUSHDB或者FLUSHALL或者SHUTDOWN时,也会把快照中的数据保存到dump.rdb,只不过这种操作已经把数据清空了,保存的也是空文件,没有意义。
Redis默认开启RDB持久化方式,适合大规模的数据恢复但它的数据一致性和完整性较差。
RDB 配置
save :配置复合的快照触发条件,即Redis 在seconds秒内key改变changes次,Redis把快照内的数据保存到磁盘中一次。默认的策略是:
1分钟内改变了1万次
或者5分钟内改变了10次
或者15分钟内改变了1次
如果要禁用Redis的持久化功能,则把所有的save配置都注释掉。
2、stop-writes-on-bgsave-error:当bgsave快照操作出错时停止写数据到磁盘,这样能保证内存数据和磁盘数据的一致性,但如果不在乎这种一致性,要在bgsave快照操作出错时继续写操作,这里需要配置为no。
3、rdbcompression:设置对于存储到磁盘中的快照是否进行压缩,设置为yes时,Redis会采用LZF算法进行压缩;如果不想消耗CPU进行压缩的话,可以设置为no,关闭此功能。
4、rdbchecksum:在存储快照以后,还可以让Redis使用CRC64算法来进行数据校验,但这样会消耗一定的性能,如果系统比较在意性能的提升,可以设置为no,关闭此功能。
5、dbfilename:Redis持久化数据生成的文件名,默认是dump.rdb,也可以自己配置。
6、dir:Redis持久化数据生成文件保存的目录,默认是./即redis的启动目录,也可以自己配置。
-
aof 策略
AOF(Append Only File),Redis 默认不开启。它的出现是为了弥补RDB的不足(数据的不一致性),所以它采用日志的形式来记录每个写操作,并追加到文件中。Redis 重启会根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作。
1.1.1.1 AOF原理
Redis以日志的形式来记录每个写操作,将Redis执行过的所有写指令记录下来(读操作不记录),
只许追加文件但不可以改写文件,redis启动之初会读取该文件重新构建数据,换言之,redis重启的话就根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作。
1.1.1.2 AOF保存的文件
AOF保存的文件是appendonly.aof文件 ,位置保存
1、appendonly:配置是否开启AOF,yes表示开启,no表示关闭。默认是no。
2、appendfilename:AOF保存文件名
3、appendfsync:AOF异步持久化策略
always:同步持久化,每次发生数据变化会立刻写入到磁盘中。性能较差但数据完整性比较好(慢,安全)
everysec:出厂默认推荐,每秒异步记录一次(默认值)
no:不即时同步,由操作系统决定何时同步。4、no-appendfsync-on-rewrite:重写时是否可以运用appendsync,默认no,可以保证数据的安全性。
5、auto-aof-rewrite-percentage:设置重写的基准百分比
6、auto-aof-rewrite-min-size:设置重写的基准值
存
1、appendonly:配置是否开启AOF,yes表示开启,no表示关闭。默认是no。
2、appendfilename:AOF保存文件名
3、appendfsync:AOF异步持久化策略
always:同步持久化,每次发生数据变化会立刻写入到磁盘中。性能较差但数据完整性比较好(慢,安全)
everysec:出厂默认推荐,每秒异步记录一次(默认值)
no:不即时同步,由操作系统决定何时同步。
4、no-appendfsync-on-rewrite:重写时是否可以运用appendsync,默认no,可以保证数据的安全性。
5、auto-aof-rewrite-percentage:设置重写的基准百分比
6、auto-aof-rewrite-min-size:设置重写的基准值