Redis使用场景、Redis线程模型、Redis持久化 - 公开课笔记
redis和數據庫怎么寫同步?
分布式如何達到一致性?
CAP
一致性、可用性、性能
HA:高可用,不存在沒有任何時延、沒有任何波動的高可用
容忍度只要達標,就可以。不要為了技術而技術->你會否定你學的東西/你會被帶節奏/你會拖延工作。合適的時間滿足你的需求,開發搞定就可以了
redis使用場景
redis為什么不是關系型?因為緩存數據不完整,無法構建完整關系。
redis多線程,io可以多線程
redis連接很多:連接使用的是nio的多路復用器epoll
value是五種類型的,有本地方法:計算向數據移動,是一種IO優化
redis整體模型是串行化,操作是原子的->常探討:并行和串行誰更優
memcached
k,v
value只能是string,但是可以用string的json存儲一切。操作數據時,需要拿出來操作,再放回去(做全量IO)
而redis可以存儲數組,根據下標返回部分內容
線程模型
redis的worker是單線程
持久化
redis:單機小程序
異地備份,也稱作持久化。
容災備份也稱作持久化的一部分。
拍快照方案:
基于RDB的持久化
image
bak全量備份
(和時間點有關系,缺點:時點間距大,可能會丟失數據量多。體積相近,恢復速度取向于I/O讀取速度,較快)
日志記錄 AOF
日志的時點趨向于實時的,也可能會丟數據,但是丟的較少
sync os: pagecache
丟失的幾個維度:5秒;可用內存的10%;內存的30%直接阻塞pagecache;這取決于操作系統層級的內核配置
一般DB使用DIO:Direct IO,跨過內核的pagecache
redis默認開啟rdb,如果手工開啟了AOF(Append only file只追加),則手工開啟AOF
如果redis運行10年沒關機,AOF會很大,可能會1T,但是里面有很多失效的日志,恢復的時候沒有必要將整個過程重新全走一遍
持久化解決什么問題?數據丟失
為什么用redis?為了快。如果只是用來做緩存,不建議開啟持久化,因為IO消耗性能,沒有利用到內存的優勢
分布式環境下,強一致性容易造成集群的不可用性->CAP理論:強一致性、可用性、分區容忍性,三者不可能同時滿足
金融類一般不使用redis
互聯網可以容忍一定的不一致,可以使用redis
paxos:投票選舉、過半機制
總結
以上是生活随笔為你收集整理的Redis使用场景、Redis线程模型、Redis持久化 - 公开课笔记的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 怎么使用缓存、缓存穿透、热点数据处理、缓
- 下一篇: 关于MySQL使用Float存储时的精度