如何检查redis缓存table是否为空?
How can I check if redis cache table is empty?
我在 MVC 应用程序中使用 redis 缓存。
我想检查 redis 缓存是否为空(无数据),然后触发网络作业,该作业将填充 redis 缓存 tables 来自 [=19= 的数据]sql 数据库.
如何检查redis缓存中特定table中的空数据?
我假设 by redis cache you simply mean redis and you're using it as a cache. redis 是一个内存中的键值数据存储,它不仅可以用于缓存,还可以用于更多的事情。
I want to check if the redis cache is empty (no data)
您在点和表中提到了数据。 Redis 不是没有表,它有键。为了这个问题,我将给出示例,一个用于完整 "emptiness" 并检查特定密钥。
检查redis实例是否为空
如果您 运行 keys *
使用 redis-client 并且没有得到任何结果,则 redis 实例将为空。
> keys *
(empty list or set)
正在检查是否存在密钥
如果你想检查一个特定的键,你可以简单地 GET 值,或者如果你正在寻找一组命名空间的键,你可以再次使用 keys
:
> get com.items.1
(nil)
> keys com.items.*
(empty list or set)
反对如果有价值观你应该得到以下内容:
> get com.items.1
"first item"
> keys com.items.*
1) "com.items.1"
2) "com.items.2"
希望你已经在用redis客户端了,这是解决问题的方法,你得自己写代码了。
我不同意@bitoiu。不要把运行按键命令当作常规操作。 Keys 不应该是 运行 这样的 - 它应该只用于调试操作。
同样,使用 INFO 不会告诉您是否有特定数据,只是告诉您那里有 something。如果您只有一个键,那么可以肯定这似乎有效 - 直到您发现作业 运行 出错并存储了空字符串或错误数据。如果您只打算存储一个密钥,那么可能有更好的选择。
如果您几乎肯定要存储来自 SQL 数据库的数据,您将存储查询结果而不是数据的完整副本。此结果将需要一个唯一的密钥。在 Redis 中对此进行测试的方法是简单地查询键。如果密钥为空,则填充它。如果它是一个字符串使用 get (或存在)。如果它是哈希,则查询您需要的特定成员。
这样做的另一个好处是避免让计划的工作来做。取而代之的是让数据需要代码首先查询来自 Redis。如果数据存在,则使用它,否则查询后端并在将结果传递给客户端时用结果填充缓存。将其与过期(如果可能)结合起来,您将获得一种包含活性测试的形式。
这样您就不需要更多的服务或工作 运行 做您的应用程序通常首先要做的事情。如果您不得不更改后端查询代码,您会感激只有一个来源可以更改。或者如果有人更改了一个代码库而不是另一个。
您可以使用命令 dbsize
,如下所示,这将 return 数据库中的键数
redis-cli -a PASSWORD -n DB "dbsize" | cut -d ' ' -f 2
我在 MVC 应用程序中使用 redis 缓存。
我想检查 redis 缓存是否为空(无数据),然后触发网络作业,该作业将填充 redis 缓存 tables 来自 [=19= 的数据]sql 数据库.
如何检查redis缓存中特定table中的空数据?
我假设 by redis cache you simply mean redis and you're using it as a cache. redis 是一个内存中的键值数据存储,它不仅可以用于缓存,还可以用于更多的事情。
I want to check if the redis cache is empty (no data)
您在点和表中提到了数据。 Redis 不是没有表,它有键。为了这个问题,我将给出示例,一个用于完整 "emptiness" 并检查特定密钥。
检查redis实例是否为空
如果您 运行 keys *
使用 redis-client 并且没有得到任何结果,则 redis 实例将为空。
> keys *
(empty list or set)
正在检查是否存在密钥
如果你想检查一个特定的键,你可以简单地 GET 值,或者如果你正在寻找一组命名空间的键,你可以再次使用 keys
:
> get com.items.1
(nil)
> keys com.items.*
(empty list or set)
反对如果有价值观你应该得到以下内容:
> get com.items.1
"first item"
> keys com.items.*
1) "com.items.1"
2) "com.items.2"
希望你已经在用redis客户端了,这是解决问题的方法,你得自己写代码了。
我不同意@bitoiu。不要把运行按键命令当作常规操作。 Keys 不应该是 运行 这样的 - 它应该只用于调试操作。
同样,使用 INFO 不会告诉您是否有特定数据,只是告诉您那里有 something。如果您只有一个键,那么可以肯定这似乎有效 - 直到您发现作业 运行 出错并存储了空字符串或错误数据。如果您只打算存储一个密钥,那么可能有更好的选择。
如果您几乎肯定要存储来自 SQL 数据库的数据,您将存储查询结果而不是数据的完整副本。此结果将需要一个唯一的密钥。在 Redis 中对此进行测试的方法是简单地查询键。如果密钥为空,则填充它。如果它是一个字符串使用 get (或存在)。如果它是哈希,则查询您需要的特定成员。
这样做的另一个好处是避免让计划的工作来做。取而代之的是让数据需要代码首先查询来自 Redis。如果数据存在,则使用它,否则查询后端并在将结果传递给客户端时用结果填充缓存。将其与过期(如果可能)结合起来,您将获得一种包含活性测试的形式。
这样您就不需要更多的服务或工作 运行 做您的应用程序通常首先要做的事情。如果您不得不更改后端查询代码,您会感激只有一个来源可以更改。或者如果有人更改了一个代码库而不是另一个。
您可以使用命令 dbsize
,如下所示,这将 return 数据库中的键数
redis-cli -a PASSWORD -n DB "dbsize" | cut -d ' ' -f 2