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

caching azure redis azure-sql-database software-distribution

2887 观看

3回复

6017 作者的声誉

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

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

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

作者: Neo 的来源 发布者: 2015 年 3 月 4 日

回应 (3)


0

4357 作者的声誉

我将假设通过缓存你只是意味着并且你将它用作缓存。是一个内存中的键值数据存储,可用于除缓存之外的更多功能。

我想检查redis缓存是否为空(没有数据)

你在点上提到数据,但也提到表格。Redis没有桌子,它有钥匙。为了这个问题,我将给出一些例子,一个用于完全“空虚”并检查特定键。

检查redis实例是否为空

使用redis-client,如果运行keys *并且没有结果,redis实例将为空。

> keys *
(empty list or set)

检查钥匙是否存在

如果要检查特定键,只需获取值即可,或者如果要查找一组命名空间键,可以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 发布者: 04.03.2015 05:20

1

10693 作者的声誉

决定

我不得不不同意@bitoiu。不要将keys命令作为例程操作运行。密钥不是以这种方式运行的 - 它应该仅用于调试操作。

同样,使用INFO并不会告诉您特定数据是否存在,只是存在某些内容。如果你有一个且只有一个密钥,那么确定它似乎可行 - 直到你发现一个作业运行失败并存储一个空字符串或错误的数据。如果您只打算存储单个密钥,那么可能有更好的选择。

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

这样做的另一个好处是避免让预定的工作做到这一点。而是从Redis首先查询数据需要代码。如果存在数据,请使用它,否则查询后端并使用结果填充缓存,同时将其传递给客户端。将其与到期(如果可能)结合使用,您将获得包含的活动测试形式。

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

作者: The Real Bill 发布者: 05.03.2015 06:16

0

1 作者的声誉

您可以使用命令dbsize,如下所示,这将返回DB中的键数

redis-cli -a PASSWORD -n DB "dbsize" | cut -d ' ' -f 2
作者: yaqin2015 发布者: 13.08.2019 02:25
32x32