<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Redis on Leanku 的博客</title><link>https://www.leanku.com/categories/redis/</link><description>Recent content in Redis on Leanku 的博客</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Wed, 13 Mar 2024 13:46:01 +0800</lastBuildDate><atom:link href="https://www.leanku.com/categories/redis/index.xml" rel="self" type="application/rss+xml"/><item><title>Redis持久化及过期删除策略</title><link>https://www.leanku.com/post/nosql/redis%E6%8C%81%E4%B9%85%E5%8C%96%E5%8F%8A%E8%BF%87%E6%9C%9F%E5%88%A0%E9%99%A4%E7%AD%96%E7%95%A5/</link><pubDate>Wed, 13 Mar 2024 13:46:01 +0800</pubDate><guid>https://www.leanku.com/post/nosql/redis%E6%8C%81%E4%B9%85%E5%8C%96%E5%8F%8A%E8%BF%87%E6%9C%9F%E5%88%A0%E9%99%A4%E7%AD%96%E7%95%A5/</guid><description>&lt;h1 id="redis持久化及过期删除策略"&gt;Redis持久化及过期删除策略&lt;/h1&gt;&#10;&lt;h2 id="redis-持久化之rdb和aof"&gt;Redis 持久化之RDB和AOF&lt;/h2&gt;&#10;&lt;h3 id="rdb-详解"&gt;RDB 详解&lt;/h3&gt;&#10;&lt;p&gt;快照（snapshotting，RDB）&#10;RDB 是 Redis 默认的持久化方案。在指定的时间间隔内，执行指定次数的写操作，则会将内存中的数据写入到磁盘中。即在指定目录下生成一个dump.rdb文件。Redis 重启会通过加载dump.rdb文件恢复数据&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;从配置文件了解RDB&lt;/strong&gt;&#10;打开 redis.conf 文件，找到 SNAPSHOTTING 对应内容&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;RDB核心规则配置（重点）&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt; save &amp;lt;seconds&amp;gt; &amp;lt;changes&amp;gt;&#10; #save &amp;#34;&amp;#34;&#10; save 900 1&#10; save 300 10&#10; save 60 10000&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;说明：save &amp;lt;指定时间间隔&amp;gt; &amp;lt;执行指定次数更新操作&amp;gt;，满足条件就将内存中的数据同步到硬盘中。官方出厂配置默认是 900秒内有1个更改，300秒内有10个更改以及60秒内有10000个更改，则将内存中的数据快照写入磁盘。&#10;若不想用RDB方案，可以把 save “” 的注释打开，下面三个注释。&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;指定本地数据库文件名，一般采用默认的 dump.rdb&#10;&lt;code&gt; dbfilename dump.rdb&lt;/code&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;指定本地数据库存放目录，一般也用默认配置&#10;&lt;code&gt; dir ./&lt;/code&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;默认开启数据压缩&#10;&lt;code&gt;rdbcompression yes&lt;/code&gt;&lt;/p&gt;&#10;&lt;p&gt;解说：配置存储至本地数据库时是否压缩数据，默认为yes。Redis采用LZF压缩方式，但占用了一点CPU的时间。若关闭该选项，但会导致数据库文件变的巨大。建议开启。&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;&lt;strong&gt;触发RDB快照&lt;/strong&gt;&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;在指定的时间间隔内，执行指定次数的写操作&lt;/li&gt;&#10;&lt;li&gt;执行save（阻塞， 只管保存快照，其他的等待） 或者是bgsave （异步）命令&lt;/li&gt;&#10;&lt;li&gt;执行flushall 命令，清空数据库所有数据，意义不大。&lt;/li&gt;&#10;&lt;li&gt;执行shutdown 命令，保证服务器正常关闭且不丢失任何数据，意义…也不大。&#10;注意：&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;save备份过程：save备份是同步的，如果备份的数据量过大的话，服务器会暂停几百毫秒甚至是1秒&lt;/p&gt;&#10;&lt;p&gt;bgsave备份过程：bgsave备份会单独创建一个子进程，将备份的数据写入一个临时文件&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;RDB数据还原&lt;/strong&gt;&#10;找到备份临时文件的指令是 config get dir&#10;指令执行成功以后将备份临时文件的目录拷贝到Redis的安装目录下&#10;然后重新启动Redis服务就成功还原数据了&lt;/p&gt;</description></item></channel></rss>