Redis总结
Posted 东瓜
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Redis总结相关的知识,希望对你有一定的参考价值。
redis分布式锁
- 用的redis的set nx ex expire命令
- 获取不到锁睡眠50毫秒,直至超时
- redisson红锁可以解决业务执行超时问题,原理是有异步线程在快要超时时续期
- 分布式锁主要用于防止缓存穿透,所以没改用红锁
- 交易等强一致性要求场景用红锁合适
redis的字符串底层结构
- SDS动态字符串结构
- 具备空间预分配和惰性空间回收特性,可减少内存分配和回收产生的性能消耗
key的过期策略
内存淘汰策略
aof与rdb的区别
rdb:按照一定的时间将内存的数据以快照的形式保存到硬盘
持久化时机:
快照持久化是Redis默认采用的持久化方式,在redis.conf配置文件中默认有此下配置:
save 900 1 #在900秒(15分钟)之后,如果至少有1个key发生变化,Redis就会自动触发BGSAVE命令创建快照。
save 300 10 #在300秒(5分钟)之后,如果至少有10个key发生变化,Redis就会自动触发BGSAVE命令创建快照。
save 60 10000 #在60秒(1分钟)之后,如果至少有10000个key发生变化,Redis就会自动触发BGSAVE命令创建快照。
优点:
1.rdb持久化文件很紧凑,占用空间更小。
2.rdb保存的是基于时间点的数据快照,更适合数据的备份和容灾
3.利用rdb文件进行数据恢复时,速度更快
缺点:
1.会造成部分数据的丢失
2.当数据集非常大时,fork操作会占用很多系统资源,造成主服务进程假死
aof:将所有写命令记录到日志文件中
持久化时机:
在Redis的配置文件中存在三种不同的 AOF 持久化方式,它们分别是:
appendfsync always #每次有数据修改发生时都会写入AOF文件,这样会严重降低Redis的速度
appendfsync everysec #每秒钟同步一次,显示地将多个写命令同步到硬盘
appendfsync no #让操作系统决定何时进行同步
优点:
1.丢失数据少
2.aof重写机制确保aof文件不会过大
缺点:
1.文件大
主从复制
Redis主从复制分为以下三种方式:
一、当master服务器与slave服务器正常连接时,master服务器会发送数据命令流给slave服务器,将自身数据的改变复制到slave服务器。
二、当因为各种原因master服务器与slave服务器断开后,slave服务器在重新连上master服务器时会尝试重新获取断开后未同步的数据即部分同步,或者称为部分复制。
三、如果无法部分同步(比如初次同步),则会请求进行全量同步,这时master服务器会将自己的rdb文件发送给slave服务器进行数据同步,并记录同步期间的其他写入,再发送给slave服务器,以达到完全同步的目的,这种方式称为全量复制。
以上是关于Redis总结的主要内容,如果未能解决你的问题,请参考以下文章