6.12. RocksDB 缓存存储


RocksDB 为高度并发环境提供基于键值文件系统的存储,具有高性能和可靠性。

RocksDB 缓存存储 RocksDBStore 使用两个数据库。一个数据库为内存中数据提供主缓存存储;其他数据库包含 Data Grid 从内存中过期的条目。

Expand
表 6.1. 配置参数
参数描述

位置

指定提供主缓存存储的 RocksDB 数据库的路径。如果您没有设置位置,则会自动创建。请注意,路径必须相对于全局持久位置。

expiredLocation

指定为过期的数据提供缓存存储的 RocksDB 数据库的路径。如果您没有设置位置,则会自动创建。请注意,路径必须相对于全局持久位置。

expiryQueueSize

为过期条目设置内存队列的大小。当队列达到大小时,Data Grid 会将已过期刷新到 RocksDB 缓存存储中。

clearThreshold

在删除和重新初始化(re-init) RocksDB 数据库前设置条目的最大数量。对于较小的大小缓存存储,它会对所有条目进行迭代,并单独删除每个条目可以提供一个更快的方法。

调整参数

您还可以指定以下 RocksDB 调优参数:

  • compressionType
  • blockSize
  • cacheSize

配置属性

(可选)在配置中设置属性,如下所示:

  • 使用 数据库的前缀 属性来调整和调优 RocksDB 数据库。
  • 使用 数据 添加前缀属性,以配置 RocksDB 存储您的数据的列系列。
<property name="database.max_background_compactions">2</property>
<property name="data.write_buffer_size">64MB</property>
<property name="data.compression_per_level">kNoCompression:kNoCompression:kNoCompression:kSnappyCompression:kZSTD:kZSTD</property>
Copy to Clipboard Toggle word wrap

分段

RocksDBStore 支持分段,并创建每个网段的独立列系列。片段的 RocksDB 缓存存储提高了查找性能和迭代,但写入操作的性能稍微降低。

注意

您不应该配置超过几百个片段。RocksDB 不设计为拥有无限数量的列系列。太多片段也会显著增加缓存存储启动时间。

RocksDB 缓存存储配置

XML

<local-cache>
   <persistence>
      <rocksdb-store xmlns="urn:infinispan:config:store:rocksdb:15.0"
                     path="rocksdb/data">
         <expiration path="rocksdb/expired"/>
      </rocksdb-store>
   </persistence>
</local-cache>
Copy to Clipboard Toggle word wrap

JSON

{
  "local-cache": {
    "persistence": {
      "rocksdb-store": {
        "path": "rocksdb/data",
        "expiration": {
          "path": "rocksdb/expired"
        }
      }
    }
  }
}
Copy to Clipboard Toggle word wrap

YAML

localCache:
  persistence:
    rocksdbStore:
      path: "rocksdb/data"
      expiration:
        path: "rocksdb/expired"
Copy to Clipboard Toggle word wrap

ConfigurationBuilder

Configuration cacheConfig = new ConfigurationBuilder().persistence()
				.addStore(RocksDBStoreConfigurationBuilder.class)
				.build();
EmbeddedCacheManager cacheManager = new DefaultCacheManager(cacheConfig);

Cache<String, User> usersCache = cacheManager.getCache("usersCache");
usersCache.put("raytsang", new User(...));
Copy to Clipboard Toggle word wrap

带有属性的 ConfigurationBuilder

Properties props = new Properties();
props.put("database.max_background_compactions", "2");
props.put("data.write_buffer_size", "512MB");

Configuration cacheConfig = new ConfigurationBuilder().persistence()
				.addStore(RocksDBStoreConfigurationBuilder.class)
				.location("rocksdb/data")
				.expiredLocation("rocksdb/expired")
				.properties(props)
				.build();
Copy to Clipboard Toggle word wrap

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat