您的位置:首页 > 数据库 > Redis

Redis数据持久化

2017-01-16 12:12 246 查看
Redis是个支持持久化的内存数据库,redis需要经常将内存中的数据同步到磁盘来保证持久化。

1、RDB方式(Snapshotting[b]默认快照方式):[/b]

)配置:


[b]:7000> config get dir
1) "dir"
2) "/usr/local/redis/db"
:7000>
[root@redis1 db]# ll
总用量 8
-rw-r--r-- 1 root root 146 2月   1 08:36 
-rw-r--r-- 1 root root  74 2月   1 09:20 
[root@redis1 db]#

[b])优点:[/b]

)该机制可以带来更高的数据安全性,即数据持久性。

)由于该机制对日志文件的写入操作采用的是append模式,因此在写入过程中即使出现宕机现象,也不会破坏日志文件中已经存在的内容。然而如果我们本次操作只是写入了一半数据就出现了系统崩溃问题,不用担心,在Redis下一次启动之前,我们可以通过redis-check-aof工具来帮助我们解决数据一致性的问题。

)如果日志过大,Redis可以自动启用rewrite机制。即Redis以append模式不断的将修改数据写入到老的磁盘文件中,同时Redis还会创建一个新的文件用于记录此期间有哪些修改命令被执行。因此在进行rewrite切换时可以更好的保证数据安全性。

) AOF包含一个格式清晰、易于理解的日志文件用于记录所有的修改操作。事实上,也可以通过该文件完成数据的重建。

[b]:缺点:[/b]

)对于相同数量的数据集而言,AOF文件通常要大于RDB文件,[b]持久化文件会变的越来越大。[/b]

) 根据同步策略的不同,AOF在运行效
aa01
率上往往会慢于RDB。


[b]3、其它[/b]

[b]虚拟内存方式和[b]diskstore方式。:(不建议,而且虚拟内存据说版本后弃用,diskstore也不常用)[/b][/b]

[b]相关配置[/b]

持久化文件会变的越来越大。
vm-enabled yes          
#开启vm功能
vm-swap-file /tmp/   
#交换出来的value保存的文件路径/tmp/
vm-max-memory 1000000  
#redis使用的最大内存上限,超过上限后redis开始交换value到磁盘文件中
vm-page-size 32        
#每个页面的大小32个字节
vm-pages 134217728     
#最多使用在文件中使用多少页面,交换文件的大小 = vm-page-size * vm-pages
vm-max-threads 4       
#用于执行value对象换入换出的工作线程数量,0表示不使用工作线程[/code]


总结:

1、Redis允许同时开启AOF和RDB,既保证了数据安全又使得进行备份等操作十分容易。重新启动Redis后Redis会使用AOF文件来恢复数据,因为AOF方式的持久化可能丢失的数据更少。





2、读写分离 通过复制可以实现读写分离以提高服务器的负载能力。在常见的场景中,读的频率大于写,当单机的Redis无法应付大量的读请求时(尤其是较耗资源的请求,比如SORT命令等)可以通过复制功能建立多个从数据库,主数据库只进行写操作,而从数据库负责读操作。



3、从数据库持久化 持久化通常相对比较耗时,为了提高性能,可以通过复制功能建立一个(或若干个)从数据库,并在从数据库中启用持久化,同时在主数据库禁用持久化。当从数据库崩溃时重启后主数据库会自动将数据同步过来,所以无需担心数据丢失。而当主数据库崩溃时,需要在从数据库中使用SLAVEOF
NO ONE命令将从数据库提升成主数据库继续服务,并在原来的主数据库启动后使用SLAVEOF命令将其设置成新的主数据库的从数据库,即可将数据同步回来。


如有不妥,欢迎指正!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: