gpt4 book ai didi

caching - 如何将缓存存储持久保存到关系数据库

转载 作者:行者123 更新时间:2023-12-02 05:30:52 24 4
gpt4 key购买 nike

有什么方法可以将 infinispan 缓存存储中的缓存对象持久保存到关系数据库表中吗?我试图将其作为缓存加载器来实现。

 <loader class="org.infinispan.loaders.jdbc.stringbased.JdbcStringBasedCacheStore" fetchPersistentState="true" ignoreModifications="false" purgeOnStartup="false">
<properties>
<property name="stringsTableNamePrefix" value="ISPN_STRING_TABLE"/>
<property name="idColumnName" value="ID_COLUMN"/>
<property name="dataColumnName" value="DATA_COLUMN"/>
<property name="timestampColumnName" value="TIMESTAMP_COLUMN"/>
<property name="timestampColumnType" value="BIGINT"/>
<property name="connectionFactoryClass" value="org.infinispan.loaders.jdbc.connectionfactory.PooledConnectionFactory"/>
<property name="connectionUrl" value="jdbc:derby://localhost:1527/DB;create=true"/>
<property name="userName" value="user"/>
<property name="password" value="password"/>
<property name="driverClass" value="org.apache.derby.jdbc.ClientDriver"/>
<property name="idColumnType" value="VARCHAR(255)"/>
<property name="dataColumnType" value="BLOB"/>
<property name="dropTableOnExit" value="false"/>
<property name="createTableOnStart" value="true"/>

</properties>
</loader>

来自此键和值存储在 ISPN_STRING_TABLE_TEST_STORE 中 < namedCache 名称=“TEST_STORE”>。它将 ID 列中的键和 DATA_COLUMN 中的值保存为 Blob。我想将此 Blob 包含数据放入关系数据库(而不是对象)。例如,当我将 Employee 对象放入缓存时,它应该将数据库表作为员工表,员工属性作为该表中的一个字段。(员工姓名、年龄等)。有办法做到这一点吗?

最佳答案

Infinispan Data Grid Platform Book 中有一个示例其中描述了如何使用 MySQL 作为关系数据库来配置 JdbcStringBasedCacheStore。在此示例中,连接 URL 中使用了数据源,但是根据您的需要调整它应该不难。希望它有所帮助。
问候

<loaders>
<loader
class="org.infinispan.loaders.jdbc.stringbased.JdbcStringBasedCacheStore"
fetchPersistentState="true" ignoreModifications="false"
purgeOnStartup="false">
<properties>
<property name="stringsTableNamePrefix" value="ISPN_STRING_TABLE" />
<property name="idColumnName" value="ID_COLUMN" />
<property name="idColumnType" value="VARCHAR(255)" />
<property name="dataColumnName" value="DATA_COLUMN" />
<property name="dataColumnType" value="TRUE" />
<property name="timestampColumnName" value="TIMESTAMP_COLUMN" />
<property name="timestampColumnType" value="BIGINT" />
<property name="connectionFactoryClass"
value="org.infinispan.loaders.jdbc.
connectionfactory.PooledConnectionFactory" />
<property name="connectionUrl" value="java:jboss/datasources/MySQLDS" />
<property name="userName" value="xxxx" />
<property name="password" value="xxxx" />
<property name="driverClass" value="com.mysql.jdbc.Driver" />
<property name="dropTableOnExit" value="true" />
<property name="createTableOnStart" value="true" />
</properties>
</loader>
</loaders>

关于caching - 如何将缓存存储持久保存到关系数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12399659/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com