成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

詳解 Redis 內存淘汰機制和持久化機制原理 剖析Redis必備!

存儲 存儲軟件 Redis
假設生產環(huán)境里面MySQL 數(shù)據(jù)庫有 1000w 數(shù)據(jù),Redis 中只存 10w 的數(shù)據(jù),如何保證 Redis 中的數(shù)據(jù)都是熱點數(shù)據(jù)?

[[282057]]

 概述

前段時間有朋友問了關于Redis 內存淘汰機制和持久化機制原理,今天抽空整理了下分享給大家,內容如下:

  • Redis 內存淘汰機制
  • Redis 持久化機制(怎么保證 Redis 掛掉之后再重啟數(shù)據(jù)可以進行恢復)

 

Redis 內存淘汰機制

假設生產環(huán)境里面MySQL 數(shù)據(jù)庫有 1000w 數(shù)據(jù),Redis 中只存 10w 的數(shù)據(jù),如何保證 Redis 中的數(shù)據(jù)都是熱點數(shù)據(jù)?

Redis 提供 6 種數(shù)據(jù)淘汰策略:

  • volatile-lru:從已設置過期時間的數(shù)據(jù)集(server.db[i].expires)中挑選最近最少使用的數(shù)據(jù)淘汰。
  • volatile-ttl:從已設置過期時間的數(shù)據(jù)集(server.db[i].expires)中挑選將要過期的數(shù)據(jù)淘汰。
  • volatile-random:從已設置過期時間的數(shù)據(jù)集(server.db[i].expires)中任意選擇數(shù)據(jù)淘汰。
  • allkeys-lru:當內存不足以容納新寫入數(shù)據(jù)時,在鍵空間中,移除最近最少使用的key(這個是最常用的)。
  • allkeys-random:從數(shù)據(jù)集(server.db[i].dict)中任意選擇數(shù)據(jù)淘汰。
  • no-enviction:禁止驅逐數(shù)據(jù),也就是說當內存不足以容納新寫入數(shù)據(jù)時,新寫入操作會報錯。這個應該沒人使用吧!

通過這 6 種數(shù)據(jù)淘汰策略redis來保證Redis 中的數(shù)據(jù)都是熱點數(shù)據(jù)

Redis 持久化機制

很多時候我們總會碰到服務器掛掉或者不小心殺了進程之類的情況,那么怎么保證 Redis 掛掉之后再重啟數(shù)據(jù)可以進行恢復?

實際上我們只需要持久化數(shù)據(jù)也就是將內存中的數(shù)據(jù)寫入到硬盤里面。

大部分原因是為了之后重用數(shù)據(jù)(比如重啟機器、機器故障之后恢復數(shù)據(jù)),或者是為了防止系統(tǒng)故障而將數(shù)據(jù)備份到一個遠程位置。

Redis 不同于 Memcached 的很重要一點就是,Redis 支持持久化,而且支持兩種不同的持久化操作。

Redis 的一種持久化方式叫快照(snapshotting,RDB),另一種方式是只追加文件(append-only file,AOF)。

下面講下這兩種持久化方式。

快照(snapshotting)持久化(RDB)

Redis 可以通過創(chuàng)建快照來獲得存儲在內存里面的數(shù)據(jù)在某個時間點上的副本。

Redis 創(chuàng)建快照之后,可以對快照進行備份,可以將快照復制到其他服務器從而創(chuàng)建具有相同數(shù)據(jù)的服務器副本(Redis 主從結構,主要用來提高 Redis 性能),還可以將快照留在原地以便重啟服務器的時候使用。

快照持久化是 Redis 默認采用的持久化方式,在 redis.conf 配置文件中默認有此下配置:

save 900 1 #在900秒(15分鐘)之后,如果至少有1個key發(fā)生變化,Redis就會自動觸發(fā)BGSAVE命令創(chuàng)建快照。 save 300 10 #在300秒(5分鐘)之后,如果至少有10個key發(fā)生變化,Redis就會自動觸發(fā)BGSAVE命令創(chuàng)建快照。 save 60 10000 #在60秒(1分鐘)之后,如果至少有10000個key發(fā)生變化,Redis就會自動觸發(fā)BGSAVE命令創(chuàng)建快照。

AOF(append-only file)持久化

與快照持久化相比,AOF 持久化的實時性更好,因此已成為主流的持久化方案。

