文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

redis应用之——标签

2024-04-02 19:55

关注

mysql:

create table book (

bookid int,

title char(20)

)engine myisam charset utf8;

 

insert into book values

(5 , 'PHP圣经'),

(6 , 'ruby实战'),

(7 , 'mysql运维')

(8, 'ruby服务端编程');

 

 

create table tags (

tid int,

bookid int,

content char(20)

)engine myisam charset utf8;

 

insert into tags values

(10 , 5 , 'PHP'),

(11 , 5 , 'WEB'),

(12 , 6 , 'WEB'),

(13 , 6 , 'ruby'),

(14 , 7 , 'database'),

(15 , 8 , 'ruby'),

(16 , 8 , 'server');

 

# 既有web标签,又有PHP,同时还标签的书,要用连接查询

 

select * from tags inner join tags as t on tags.bookid=t.bookid

where tags.content='PHP' and t.content='WEB';

 

 


换成key-value存储

用kv 来存储

set book:5:title 'PHP圣经'

set book:6:title 'ruby实战'

set book:7:title 'mysql运难'

set book:8:title ‘ruby server’

 

sadd tag:PHP 5

sadd tag:WEB 5 6

sadd tag:database 7

sadd tag:ruby 6 8

sadd tag:SERVER 8

 

查: 既有PHP,又有WEB的书

Sinter tag:PHP tag:WEB  #查集合的交集

 

查: 有PHP或有WEB标签的书

Sunin tag:PHP tag:WEB

 

查:含有ruby,不含WEB标签的书

Sdiff tag:ruby tag:WEB #求差集


假设需要需要查询既属于,又属于,又属于的情况,以mysql为例,用到join(如果取交集的标签够多,join的量会够多),语句会很长,很耗资源。而redis能轻松解决这个问题:


有若干本书,分别属于若干个标签(类型):

    'php圣经','java圣经','C++圣经','asp圣经','php从入门到放弃','go圣经','linux内核编程','python圣经'

    

属于php的:

    'php圣经','php从入门到放弃'

属于web的:

    'php圣经','asp圣经','php从入门到放弃'

属于code的:

    'php圣经','java圣经','C++圣经','asp圣经','php从入门到放弃','go圣经','python圣经'

属于system的:

    'linux内核编程


接下来,字段设置:

    先将书设置好:

        set book:1:title 'php圣经'

        set book:2:title 'java圣经'

        set book:3:title 'C++圣经'

        set book:4:title 'asp圣经'

        set book:5:title 'php从入门到放弃'

        set book:6:title 'go圣经'

        set book:7:title 'linux内核编程'

        set book:8:title 'python圣经'

    将书签设置好:

        sadd tag:php    1 5

        sadd tag:web    1 4 5

        sadd tag:code   1 2 3 4 5 6 8

        sadd tag:system 7 


用集合,取交集的方式迅速求出

    既属于php标签又属于web标签的:

    127.0.0.1:6379> sinter tag:php tag:web

    1

    5

    既属于php标签又属于web标签又属于code标签的:

    127.0.0.1:6379> sinter tag:php tag:web tag:code

    1

    5


获取1、5的书名:

    127.0.0.1:6379> get book:1:title

    php圣经

    127.0.0.1:6379> get book:5:title

    php从入门到放弃


注意:正常情况下redis命令窗口不显示中文,要显示中文要加上--raw参数

    [lzw@localhost bin]$ redis-cli

    127.0.0.1:6379> get book:1:title

    "php\xe5\x9c\xa3\xe7\xbb\x8f"

    127.0.0.1:6379> 

    [lzw@localhost bin]$ redis-cli --raw

    127.0.0.1:6379> get book:1:title

    php圣经

    

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