redis和数据库如何写入同步? 分散如何达到一致性?
CAP
一致性、可用性和性能
) HA )高可用性,无延迟和波动的高可用性
容忍程度达到就可以了。 不要为了技术而使用技术-否认所学/被节奏/拖延工作。 在合适的时间满足你的需求,开发结束就好了
redis使用场景redis为什么不是关系型的? 缓存数据不完整,无法构建完整的关系。
redis多线程,io可多线程
redis连接较多:连接中使用了nio的多路复用器epoll
value有五种类型,有本地方法。 从计算到数据的移动是IO优化
redis整体模型序列化,操作是原子性的——经常讨论:并口和串口哪个更好
机械k,v
value只能是字符串,但可以用字符串的json保存一切。 操作数据时,需要取出操作并返回(制作全部IO ) )。
redis存储数组,可以根据下标返回一部分内容
线程模型redis的工作器是单线程的
持久化redis :独立小程序
异地备份也称为持久化。
灾后恢复也被称为持久化的一部分。
拍快照方案:
基于RDB的持久化
图像
备份全部备份
(根据时间点的不同,缺点:时间间隔越大,数据量可能会丢失越多。 体积接近,恢复速度面向I/O读取速度,速度快)
日志记录 AOF
日志的时间点是实时的,也有可能丢失数据,但很少会丢失
sync OS :页缓存
丢失的几个维度: 5秒可用内存的10%; 的30%直接屏蔽pagecache; 这取决于操作系统级别的内核配置
典型的DB使用美丽的葡萄柚: Direct IO、跨越内核的pagecache
redis默认打开rdb,如果手动打开AOF (appendonlyfile仅用于添加),则手动打开aof
如果redis运行了10年没有关机,AOF可能会变大,变成1T,但是因为包含了很多失效的日志,所以恢复时不需要重做整个过程
永久化解决什么问题? 数据丢失
为什么要用redis? 为了快点。 如果仅用于缓存,则不建议启用“持久化”。 由于I/o消耗性能,没有用于内存的优势
在分布式环境下,强一致性容易导致群集不可用性-CAP理论:强一致性、可用性、分区可接受性三者不能同时满足
金融类一般不用redis
互联网可以容忍一定的不一致,使用redis
paxos :投票选举,过半机制