我知道Redis提供来自内存的所有数据,但是它在服务器重启时也会持续存在,这样当服务器重新启动时,它会从磁盘读入内存中的所有数据.或者它总是一个空白的商店,只是在应用程序运行时没有持久性存储数据?
Man*_*idt 60
我建议你在http://redis.io/topics/persistence上阅读这篇文章.基本上,当您通过仅使用内存存储来提高性能时,您将失去保证的持久性.想象一下你插入内存但在它被持久化到磁盘失去电源之前的情况.会有数据丢失.
Redis支持所谓的"快照".这意味着它将在某些时间点(例如每整个小时)对内存中的内容进行完整的复制.当您在两个快照之间断电时,您将丢失从上次快照到崩溃之间的时间内的数据(不必是断电......).与大多数NoSQL-DB一样,Redis交易数据安全性与性能.
大多数NoSQL数据库遵循多个节点之间的复制概念,以最大限度地降低此风险.Redis被认为是更快速的缓存,而不是保证数据一致性的数据库.因此,它的用例通常与真实数据库的用例不同:例如,您可以使用无与伦比的性能存储会话,性能计数器或其他任何内容,并且在发生崩溃时不会造成实际损失.但处理订单/购买历史等被视为传统数据库的工作.
Leo*_*tny 25
Redis服务器不时将其所有数据保存到HDD,从而提供一定程度的持久性.
它在以下某种情况下保存了数据:
BGSAVE命令但redis中的数据并不是持久的,因为:
BGSAVE 只有在有足够的可用RAM(额外RAM的数量等于redis DB的大小)时才能执行操作注意: BGSAVE RAM要求是一个真正的问题,因为redis会继续工作,直到没有更多的RAM运行,但它会更早地停止将数据保存到HDD(大约占RAM的50%).
有关更多信息,请参阅Redis Persistence.
Chr*_*row 12
答案通常是肯定的,但是更完整的答案实际上取决于您尝试存储的数据类型。一般来说,更完整的简短答案是:
话虽如此,默认情况下 Redis将定期保留数据快照(显然这是每 1 分钟一次,但我尚未验证这一点 - 下面的文章对此进行了描述,这是一个很好的基本介绍):
http://qnimate.com/redis-permanent-storage/
TL; 博士
来自官方文档:
- RDB 持久性 [默认]以指定的时间间隔执行数据集的时间点快照。
- AOF持久化 [需要显式配置]记录服务器收到的每个写操作,在服务器启动时会再次播放,重建原始数据集。
如果需要,Redis 必须为 AOF 持久性显式配置,这将导致性能损失以及日志增长。对于有限数量的数据流的相对可靠的持久性可能就足够了。
Ada*_*tro 10
这是一个配置问题.您可以在Redis上没有,部分或完全持久化数据.最好的决策将取决于项目的技术和业务需求.
根据Redis关于持久性的文档,您可以设置实例,以便不时或在每个查询中将数据保存到磁盘中.他们提供了两种策略/方法AOF和RDB(阅读文档以了解当时的详细信息),您可以单独使用或一起使用.
如果你想要一个"像持久性的SQL",他们说:
一般的迹象是,如果您希望一定程度的数据安全性与PostgreSQL为您提供的数据安全性相当,则应使用两种持久性方法.
完全可以选择不持久化。性能更好,但是Redis关闭时所有数据都会丢失。
Redis 有两种持久化机制:RDB 和 AOF。RDB 使用调度程序全局快照,AOF 将更新写入类似于 MySql 的仅附加日志文件。
您可以使用其中之一或两者。当Redis重启时,它通过读取RDB文件或AOF文件来构造数据。
| 归档时间: |
|
| 查看次数: |
52133 次 |
| 最近记录: |