MISCONF Redis is configured to save RDB snapshots, but it is currently not able to persist on disk.
Redis Bgsave 命令用于在后臺(tái)異步保存當(dāng)前數(shù)據(jù)庫(kù)的數(shù)據(jù)到磁盤(pán)。
BGSAVE 命令執(zhí)行之后立即返回 OK ,然后 Redis fork 出一個(gè)新子進(jìn)程,原來(lái)的 Redis 進(jìn)程(父進(jìn)程)繼續(xù)處理客戶(hù)端請(qǐng)求,而子進(jìn)程則負(fù)責(zé)將數(shù)據(jù)保存到磁盤(pán),然后退出。
語(yǔ)法
redis Bgsave 命令基本語(yǔ)法如下:
redis 127.0.0.1:6379> BGSAVE
原因:
在BGSAVE時(shí),Redis會(huì)fork一個(gè)子進(jìn)程,把數(shù)據(jù)保存到硬盤(pán)上。你可以通過(guò)查看日志來(lái)獲取BGSAVE失敗的原因(Linux系統(tǒng)里Redis日志文件通常是在/var/log/redis/redis-server.log),大多數(shù)時(shí)候BGSAVE失敗的原因是fork進(jìn)程分配不到內(nèi)存。更多時(shí)候,fork進(jìn)程分配不到內(nèi)存是因?yàn)楦僮飨到y(tǒng)的優(yōu)化相沖突,即使操作系統(tǒng)有足夠的內(nèi)存。
解決方法一:
修改redis.conf文件:
vim redis.conf
然后使用快捷匹配模式:/stop-writes-on-bgsave-error定位到stop-writes-on-bgsave-error字符串所在位置,接著把后面的yes設(shè)置為no即可。
解決方法二:
修改sysctl.conf文件,
sudo vim /etc/sysctl.conf
添加配置:
vm.overcommit_memory=1
執(zhí)行命令,使其生效
sudo sysctl -p /etc/sysctl.conf
重啟Redis。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
您可能感興趣的文章:- 查看Redis內(nèi)存信息的命令
- 一次關(guān)于Redis內(nèi)存詭異增長(zhǎng)的排查過(guò)程實(shí)戰(zhàn)記錄
- 淺談redis內(nèi)存數(shù)據(jù)的持久化方式
- 降低PHP Redis內(nèi)存占用
- 淺談redis采用不同內(nèi)存分配器tcmalloc和jemalloc
- 將MongoDB作為Redis式的內(nèi)存數(shù)據(jù)庫(kù)的使用方法
- Redis教程(十四):內(nèi)存優(yōu)化介紹
- Redis教程(十一):虛擬內(nèi)存介紹
- redis數(shù)據(jù)庫(kù)查找key在內(nèi)存中的位置的方法