caching - 如何检查redis缓存表是否为空?

标签 caching azure redis azure-sql-database software-distribution

我正在使用 MVC 应用程序中的缓存。

我想检查 是否缓存为空(无数据),然后触发一个 Web 作业,该作业将填充 缓存来自 的表数据数据库。

如何检查redis缓存中特定表中的空数据?

最佳答案

我不得不不同意@bitoiu。不要将keys 命令作为常规操作来运行。 Keys 不应该以这种方式运行 - 它应该仅用于调试操作。

同样,使用 INFO 并不能告诉您是否存在特定数据,而只是告诉您那里有某些东西。如果您只有一个键,那么这肯定会起作用 - 直到您发现作业运行出错并存储了空字符串或错误的数据。如果您只想存储单个 key ,可能有更好的选择。

如果您几乎肯定要存储 SQL 数据库中的数据,那么您将存储查询结果而不是数据的完整副本。这个结果将需要一个唯一的 key 。在 Redis 中测试这一点的方法是简单地查询键。如果该键为空,则填充它。如果它是一个字符串,请使用 get (或存在)。如果它是哈希,则查询您需要的特定成员。

这样做的另一个优点是避免安排作业来执行此操作。相反,需要数据的代码首先从 Redis 查询。如果数据存在,则使用它,否则查询后端并使用结果填充缓存,同时将其传递给客户端。将此与到期时间(如果可能)结合起来,您将获得一种形式的 active 测试。

这样,您就不需要运行更多的服务或作业来执行应用程序通常首先执行的操作。如果您必须更改后端查询代码,您会感激只有一个源需要更改。或者如果有人更改了一个代码库但没有更改另一个。

关于caching - 如何检查redis缓存表是否为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28859879/

相关文章:

c# - 使用辅助角色从多个动态队列接收 Azure 服务总线消息

Redis - 更新集成员

mysql - 什么是最积极的 FLUSH/RESET mysql 命令来清除查询缓存(以及其他任何...)

caching - 服务器启动时自动启动cachecluster

php - Twitter - twemproxy - memcached - 重试未按预期工作

node.js - 使用 Node.js 在 Redis 中搜索然后添加记录

redis - 服务栈.Redis : Unable to Connect: sPort:

java - Java/Java EE 应用程序的服务器端缓存

azure - 在 Azure SAS 下允许多个 IP

azure - 垂直排列的 Powershell GUI 按钮