我想知道在 Redis 中存储 IP(不是很多(<50))以及一些元数据(添加时间,注意)的最佳方式是什么。我需要能够快速确定某个 IP 是否在该列表中,并能够检索所有存储的 IP。
我有一些想法,但它们对我来说似乎并不优雅/高效:
- 使用列表存储 IP,其中每个条目都是数组(ip、note、timestamp)。这将使检索所有 IP 变得简单,但需要循环遍历所有 IP,以确定给定 IP 是否在列表中。因此,这对检索所有 IP 是很好的,但对于检查一个 IP 的存在不是很好。
- 使用哈希表存储 IP,其中 IP 是键的一部分,元数据是哈希中的字段。这将允许我检查一个 IP 是否存储得非常简单(exists()),但需要一个单独的 redis 列表来跟踪存储的 IP(这需要我在添加/删除 IP 时非常小心)并且我必须执行 1 + count(ips) 操作才能获取所有存储的 IP 及其元信息。因此,这种方式适用于检查一个 IP 是否存在,但不适用于检索所有 IP。
是否有其他方法可以使用 redis 执行此操作,或者我是否必须使用上述方法之一(如果是,哪一个是最好的)?