当前位置: 首页 > 面试题库 >

Redis是持久数据存储区吗?

梅飞宇
2023-03-14
问题内容

我所说的“耐用”是指服务器可以随时崩溃,只要磁盘保持完好无损,就不会丢失任何数据(请参阅ACID)。好像这就是日记模式的用途,但是如果启用日记功能,这是否会破坏对内存数据进行操作的目的?读操作可能不受日记影响,但是日记似乎会破坏您的写入性能。


问题答案:

即使使用日志记录,Redis 通常 也不会部署为“耐用”数据存储(在ACID中为“ D”的含义)。大多数用例有意牺牲一些耐用性以换取速度。

但是,“仅附加文件”存储模式可以有选择地配置为以性能为代价以持久方式运行。在每次修改时,都必须为fsync()付费。要配置它,请在.conf文件中设置以下两个选项:

 appendonly yes
 appendfsync always

从文档:仅附加文件有多持久?

检查redis.conf,您可以配置Redis将fsync()磁盘上的数据进行多少次。共有三个选项:

  • 每次将新命令附加到附加日志文件时,均使用Fsync()。非常非常慢,非常安全。
  • 每秒一次Fsync()一次。足够快,如果发生灾难,您可能会丢失1秒的数据。
  • 永远不要使用fsync(),只需将数据放在操作系统手中即可。更快,更不安全的方法。

(请注意,Redis 2.0.0附带的配置文件中appendfsync的默认值为everysec,而不是always。)



 类似资料:
  • 主要内容:一、数据持久化,二、持久化的形式,三、源码分析,四、总结一、数据持久化 redis做为一种内存型数据库,做持久化,个人感觉略有鸡肋的意思。似乎有一种,别人有,自己不有也不行的感觉。以目前Redis主流的应用方式,如果仔细分析,基本上都是在内存中即可完成,对持久化没要求或者说不大。再举一个反例,如果内存中有几百G甚至更多的数据,真要是整体当机,恢复的时间基本就是灾难。 目前基本应用仍然是以关系型数据库或者其它数据库(如Hadoop,Mysql等)为持久化

  • 我知道Redis从内存中提供所有数据,但它是否也可以在服务器重新引导时持久存在,这样当服务器重新引导时,它将从磁盘中读取所有数据到内存中。或者它总是一个空白存储,只存储数据,而应用程序运行没有持久性?

  • 目的 配置 NFS 共享为 OpenShift 节点提供存储,并且配置 OpenShift 持久卷以绑定至数据库 Pod。 环境 openshift v3.11.16/kubernetes v1.11.0 步骤 配置 NFS 共享持久卷1. 登录到 NFS 服务器 # ssh nfs.example.com2. 创建 config-nfs.sh 脚本,内容如下 #!/usr/bin/sh exp

  • 本文向大家介绍内存型数据库Redis持久化小结,包括了内存型数据库Redis持久化小结的使用技巧和注意事项,需要的朋友参考一下 因为Redis是内存型数据库,所以为了防止因为系统崩溃等原因导致数据丢失的问题,Redis提供了两种不同的持久化方法来将数据存储在硬盘里面,一种方法是快照(RDB),它可以将存在于某一个时刻的所有数据都写入到硬盘里面,另外一种方法是只追加文件(AOF),它会在执行写命令时

  • 问题内容: 我是Java和Android开发的新手,我想问一下将数据存储到持久性存储的可用方法是什么?例如,我想在数据库或文件中存储字符串的集合。 请指教。谢谢。 问题答案: 正如您在问题本身中所说的那样,您可以使用文件或数据库。如果有更多数据,则可以使用文件和数据库(SQLITE);如果数据量较小,则也可以使用SharedPreferences。以下是其中所有链接的一个链接关于Android中的

  • 本文向大家介绍Flutter持久化存储之数据库存储(sqflite)详解,包括了Flutter持久化存储之数据库存储(sqflite)详解的使用技巧和注意事项,需要的朋友参考一下 前言 数据库存储是我们常用的存储方式之一,对大批量数据有增、删、改、查操作需求时,我们就会想到使用数据库,Flutter中提供了一个sqflite插件供我们用于大量数据执行CRUD操作。本篇我们就来一起学习sqflite