Database design 我可以在Oracle数据库中保存redis数据吗?

Database design 我可以在Oracle数据库中保存redis数据吗?,database-design,redis,in-memory-database,Database Design,Redis,In Memory Database,我们正试图通过Redis实现缓存。据我所知,Redis将数据存储到自己的RDB文件格式中。但是我们已经有了其他客户端使用的Oracle持久性。因此,我们不希望将数据存储在RDB文件中,而是希望将数据持久保存在Oracle DB中。在这种情况下禁用文件写入,并将Redis用作纯内存缓存。 为此,只需注释redis.conf中的所有“save”行即可 在伪代码中,读取值的过程如下: result = get value from redis if(result is null) { resul

我们正试图通过Redis实现缓存。据我所知,Redis将数据存储到自己的RDB文件格式中。但是我们已经有了其他客户端使用的Oracle持久性。因此,我们不希望将数据存储在RDB文件中,而是希望将数据持久保存在Oracle DB中。

在这种情况下禁用文件写入,并将Redis用作纯内存缓存。 为此,只需注释redis.conf中的所有“save”行即可

在伪代码中,读取值的过程如下:

result = get value from redis
if(result is null)
{
   result = get value from Oracle
   store result in redis
}
return result
更新:在交换一些评论后,这里是另一种选择

创建一个假的redis从机,它将连接到redis实例,然后在Oracle数据库上重现写操作。查看redis文档,了解复制是如何工作的


但这不是一件小事。您必须解释Redis命令并应用相应的SQL命令,并在Oracle数据库出现故障时处理重新同步。性能将取决于写入操作的数量。如果数量过多,Oracle数据库将无法应对。因此,我再一次认为这不是推荐的体系结构。

在这种情况下禁用文件写入,并将Redis用作纯内存缓存。 为此,只需注释redis.conf中的所有“save”行即可

在伪代码中,读取值的过程如下:

result = get value from redis
if(result is null)
{
   result = get value from Oracle
   store result in redis
}
return result
更新:在交换一些评论后,这里是另一种选择

创建一个假的redis从机,它将连接到redis实例,然后在Oracle数据库上重现写操作。查看redis文档,了解复制是如何工作的


但这不是一件小事。您必须解释Redis命令并应用相应的SQL命令,并在Oracle数据库出现故障时处理重新同步。性能将取决于写入操作的数量。如果数量过多,Oracle数据库将无法应对。因此,我认为这不是一个推荐的体系结构。

我们希望将增量更改保留在内存中。Redis是面向将更新数据的客户端的服务器。内存中的所有更新必须定期存储在数据库中。因此,我们需要的不是定期存储在RDB文件中,而是将其存储在Oracle中。第一部分适用于从Oracle数据库中获取Redis内存中不可用的密钥。Redis的设计目的不是将其数据存储在另一个数据库中,尤其是关系数据库。您想要使用它的方式只能通过编写自己的复制代码来实现。例如,您可以在后台运行应用程序时解析redis日志文件,然后在Oracle中写入数据更改。但我真的不相信这种做法。我在比较Hazelcast和Redis。这是我发现的Redis的唯一局限性。处理日志文件似乎不可行,因为我们正在考虑每秒处理15k左右的写/读请求。因此,从文件中扫描信息将是一个非常缓慢的操作。当Redis开始写入文件时,是否可能知道在特定持续时间内更改的密钥。我也许能抓住那些钥匙,开始用甲骨文写作。Redis如果我理解正确,请跟踪更改的密钥数量,但我怀疑它是否跟踪更改的密钥。据我所知,您跟踪更改的想法是正确的。我将更新我的答案,为您提供另一条线索。我们希望将增量更改保留在内存中。Redis是面向将更新数据的客户端的服务器。内存中的所有更新必须定期存储在数据库中。因此,我们需要的不是定期存储在RDB文件中,而是将其存储在Oracle中。第一部分适用于从Oracle数据库中获取Redis内存中不可用的密钥。Redis的设计目的不是将其数据存储在另一个数据库中,尤其是关系数据库。您想要使用它的方式只能通过编写自己的复制代码来实现。例如,您可以在后台运行应用程序时解析redis日志文件,然后在Oracle中写入数据更改。但我真的不相信这种做法。我在比较Hazelcast和Redis。这是我发现的Redis的唯一局限性。处理日志文件似乎不可行,因为我们正在考虑每秒处理15k左右的写/读请求。因此,从文件中扫描信息将是一个非常缓慢的操作。当Redis开始写入文件时,是否可能知道在特定持续时间内更改的密钥。我也许能抓住那些钥匙,开始用甲骨文写作。Redis如果我理解正确,请跟踪更改的密钥数量,但我怀疑它是否跟踪更改的密钥。据我所知,您跟踪更改的想法是正确的。我会更新我的答案给你另一个线索。