我正在使用redis MVC 应用程序中的缓存。
我想检查 redis 是否缓存为空(无数据),然后触发一个 Web 作业,该作业将填充 redis缓存来自 sql 的表数据数据库。
如何检查redis缓存中特定表中的空数据?
最佳答案
我不得不不同意@bitoiu。不要将keys 命令作为常规操作来运行。 Keys 不应该以这种方式运行 - 它应该仅用于调试操作。
同样,使用 INFO 并不能告诉您是否存在特定数据,而只是告诉您那里有某些东西。如果您只有一个键,那么这肯定会起作用 - 直到您发现作业运行出错并存储了空字符串或错误的数据。如果您只想存储单个 key ,可能有更好的选择。
如果您几乎肯定要存储 SQL 数据库中的数据,那么您将存储查询结果而不是数据的完整副本。这个结果将需要一个唯一的 key 。在 Redis 中测试这一点的方法是简单地查询键。如果该键为空,则填充它。如果它是一个字符串,请使用 get (或存在)。如果它是哈希,则查询您需要的特定成员。
这样做的另一个优点是避免安排作业来执行此操作。相反,需要数据的代码首先从 Redis 查询。如果数据存在,则使用它,否则查询后端并使用结果填充缓存,同时将其传递给客户端。将此与到期时间(如果可能)结合起来,您将获得一种形式的 active 测试。
这样,您就不需要运行更多的服务或作业来执行应用程序通常首先执行的操作。如果您必须更改后端查询代码,您会感激只有一个源需要更改。或者如果有人更改了一个代码库但没有更改另一个。
关于caching - 如何检查redis缓存表是否为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28859879/