Redis数据磁盘持久化方案
Redis是一款基于内存的高性能键值存储数据库,其数据的保存和恢复都是通过内存快照或命令日志来实现的。但是内存快照方式在持久化过程中需要将整个数据库序列化到硬盘上,如果数据库比较大,序列化和写盘都会比较慢,同时在Redis重启时恢复数据也会耗费大量时间,因此Redis还提供了命令日志持久化方式来提高持久化效率。本文将详细介绍Redis的两种持久化方式,并提供相关代码实例。
1.内存快照持久化
Redis内存快照持久化是将Redis中所有数据保存到硬盘上,它是Redis默认的持久化方式。Redis可以在后台异步将快照写入磁盘,不会影响Redis的读写性能,同时因为快照文件是二进制文件,可以压缩,因此占用的硬盘空间也比较小。该持久化方式适用于数据比较小,但是数据需要长久保存的场景。
内存快照持久化步骤:
1.1 配置redis.conf文件
Redis的内存快照持久化需要在redis.conf文件中设置如下参数:
save 900 1 #表示900s内如果有1个Key被修改,就会触发持久化操作
save 300 10 #表示300s内如果有10个key被修改,就会触发持久化操作
save 60 10000 #表示60s内如果有10000个key被修改,就会触发持久化操作

dbfilename dump.rdb #快照文件名称
dir /data #快照文件存放路径
1.2 执行保存操作
在配置相应参数后,Redis会自动根据配置进行持久化操作,也可以通过命令手动执行快照操作:
redis-cli save #阻塞当前客户端,直到快照保存完成
redis-cli bgsave #在后台异步执行快照操作
1.3 恢复数据
当Redis重启后,可以通过加载快照文件来恢复数据:
redis-server /etc/redis/redis.conf #启动Redis
redis-cli CONFIG SET dir /data #修改快照文件存储路径
redis-cli CONFIG SET dbfilename dump.rdb #修改快照文件名称
redis-cli CONFIG REWRITE #修改配置文件生效
redis-cli SHUTDOWN SAVE #保存数据并退出Redis
2.命令日志持久化
命令日志持久化是将所有写入操作以日志的形式保存到硬盘上,Redis重启后可以通过重放日志恢复数据。命令日志的持久化方式适用于追求高数据完整性和快速恢复的场景,但是因为每次写操作都要保存日志,会对Redis的写性能造成一定影响。命令日志分为同步保存和异步保存两种方式,其中异步保存性能比同步保存高。
命令日志持久化步骤:
2.1 配置redis.conf文件
命令日志持久化需要在redis.conf文件中进行以下配置:
appendonly yes #开启命令日志持久化
appendfilename “appendonly.aof” #日志文件名称
dir /data #日志文件存放路径
appendfsync always #每次写操作都立即保存日志文件,安全但性能较低
appendfsync everysec #每秒钟保存一次日志文件,比always方式高效,但可能会数据丢失一秒钟
appendfsync no #交由操作系统决定写入时机,性能最高,但可能会数据丢失多秒钟
2.2 执行保存操作
和内存快照持久化方式不同,命令日志持久化方式会自动将写入操作保存到日志文件中,不需要手动执行保存操作。
2.3 恢复数据
当Redis重启后,可以通过加载日志文件来恢复数据:
redis-server /etc/redis/redis.conf #启动Redis
redis-cli CONFIG SET dir /data #修改日志文件存储路径
redis-cli CONFIG SET appendfilename appendonly.aof #修改日志文件名称
redis-cli CONFIG REWRITE #修改配置文件生效
redis-cli SHUTDOWN SAVE #保存数据并退出Redis
总结
本文详细介绍了Redis的两种持久化方式,包括其步骤、配置文件参数和代码实例。在实际应用中,需要根据数据大小和场景选择适合的持久化方式,以达到最优性能和数据完整性。
香港服务器首选树叶云,2H2G首月10元开通。树叶云(shuyeidc.com)提供简单好用,价格厚道的香港/美国云 服务器 和独立服务器。IDC+ISP+ICP资质。ARIN和APNIC会员。成熟技术团队15年行业经验。
REDIS学习查看redis状态,以及rdb和aof两种持久化方案的区别
命令:redis-cli info //查看redis服务器状态的rdb : redis database 默认开启的,是将数据从内存备份到硬盘中。 aof:append only f 需要自己根据需要开启,是将执行命令存储在一个文件中。 建议看一下apeit-程序猿IT的文章《redis数据持久化》,讲的简单明了。
scrapy使用redis的时候,redis需要进行一些设置吗
1.使用两台机器,一台是win10,一台是centos7,分别在两台机器上部署scrapy来进行分布式抓取一个网站7的ip地址为192.168.1.112,用来作为redis的master端,win10的机器作为的爬虫运行时会把提取到的URL封装成request放到redis中的数据库:“dmoz:requests”,并且从该数据库中提取request后下载网页,再把网页的内容存放到redis的另一个数据库中“dmoz:items”从master的redis中取出待抓取的request,下载完网页之后就把网页的内容发送回master的redis5.重复上面的3和4,直到master的redis中的“dmoz:requests”数据库为空,再把master的redis中的“dmoz:items”数据库写入到mongodb中里的reids还有一个数据“dmoz:dupefilter”是用来存储抓取过的url的指纹(使用哈希函数将url运算后的结果),是防止重复抓取的!
Redis和Memcache的区别分析
1、 Redis和Memcache都是将数据存放在内存中,都是内存数据库。 不过memcache还可用于缓存其他东西,例如图片、视频等等。 2、Redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,hash等数据结构的存储。 3、虚拟内存--Redis当物理内存用完时,可以将一些很久没用到的value 交换到磁盘4、过期策略--memcache在set时就指定,例如set key1 0 0 8,即永不过期。 Redis可以通过例如expire 设定,例如expire name 105、分布式--设定memcache集群,利用magent做一主多从;redis可以做一主多从。 都可以一主一从6、存储数据安全--memcache挂掉后,数据没了;redis可以定期保存到磁盘(持久化)7、灾难恢复--memcache挂掉后,数据不可恢复; redis数据丢失后可以通过aof恢复8、Redis支持数据的备份,即master-slave模式的数据备份。
发表评论