自制思维导图
Redis
单进程
redis默认有16个库
linux默认支持redisTab键补全
统一密码管理,16个库都是同样的密码
redis索引都是从0开始的
默认端口6379
开启Redis
Redis提示,起效就是1,不起效就是0.
Redis的五大数据类型
String (字符串)
Hash (哈希,类似java里面的Map)
List (列表)
Set (集合)
Zset (sorted set:有序集合)
Redis配置文件
最大内存的缓存清除策略
Redis持久化
备份
save,bgsave命令可以手动备份,产生dump.rdb文件。
flushall命令也会产生dump.rdb文件,但里面是空的,无意义。
恢复
RDB(Redis DataBase)
是什么?
隔断时间自动备份,比如5分钟备份一次,好处就是最后取的时候只需要取最后的那一次。坏处是可能在最后一次备份时出问题了,那么最后一次的数据可能丢失。
所有的数据以及操作都会隔段时间备份。
优势:
1.适合大规模的数 据恢复
2.对数据完整性和一致性要求不高
劣势:
1.在一定隔离时间做备份,所以如果redis出问题了。那么就会丢失最后一次快照后的所有修改
2.Fork的时候,内存中的数据都被克隆了一份,需要考虑内存。
配置文件:
配置:save 秒钟 操作次数
AOF(Append Only FIle)
默认关闭
appendonly.aof和dump.rdb可以在同一个目录下存在,如果在的话,redis会先加载appendonly.aof
出错了可以用redis-check-aof来修复
是什么?
以日志的形式记录每个写操作
优势:
灵活选择追写策略
每秒同步:always
每修改同步:everysec
不同步:no
劣势:
相同数据集的数据aof要远大于rdb文件,恢复速度慢于rdb。
aof运行效率要慢于rdb,每秒同步策略效率较好,不同步效率和rdb相同
追写策略
Rewrite
触发机制
实际开发中会很大,例如3g以上。
官网建议:
Redis事务
是什么?
一次性批处理Redis命令
能做什么?
能在一个队列中,一次性,顺序性,排他性的执行一系列命令。
Redis事务特性
一致性:要么全部成功,要么全部失败。
Redis对事务是部分支持,不是强一致性。
悲观锁:
很悲观,觉得肯定会被改,所以把整个表锁了。
乐观锁:
很乐观,但是又不能完全开放,所以在表里加个version字段,假设一开始version为1,张三李四同时来,都获取了version的值1,然后李四成功改完数据,version变为2.张三要改的时候,由于version已经为2,所以报错,重新获得version的值2,再重新来改。
乐观锁更常用
Redis主从复制,读写分离
复制原理
作用:读写分离,容灾恢复。
info replication
查看信息
slaveof 主库IP 主库端口//变成对应主库的从库
一主二仆
特性:
1.从库连接主库后会得到主库中的值。并且会和主库同步。
2.只有主机才可以写,从机只能读。主机写后,从机写会报错。
3.主机SHUTDOWN关闭后,从库还是从库,状态变为down,原地待命。不能咸鱼翻身。
4.主机重启后,从机也会开启。并且保持和从库的连接。
5.从机重启后,身份变为master,与之前的主机断开连接。
薪火相传
特性:
1.上一个Master的Salve也可以成为下一个Salve的Master,此时该Salve的身份显示为savle,这样做的目的是减轻了Master的压力
2.当头Maser写入数据后,中间Salve和末Salve都可以读取。
反客为主:
主机挂了之后,在剩下的从机中一个里输入命令:
SLAVEOF no one,它将升级成主机。
哨兵模式
意思就是监控,反客为主的自动版。
开启哨兵模式步骤:
1.新建sentinel.conf配置文件,里面配置好要关联的主机
2.开启哨兵模式
特性:
1.主机挂了后,剩余的从机将会选票,选出一个从机升级成主机,然后剩余的从机关联这个主机。
2.之前挂了的主机回来后,它将变为从机,然后连接到之前升级后的主机。
3.一组sentinel哨兵能同时监控多个Master