redis知识点-----------持续更新中
二、数据类型
string是一个Map以key,value形式存储对应数据信息
hash:是以Map<string,Map<string,string>> 类型,string为key,里面的Map的key为field,value是正常value
list:类似于java的集合
set:
zet:有序的集合
三、redis事物
multi:开启事务,之后的所有操作会放到执行队列。
exec:提交事务
四、redis的持久化
RDB(默认开启)会根据持久化设置生成二进制文件,每次redis启动的时候都会加载dump.rdb文件中的数据到内存中,AOF(需要手动设置)会将接收到的对数据的修改命令记录到磁盘文本文件中(可修改),redis重启后,通过执行AOF文件中所有命令来恢复数据。
注意:redis重启会先读取AOF文件,在读去RDB文件
修改redis.config中配置文件
RDB的持久化:这是触发条件,900秒内,1个key值被修改。(两者必须同时满足才能够)
AOF的持久化:默认不开启
1、需要设置appendonly为yes,下面的是存储的文件名,dir为指定文件存放目录
2、appendfsync:配置向aof文件写命令数据的策略
no:不主动进行同步操作,交友操作系统来做(每30秒一次),较快,但不安全
always:每次写入都会执行同步,慢一些,但安全
everysec:每秒执行一次同步,较平衡,速度和安全之间,这是默认选项
3、auto-aof-rewrite-min-size:允许重写的最小AOF文件大小,默认64M,当aof文件大于64M是,会开始整理aof文件,去掉无用操作命令(当数据量大时,难免会存在重复的命令,此时其实只需要最终的一条修改命令即可。)
RDB:存储的是数据快照文件,回复数据很方便,很快,
1)、有丢失数据的肯能性,会丢失最后一次快照以后更改的数据。
2)、由于经常操作磁盘,RDB会分出一个子进程,可能会影响redis暂停服务。
AOF:对数据非常严格要求,则舒勇AOF进行数据恢复,最多只会丢失1秒内的数据
五、主从复制
避免单点故障,需要将复制多份部署在多台不同的服务器上。
主(Master):负责修改操作,从(slave):负责读操作。
至少要有一个主和从,从是主的一个备份,当主宕机后,从会接替主进行修改操作。
redis-server是开启一个线程进行存储服务,可以多开几个模拟多个redis服务器
复制三份redis.config配置文件,并修改不同config的配置文件
info replication:查看当前redis服务器端的关系信息
从服务器不能写入,写入的话会报readonly操作
容灾策略:当主服务器宕机后。
slaveof no one: 将当前redis服务器提升为master
slaveof ip port:当前从服务器重新挂载到主服务器
服务器修好后,重新启动之后:slaveof ip port:当前服务器挂载到新的主服务器
六、哨兵模式
redis官方提供的高可用方案,用来监控多个redis服务实例的运行情况,哨兵不能存在一个服务器上,且数量为奇数(后续依据心跳机制进行投票来判断是否宕机)
主要任务:
监控:Sentinel不断的检查主服务器和从服务器是否按照预期正常工作
提醒:当被监控的redis出现问题,Sentinel会通知管理员或其他应用程序
自动故障转移:监控的主redis不能正常工作,Sentinel会开始进行故障迁移操作。会模拟上面的容灾策略进行
心跳机制:redis服务器和哨兵之间会进行反应交互,哨兵会主动 向redis发动请求,根据相应结果主观判断redis是否正常
sentinel.conf是哨兵配置文件,默认监控的redis主服务器