您好,登錄后才能下訂單哦!
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圣經
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。