Tag system implementation

本文介绍如何使用关系型数据库管理系统(RDBMS)和Redis进行跨库查询,通过具体示例展示了如何获取同时具有WEB和PHP标签的书籍信息,并对比了两种方式的不同实现方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Use RDBMS

Give below 2 tables:
Table: BOOK

BOOK_IDBOOK_NAMEAUTHOR
1JAVAJASON
2RUBYJASON
3PYTHONJASON
4PHPJASON
5OBJECTIVE-CJASON
6SWIFTJASON

Table: TAG

TAG_IDTAG_NAMEBOOK_ID
1WEB1
2WEB2
3WEB3
4WEB4
5APPLE5
6APPLE6
7PHP4

If we want to get the books which both have WEB and PHP tag, we need below SQL:

SELECT T1.BOOK_ID FROM TAG T1 INNER JOIN TAG T2 
        ON T1.BOOK_ID=T2.BOOK_ID AND T1.TAG_NAME='WEB' AND T2.TAG_NAME='PHP'; 

Use Redis

prepare the data:

set book;;bookid;;1;;title JAVA
set book;;bookid;;2;;title RUBY
set book;;bookid;;3;;title PYTHON
set book;;bookid;;4;;title PHP
set book;;bookid;;5;;title OBJECTIVE-C
set book;;bookid;;6;;title SWIFT

sadd tag;;WEB 1 2 3 4
sadd tag;;APPLE 5 6
sadd tag;;PHP 4

To get the book both have WEB and PHP tag, use below command:

sinter tag;;WEB tag;;PHP
> 4

e.g. for sinter:

key1 = {a,b,c,d}
key2 = {c}
key3 = {a,c,e}
SINTER key1 key2 key3 = {c}

To get the book either have WEB or PHP tag, use below command:

sunion tag;;WEB tag;;PHP
> 1 2 3 4

e.g. for sunion:

key1 = {a,b,c,d}
key2 = {c}
key3 = {a,c,e}
SUNION key1 key2 key3 = {a,b,c,d,e}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值