Чтобы иметь возможность повторно использоватьRedis
данных или для предотвращения сбоя системы нам необходимоRedis
Данные записываются в дисковое пространство, то есть являются постоянными.Redis
Предоставляет два разных метода сохраняемости для хранения данных на диске, один из которых называется моментальным снимком.RDB
, другой называемый файлом только для добавленияAOF
RDB
что
Записывает моментальный снимок набора данных в памяти на диск с заданным интервалом (Snapshot
), он считывает файл моментального снимка непосредственно в память при восстановлении.
Redis
будет создан отдельно (fork
) Дочерний процесс для сохранения сначала запишет данные во временный файл.После завершения процесса сохранения временный файл будет использоваться для замены последнего постоянного файла. В течение всего процесса основной процесс не выполняет никаких операций ввода-вывода, что обеспечивает чрезвычайно высокую производительность.Если требуется масштабное восстановление данных и целостность восстановления данных не очень чувствительна, тоRDB
путь, чемAOF
куда эффективнее.RDB
Недостатком является то, что данные могут быть потеряны после последнего сохранения.
Fork
Fork
Роль заключается в копировании процесса, который совпадает с текущим процессом. Значения всех данных (переменных, переменных среды, программных счетчиков и т. д.) нового процесса такие же, как у исходного процесса, но это совершенно новый процесс и используется как дочерний процесс исходного процесс.Rdb
сохраненоdump.rdb
документ.
Расположение конфигурации
Redis
Конфигурация в основном размещена вredis.conf
, чего можно добиться, изменив файл конфигурацииRedis
Многие функции, такие как репликация, постоянство, кластеризация и т. д.
Как запустить моментальный снимок RDB
- Конфигурация моментального снимка по умолчанию в файле конфигурации
- Заказ
save
илиbgsave
Save:save时只管保存,其它不管,全部阻塞。
BGSAVE:Redis会在后台异步进行快照操作,快照同时还可以响应客户端请求。
可以通过lastsave命令获取最后一次成功执行快照的时间。
- воплощать в жизнь
flushall
команда, также производитdump.rdb
документ
Как восстановить
сделает резервную копию файловdump.rdb
перейти кredis
Установите каталог и запустите службу
Преимущество
Подходит для крупномасштабного восстановления данных
Низкие требования к целостности и непротиворечивости данных
недостаток
Делайте резервную копию через определенные промежутки времени, поэтому, еслиredis
Несчастный случайdown
Если его удалить, все изменения с момента последнего снимка будут потеряны.
как остановить
Динамически все способы остановить правила сохранения RDB:redis-cli config set save " "
AOF(Append Only File)
что
записывает каждую операцию записи в виде лога, которыйRedis
Все выполненные команды записи записываются (операции чтения не записываются), только файлы могут быть добавлены, но не перезаписаны,redis
В начале запуска файл будет прочитан для восстановления данных, другими словами,redis
При перезапуске команда записи будет выполняться от начала к концу в соответствии с содержимым файла журнала для завершения восстановления данных.AOF сохраняет файл appendonly.aof
Загрузка/восстановление/восстановление AOF
- Обычное восстановление:
- Запуск: Настройки
yes
; изменить значение по умолчаниюappendonly no
, изменился наyes
- будут данные
aof
Скопируйте файл и сохраните его в соответствующем каталоге (config get dir
) - восстановление: перезагрузка
redis
затем перезагрузить
- Запуск: Настройки
- Аномальное восстановление:
- Запуск: Настройки
yes
; изменить значение по умолчаниюappendonly no
, изменился наyes
- Резервная копия повреждена
AOF
документ - ремонт:
Redis-check-aof --fix
сделать ремонт - восстановление: перезагрузка
redis
затем перезагрузить
- Запуск: Настройки
Rewrite
- Что:
AOF采用文件追加方式,文件会越来越大为避免出现此种情况,新增了重写机制,当AOF文件的大小超过所设定的阈值时,
Redis就会启动AOF文件的内容压缩,只保留可以恢复数据的最小指令集.可以使用命令bgrewriteaof
- Принцип перезаписи:
AOF文件持续增长而过大时,会fork出一条新进程来将文件重写(也是先写临时文件最后再rename),遍历新进程的内存中数据,
每条记录有一条的set语句。重写aof文件的操作,并没有读取旧的aof文件,
而是将整个内存中的数据库内容用命令的方式重写了一个新的aof文件,这点和快照有点类似。
- Спусковой механизм:
Redis会记录上次重写时的AOF大小,默认配置是当AOF文件大小是上次rewrite后大小的一倍且文件大于64M时触发。
Преимущество
- Синхронизация на модификацию:
appendfsync always
Синхронное сохранение, каждый раз, когда происходит изменение данных, оно будет немедленно записано на диск с низкой производительностью, но лучшей целостностью данных. - Синхронизация в секунду:
appendfsync everysec
Асинхронная работа, запись каждую секунду, если она выйдет из строя в течение одной секунды, произойдет потеря данных - не синхронизировано:
appendfsync no
никогда не синхронизировать
недостаток
- данные из того же набора данных
aof
файл намного больше, чемrdb
файлов, восстановление происходит медленнее, чемrdb
-
aof
работать эффективнее, чемrdb
, эффективность стратегии синхронизации в секунду лучше, а асинхронная эффективность иrdb
такой же
Резюме (какое?)
RDB
Persistence может хранить моментальные снимки ваших данных через определенные промежутки времени.
AOF
Метод сохраняемости записывает каждую операцию записи на сервер, и при перезапуске сервера эти команды выполняются повторно для восстановления исходных данных.AOF
команда сredis
Протокол append сохраняет каждую операцию записи в конец файла.Redis
все еще правAOF
Файл перезаписывается в фоновом режиме, чтобыAOF
Размер файла не должен быть слишком большим.
Только кэширование: если вы хотите, чтобы ваши данные существовали только при работающем сервере, вы также не можете использовать какой-либо метод сохранения.
Включить два метода сохраняемости одновременно
В этом случае, когдаredis
Он будет загружен первым при перезапускеAOF
файл для восстановления исходных данных, как в обычном случаеAOF
Файл сохраняет набор данных, чемRDB
Набор данных, сохраненный в файле, должен быть полным.
Данные RDB не в режиме реального времени, и когда оба используются одновременно, перезапуск сервера найдет толькоAOF
документ. тогда ты просто используешьAOF
Шерстяная ткань? Автор не советует, потому чтоRDB
Больше подходит для резервного копирования баз данных (AOF
плохие бэкапы в постоянных изменениях), быстрых перезапусков, и не будетAOF
потенциальноbug
, сохраните его в качестве меры предосторожности.
Рекомендации по производительности
так какRDB
Файл используется только для целей резервного копирования, рекомендуется использовать толькоSlave
настойчивыйRD
B, и его резервную копию нужно создавать каждые 15 минут, сохраняйте толькоsave 900 1
это правило.
еслиEnalbe AOF
, преимущество в том, что в худшем случае будет потеряно не более двух секунд данных, а скрипт запуска проще и всегоload
мой собственныйAOF
файл в порядке. Стоимость одного состоит в том, чтобы принести прочныйIO
, дваAOFrewrite
последняя воляrewrite
Блокировка, вызванная записью новых данных, сгенерированных в процессе, в новые файлы, практически неизбежна. Пока позволяет жесткий диск, его следует свернутьAOFrewrite
Частота,AOF
Переопределенный базовый размер по умолчанию64M
слишком мал, можно установить5G
выше. Когда размер по умолчанию превышает 100 % от исходного размера, его можно переписать на соответствующее значение.
если неEnable AOF
, только поMaster-Slave Replication
Также возможна высокая доступность. сэкономить много денегIO
также уменьшеноrewrite
колебания системы. Цена еслиMaster/Slave
В то же время он потеряет более десяти минут данных, и сценарий запуска также должен сравнить дваMaster/Slave
серединаRDB
файл, загрузите более новый, Sina Weibo выбрала эту структуру.