redis是一个持久的数据存储?
我的意思是说,“服务器”可以随时崩溃,只要磁盘保持完好,没有数据丢失(参见ACID )。 似乎这就是日志模式的作用,但是如果启用日志logging,是不是不符合在内存数据上运行的目的呢? 阅读操作可能不会受到日志logging的影响,但是看起来日记似乎会毁掉您的写入性能。
Redis 通常不会被部署为“耐用”数据存储(即ACID中的“D”),即使使用日记function也是如此。 大多数使用情况都会故意牺牲一点耐用性来换取速度。
然而,“仅附加文件”存储模式可以可选地被configuration为以性能的代价以持久的方式操作。 它将不得不为每个修改付费fsync() 。 要configuration这个,在.conf文件中设置这两个选项:
appendonly yes appendfsync always
从文档: 只附加文件是如何耐用?
检查redis.conf,你可以configurationRedis将fsync()数据放在磁盘上的次数。 有三个选项:
- 每次将新命令追加到追加日志文件时,都会执行Fsync()。 非常非常慢,非常安全。
- Fsync()每秒一次。 足够快,如果发生灾难,您可能会丢失1秒钟的数据。
- 永远不要fsync(),只需把你的数据交给操作系统。 更快和不安全的方法。
(请注意,Redis 2.0.0版本的configuration文件中的appendfsync默认值是everysec
,并不always
。