json - Azure Redis 缓存和 RedisJSON,可能的替代方案

标签 json azure redis

我正在考虑将 Azure Redis 缓存用于我们的一个应用程序。我们需要存储纯JSON,哪个最好practices section clearly recommends against , 在某些情况下。我对 Redis 非常陌生,我正在研究可能的模式来满足我们的要求,我不确定我的方法是否违反了这些最佳实践。

我想要实现的模式是这样的:

  1. Cosmos 数据库中的项目发生更改
  2. 解析更改源以查找更新的项目
  3. 更新的项目被序列化并写入Redis
  4. 稍后查询系统时,首先查找缓存的项目。检索并反序列化(如果存在)。如果不存在,则查询 Cosmos。

SET 和 GET 将在应用程序的两个完全独立的部分中进行。我永远不会出现检索、修改和设置的情况,因为 Cosmos 文档充当中间体并且永远不会触发同时写入。查询系统时,如果文档存在,则期望缓存始终是最新的。

我真正无法弄清楚的是我的方法是否存在提到的数据丢失的风险:

Worse yet, many applications would just GET the entire JSON string, deserialize it, manipulate it, re-serialize and SET it again at the application. This is an anti-pattern. There is a very real risk of losing data with this method.

他们继续建议 RedisJSON ,必须在数据库级别激活。

不幸的是,这对于 Azure Redis 缓存来说似乎是不可能的,或者至少我在创建资源时或创建资源时找不到任何文档或任何选项来执行此操作。

  1. 是否可以将 RedisJSON 与 Azure Redis 缓存结合使用?
  2. 如果不是#1,是否有其他推荐方法可以使用 Redis 存储 JSON 数据,或者我建议的方法是否是一个可能的解决方案?

更新

我通过监听我想要在 Azure Function 中缓存的容器的更改源解决了这个问题。这种模式有一个应用程序实例写入一个唯一的文档,并且读取完全单独发生,并且永远不会更改缓存的值。

如果插入或更新但未删除文档,则更改源会接收整个文档。由于接收了整个文档,因此在某些条件下很容易使缓存失效,或者添加软删除值以将其完全删除。

最佳答案

Is it possible to use RedisJSON with Azure Redis Cache?

您可以使用 Redis Cloud 在 Azure 上使用 RedisJSON 轻松创建 Redis,请参阅: https://redis.com/redis-enterprise-cloud/pricing/

关于json - Azure Redis 缓存和 RedisJSON,可能的替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68833876/

相关文章:

php - 从redis批量删除

list - redis 以原子方式切换值

javascript - 在线用javascript解析json数据

javascript - 如何创建和下载要从 AngularJS 中的表中的数据创建的 PDF 和 docx 格式的文件?

c# - 序列化同一个类中的多个 DateTime 属性,每个属性使用不同的格式

azure - 用于模拟的 Windows Azure

web-applications - Windows Azure 还是 RackSpace 云?

azure - 更改 accountEnabled 会抛出 403 Authorization_RequestDenied

json - 如何在没有 key 的情况下解析 JSON 文件?

Spring Redis连接失败套接字超时: read timed out