search - 使用 Redis 从集合中反向搜索

标签 search tags redis set

我是 Node.js 的新手,我正在尝试使用 Express 和 Redis 创建博客。

我的问题是我有点迷失在 NoSQL 中,我真的不知道应该如何设计我的 Redis 数据。

我想做的:

SET global:postsNb 0
SET posts:1:text blablabla
SADD posts:1:tags a
SADD posts:1:tags b
SADD posts:1:tags c

这看起来很自然,但我不知道如何搜索标签中的所有帖子

你能帮帮我吗?

提前致谢。

最佳答案

It seems quite natural but I don't know how I can search all posts where a in tags.

你需要这样的东西:

SADD tags:[tagname] [postId]

例如,在创建帖子时(id=1,tags=a,b,c, content=...)运行以下命令:

SADD tags:a 1
SADD tags:b 1
SADD tags:c 1

然后检索所有具有标签 a 的帖子:

SMEMBERS tags:a

现在使用检索到的 ID 只需获取您需要显示的每个帖子。

PS: HASH 比字符串存储博文更方便,所以代替:

SET posts:1:text

您可能想改用 HMSET

HMSET posts:1 text blablabla createdAt 1385547056549

它将允许您向帖子添加更多属性/元数据,同时仍然可以使用 HGETALL 或 HMGET 轻松检索它。

关于search - 使用 Redis 从集合中反向搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20229712/

相关文章:

redis - 使用 django-celery chord,celery.chord_unlock 一直在执行,不调用提供的回调

javascript - Redis:使用列表保存 Javascript 对象

javascript - algolia instantsearch refinementList 项目在搜索其他内容时切换

MySQL全文关键字顺序?

java - Spring MVC : Difference between spring:message and request locale

python - Redis 幂等地在键上设置 ttl

java - 计算中间有强制点的2个节点之间的最短路径

ios - NSnotification 中心不工作 iOS

php - 去掉不需要的标签后,我还应该对文本输入做什么?

azure - 如何使用 azure powershell 识别标记名称和值的未标记资源