【问题标题】:Does redis ever search in its database (persisted data) for a key?redis 是否曾经在其数据库(持久数据)中搜索密钥?
【发布时间】:2018-05-31 22:54:59
【问题描述】:

我知道 redis 可以持久化数据,但是在操作过程中,当您在 redis 服务器上查找密钥时,它是否需要在持久化数据(文件)中查找该密钥,还是只查找它在内存缓存中?如果在缓存中找不到密钥怎么办,它会自动尝试在磁盘上查找它吗?缓存过大如何处理,如果把缓存写到内存,是否清空缓存?

【问题讨论】:

    标签: redis


    【解决方案1】:

    Redis 中的所有键总是在内存中。保存在磁盘上的数据仅在引导期间访问以进行恢复。

    【讨论】:

      【解决方案2】:

      Redis 是一种内存数据存储。它只能保存一个可以放入内存的数据集。内存中的数据不是缓存,而是整个数据集。 Redis 可以将数据持久化到磁盘上。但是,磁盘数据用于恢复,而不是用于搜索。详情请见doc。

      它是否需要在持久化数据(文件)中查找该键,还是只在内存缓存中查找它?

      没有。它从不查找持久数据中的键。

      如果在缓存中找不到key,它会自动尝试在磁盘上查找吗?

      没有。

      缓存过大如何处理,如果将缓存写入内存,是否清空缓存?

      您可以配置策略在内存不足时驱逐密钥。详情请见doc。

      【讨论】:

      • 这意味着它不是真正的数据库,是吗?它只能在内存中保留尽可能多的时间。但是,如果我有越来越多的键/值对并且我需要它们全部持久化,我就不能使用 Redis,因为它最终会开始拒绝缓存中的键以将所有键保存在内存中。在这种情况下,我必须在 redis 后面使用另一个 db 进行存储,并在我的应用程序级别同时写入该 db 和 redis,就像传统缓存一样?
      • 如果您的数据集太大而无法放入单机内存,您也可以使用Redis Cluster将这些数据存储在多台机器中。否则,如您所说,您可以将其他数据库作为主数据库,并将 Redis 用作 LRU 缓存。
      猜你喜欢
      • 2011-01-27
      • 2016-02-28
      • 2013-06-16
      • 1970-01-01
      • 2023-02-17
      • 2016-07-01
      • 1970-01-01
      • 2016-09-23
      • 2022-01-16
      相关资源
      最近更新 更多