默認情況下 Redis 沒有開啟 AOF(append only file)方式的持久化,可以通過 appendonly 參數(shù)開啟:

  1. appendonly yes 

開啟 AOF 持久化后每執(zhí)行一條會更改 Redis 中的數(shù)據(jù)的命令,Redis 就會將該命令寫入硬盤中的 AOF 文件。

AOF 文件的保存位置和 RDB 文件的位置相同,都是通過 dir 參數(shù)設置的,默認的文件名是 appendonly.aof。

在 Redis 的配置文件中存在三種不同的 AOF 持久化方式,它們分別是:

  1. appendfsync always #每次有數(shù)據(jù)修改發(fā)生時都會寫入AOF文件,這樣會嚴重降低Redis的速度  
  2. appendfsync everysec #每秒鐘同步一次,顯示地將多個寫命令同步到硬盤  
  3. appendfsync no #讓操作系統(tǒng)決定何時進行同步  

為了兼顧數(shù)據(jù)和寫入性能,用戶可以考慮 appendfsync everysec 選項 ,讓 Redis 每秒同步一次 AOF 文件,Redis 性能幾乎沒受到任何影響。

而且這樣即使出現(xiàn)系統(tǒng)崩潰,用戶最多只會丟失一秒之內產生的數(shù)據(jù)。當硬盤忙于執(zhí)行寫入操作的時候,Redis 還會優(yōu)雅的放慢自己的速度以便適應硬盤的最大寫入速度。

Redis 4.0 對于持久化機制的優(yōu)化

Redis 4.0 開始支持 RDB 和 AOF 的混合持久化(默認關閉,可以通過配置項 aof-use-rdb-preamble 開啟)。

如果把混合持久化打開,AOF 重寫的時候就直接把 RDB 的內容寫到 AOF 文件開頭。

這樣做的好處是可以結合 RDB 和 AOF 的優(yōu)點, 快速加載同時避免丟失過多的數(shù)據(jù)。

當然缺點也是有的,AOF 里面的 RDB 部分是壓縮格式不再是 AOF 格式,可讀性較差。

責任編輯:武曉燕 來源: 今日頭條
相關推薦

2019-05-17 08:55:49

RedisRDBAOF

2020-01-06 14:54:31

RDBAOFRedis

2024-09-06 17:49:46

2024-11-11 17:12:22

2020-08-18 19:15:44

Redis內存管理

2024-07-16 08:38:06

2024-10-08 10:13:17

2024-09-12 08:49:53

2025-02-12 00:29:58

2023-10-26 07:13:14

Redis內存淘汰

2021-03-16 08:26:49

RedisRDBAOF

2024-09-30 10:27:22

2025-01-16 14:03:35

Redis

2020-12-29 10:06:35

Redis

2018-04-27 09:03:57

Redis數(shù)據(jù)存儲

2023-09-12 10:49:44

Redis數(shù)據(jù)庫

2020-02-18 16:14:33

RedisRDBAOF

2021-10-04 21:11:18

Redis混合持久化

2025-03-26 11:30:40

2023-05-11 09:12:35

RedisRDB日志
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美亚洲在线视频 | 99精品欧美一区二区蜜桃免费 | 久久成人18免费网站 | 欧美精品一区二区三区在线 | 精品网| 国产欧美日韩精品一区二区三区 | 久久久中文| 免费国产精品久久久久久 | 国产精品一区二区久久精品爱微奶 | 日本在线中文 | 国产精品自拍av | 伦理二区 | 一区二区三区中文字幕 | 国产成人免费视频 | 国产精品久久国产精品 | 在线看无码的免费网站 | 日本免费一区二区三区四区 | 日韩精品在线看 | 欧美性视频在线播放 | 免费一级欧美在线观看视频 | 青青久久 | 久久久久久久香蕉 | 日韩在线中文 | 99pao成人国产永久免费视频 | 超级黄色一级片 | 亚洲视频 欧美视频 | 精品国产鲁一鲁一区二区张丽 | 色综合久久久久 | 性一爱一乱一交一视频 | 美女视频h| 国产精品免费一区二区 | 中文字幕亚洲国产 | 国产精品一区二区日韩 | 草久久久 | 久久久久国产精品午夜一区 | 午夜影院网站 | 欧美在线激情 | 欧美日韩专区 | 日本三级精品 | 91在线免费视频 | 日韩免费视频一区二区 |