Redis持久化的方式选择与原理

通常Redis将数据存储在内存中或虚拟内存中,但它提供了数据持久化功能可以把内存中的数据持久化到磁盘。持久化有什么好处呢?比如可以保证断电后数据不会丢失,升级服务器也会变得更加方便。

1.RDB 持久化机制 :是对 redis 数据执行周期性的持久化。

这种方式就是将内存中数据以快照的方式写入到二进制文件中,默认的文件名为 dump.rdb。客户端也可以使用save或者bgsave命令通知redis做一次快照持久化。save操作是在主线程中保存快照的,由于redis是用一个主线程来处理所有客户端的请求,这种方式会阻塞所有客户端请求。所以不推荐使用。另一点需要注意的是,每次快照持久化都是将内存数据完整写入到磁盘一次,并不是增量的只同步增量数据。如果数据量大的话,写操作会比较多,必然会引起大量的磁盘IO操作,可能会严重影响性能。


2.AOF持久化机制 :AOF 机制对每条写入命令作为日志,以 append-only 的模式写入一个日志文件中,在 redis 重启的时候,可以通过回放 AOF 日志中的写入指令来重新构建整个数据集。当然由于操作系统会在内核中缓存write做的修改,所以可能不是立即写到磁盘上。这样的持久化还是有可能会丢失部分修改。不过我们可以通过配置文件告诉 redis我们想要通过fsync函数强制操作系统写入到磁盘的时机。

appendonly yes //启用日志追加持久化方式

(1)appendfsync always //收到写命令就立即强制写入磁盘。最慢的,但是保证完全持久化,不推荐使用。

(2)appendfsync everysec //每秒钟强制写入磁盘一次,在性能和持久化方面做了很好的折中,推荐使用。

(3)appendfsync no //完全依赖操作系统,性能最好,持久化没保证。

通过 RDB 或 AOF,都可以将 redis 内存中的数据持久化到磁盘上面来,然后可以将这些数据备份到别的地方去。

1.RDB方式

优点:

缺点:

2.AOF方式

优点:

缺点:

不要仅仅使用 RDB,因为那样会导致你丢失很多数据;也不要仅仅使用 AOF,因为那样有两个问题:第一,你通过 AOF 做冷备,没有 RDB 做冷备来的恢复速度更快;第二,RDB 每次简单粗暴生成数据快照,更加健壮,可以避免 AOF 这种复杂的备份和恢复机制的 bug;redis 支持同时开启开启两种持久化方式,我们可以综合使用 AOF 和 RDB 两种持久化机制,用 AOF 来保证数据不丢失,作为数据恢复的第一选择; 用 RDB 来做不同程度的冷备,在 AOF 文件都丢失或损坏不可用的时候,还可以使用 RDB 来进行快速的数据恢复。

出处: https://www.cnblogs.com/bigbaby/p/15879126.html



  • Redis鎸佷箙鍖栫殑鏂瑰紡閫夋嫨涓鍘熺悊
    绛旓細1.RDB 鎸佷箙鍖栨満鍒 锛氭槸瀵 redis 鏁版嵁鎵ц鍛ㄦ湡鎬х殑鎸佷箙鍖銆傝繖绉嶆柟寮忓氨鏄皢鍐呭瓨涓暟鎹互蹇収鐨勬柟寮忓啓鍏ュ埌浜岃繘鍒舵枃浠朵腑锛岄粯璁ょ殑鏂囦欢鍚嶄负 dump.rdb銆傚鎴风涔熷彲浠ヤ娇鐢╯ave鎴栬卋gsave鍛戒护閫氱煡redis鍋氫竴娆″揩鐓ф寔涔呭寲銆俿ave鎿嶄綔鏄湪涓荤嚎绋嬩腑淇濆瓨蹇収鐨勶紝鐢变簬redis鏄敤涓涓富绾跨▼鏉ュ鐞嗘墍鏈夊鎴风鐨勮姹傦紝杩欑...
  • redis 鏁版嵁鎸佷箙鍖栫殑鍑犵鏂瑰紡
    绛旓細鍦ㄩ夋嫨RDB杩樻槸AOF鏃讹紝鍏抽敭鍦ㄤ簬鏉冭 銆濡傛灉浣犺拷姹傛洿楂樼殑鏁版嵁涓鑷存э紝鍗充娇鐗虹壊涓浜涙ц兘锛孉OF鏄洿濂界殑閫夋嫨銆傝屽浜庢ц兘鏁忔劅鐨勭幆澧冿紝RDB鍙兘鏇村悎閫傦紝鍥犱负瀹冨湪鍐欐搷浣滈绻佹椂锛岃兘鎻愪緵鏇村揩閫熺殑鍝嶅簲銆傜粨璁 Redis鐨勬暟鎹寔涔呭寲绛栫暐锛屾棤璁烘槸RDB杩樻槸AOF锛岄兘鏈夊叾鐙壒鐨勫簲鐢ㄥ満鏅拰鑰冮噺鍥犵礌銆傜悊瑙e畠浠殑浼樼己鐐癸紝缁撳悎涓氬姟闇姹...
  • Redis鎸佷箙鍖栫殑鏂瑰紡鏈夊摢浜?浼樼己鐐瑰垎鍒槸浠涔?
    绛旓細姣旇緝锛 1銆乤of鏂囦欢姣攔db鏇存柊棰戠巼楂橈紝浼樺厛浣跨敤aof杩樺師鏁版嵁銆 2銆乤of姣攔db鏇村畨鍏ㄤ篃鏇村ぇ 3銆乺db鎬ц兘姣攁of濂 4銆佸鏋滀袱涓兘閰嶄簡浼樺厛鍔犺浇AOF
  • redis鎸佷箙鍖栫殑鍑犵鏂瑰紡浠嬬粛
    绛旓細redis鎻愪緵涓ょ鏂瑰紡杩涜鎸佷箙鍖栵紝涓绉嶆槸RDB鎸佷箙鍖栵紙鍘熺悊鏄皢Reids鍦ㄥ唴瀛樹腑鐨勬暟鎹簱璁板綍瀹氭椂dump鍒扮鐩樹笂鐨凴DB鎸佷箙鍖栵級锛屽彟澶栦竴绉嶆槸AOF锛坅ppend only file锛夋寔涔呭寲锛堝師鐞嗘槸灏哛eids鐨勬搷浣滄棩蹇椾互杩藉姞鐨勬柟寮忓啓鍏ユ枃浠讹級銆傞偅涔堣繖涓ょ鎸佷箙鍖栨柟寮忔湁浠涔堝尯鍒憿锛屾敼濡備綍閫夋嫨鍛紵缃戜笂鐪嬩簡澶у鏁伴兘鏄粙缁嶈繖涓ょ鏂瑰紡鎬庝箞閰...
  • redis鏁版嵁鎸佷箙鍖濡備綍瀹炵幇
    绛旓細Redis瀹炵幇鏁版嵁鎸佷箙鍖栫殑涓ょ瀹炵幇鏂瑰紡锛RDB锛氭寚瀹氱殑鏃堕棿闂撮殧鍐呬繚瀛樻暟鎹揩鐓OF锛氬厛鎶婂懡浠よ拷鍔犲埌鎿嶄綔鏃ュ織鐨勫熬閮紝淇濆瓨鎵鏈夌殑鍘嗗彶鎿嶄綔涓銆丷DB瀹炵幇Redis鏁版嵁鎸佷箙鍖锛堥粯璁ゆ柟寮忥級1銆佺紪杈 redis.conf娉細浣跨敤whereis redis鍛戒护鏌ョ湅redis瀹夎鍦ㄥ摢涓綅缃紝鐒跺悗杩涘叆redis瀹夎鐩綍鐨別tc鐩綍涓嬶紝缂栬緫redis.conf銆2銆侀粯璁ゅ浠界殑...
  • redis浣跨敤鍝鎸佷箙鍖绛栫暐濂
    绛旓細Redis 鎻愪緵浜嗗绉嶄笉鍚岀骇鍒殑鎸佷箙鍖栨柟寮锛歊DB 鎸佷箙鍖栧彲浠ュ湪鎸囧畾鐨勬椂闂撮棿闅斿唴鐢熸垚鏁版嵁闆嗙殑鏃堕棿鐐瑰揩鐓(point-in-time snapshot)銆侫OF 鎸佷箙鍖栬褰曟湇鍔″櫒鎵ц鐨勬墍鏈夊啓鎿嶄綔鍛戒护锛屽苟鍦ㄦ湇鍔″櫒鍚姩鏃讹紝閫氳繃閲嶆柊鎵ц杩欎簺鍛戒护鏉ヨ繕鍘熸暟鎹泦銆 AOF 鏂囦欢涓殑鍛戒护鍏ㄩ儴浠 Redis 鍗忚鐨勬牸寮忔潵淇濆瓨锛屾柊鍛戒护浼氳杩藉姞鍒版枃浠...
  • 闈㈣瘯涓棶鍒Redis鎸佷箙鍖栫殑鍘熺悊,鏈瘒鍦ㄥ仛璇︾粏瑙g瓟
    绛旓細Redis鏈変袱绉嶆寔涔呭寲鐨勬柟寮忥紝涓绉嶆槸RDB锛屽彟澶栫鏄疉OF銆俁DB鏄皢Redis鍐呭瓨涓暟鎹殑蹇収瀛樺偍鍦ㄧ鐩樺唴锛屾槸Redis鐨勯粯璁ゆ寔涔呭寲鏂规銆RDB鎸佷箙鍖榛樿鏈変笁绉嶇瓥鐣 鍙湪redis.conf涓厤缃紝浼氫互涓娈垫椂闂村唴杈惧埌鎸囧畾淇敼鐨勬鏁颁负瑙勫垯鏉ヨЕ鍙戝揩鐓ф搷浣滐紝蹇収鏂囦欢鍚嶄负dump.rdb銆傛瘡褰揜edis鏈嶅姟閲嶅惎鐨勬椂鍊欓兘浼氫粠璇ユ枃浠朵腑鎶婃暟鎹姞杞...
  • Redis鎸佷箙鍖栫殑鍑犵鏂瑰紡鈥斺擱DB娣卞叆瑙f瀽
    绛旓細鐐瑰嚮涓婃柟鈥淛ava涓枃绀剧兢鈥,閫夋嫨鈥滆涓烘槦鏍団濈粓韬涔犺,浠ョ紪绋嬩负涔!Redis 鐨勮鍐欓兘鏄湪鍐呭瓨涓,鎵浠ュ畠鐨勬ц兘杈冮珮,浣嗗湪鍐呭瓨涓殑鏁版嵁浼氶殢鐫鏈嶅姟鍣ㄧ殑閲嶅惎鑰屼涪澶,涓轰簡淇濊瘉鏁版嵁涓嶄涪澶,鎴戜滑闇瑕佸皢鍐呭瓨涓殑鏁版嵁瀛樺偍鍒扮鐩,浠ヤ究 Redis 閲嶅惎鏃惰兘澶熶粠纾佺洏涓仮澶嶅師鏈夌殑鏁版嵁,鑰屾暣涓繃绋嬪氨鍙仛 Redis 鎸佷箙鍖銆俁edis 鎸佷箙鍖栦篃鏄...
  • redis鐨RDB鍜AOF涓ょ鎸佷箙鍖鏈哄埗浼樼己鐐瑰垎鏋
    绛旓細姣斿熀浜嶳DB姣忔鎸佷箙鍖涓浠藉畬鏁存暟鎹揩鐓ф枃浠鐨勬柟寮锛屾洿鍔犺剢寮变竴浜涳紝瀹规槗鏈塨ug銆備笉杩嘇OF涓轰簡閬垮厤rewrite杩囩▼瀵艰嚧鐨刡ug锛屽洜姝ゆ瘡娆ewrite骞朵笉鏄熀浜庢棫鐨勬寚浠ゆ棩蹇楄繘琛宮erge锛岃屾槸鍩轰簬褰撴椂鍐呭瓨涓殑鏁版嵁杩涜鎸囦护鐨勯噸鏂版瀯寤猴紝杩欐牱鍋ュ.鎬ц兘鏇村ソ涓浜涖傜患鍚堜娇鐢ㄤ袱鑰咃紝鐢ˋOF鏉ヤ繚璇佹暟鎹敖鍙兘鐨勫皯涓㈠け锛屼綔涓虹涓閫夋嫨锛屽叾娆″湪...
  • redis鎸佷箙鍖aof涓巖db鐨勫尯鍒
    绛旓細RDB锛Redis DataBase锛鎸佷箙鍖鏂瑰紡鍒欓氳繃瀹氭椂鐢熸垚鏁版嵁蹇収鐨勬柟寮杩涜鏁版嵁鎸佷箙鍖栵紝瀹冨彧淇濆瓨浜嗘煇涓椂闂寸偣涓婄殑鏁版嵁蹇収锛屼笉鏄疄鏃剁殑鍐欏叆鎿嶄綔锛屽洜姝よ兘澶熻妭鐪佺鐩樼┖闂淬傚湪鏁版嵁鎭㈠鏃讹紝RDB鍙互鐩存帴璇诲彇棰勫厛鐢熸垚鐨勫揩鐓ф枃浠惰繘琛屾仮澶嶏紝鐩稿杈冧负蹇熴傚湪瀹為檯浣跨敤涓紝鍙互鏍规嵁涓嶅悓鐨勯渶姹閫夋嫨鍚堥傜殑鎸佷箙鍖栨柟寮忋傚鏋滈渶瑕侀珮...
  • 扩展阅读:redis 缓存穿透 击穿 雪崩 ... redis持久化机制有哪些 ... spring boot默认日志框架 ... redis持久化的两种方式 ... docker mysql数据持久化 ... redis集群三种方式 ... 教你如何让redis更持久 ... spring mvc ... redis持久化rdb ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网