標籤:
書籤系統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.bookidwhere 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 5sadd tag:WEB 5 6sadd tag:database 7sadd tag:ruby 6 8sadd tag:SERVER 8查: 既有PHP,又有WEB的書Sinter tag:PHP tag:WEB #查集合的交集查: 有PHP或有WEB標籤的書Sunin tag:PHP tag:WEB查:含有ruby,不含WEB標籤的書Sdiff tag:ruby tag:WEB #求差集 Redis key 設計技巧1: 把表名轉換為key首碼 如, tag:2: 第2段放置用於區分區key的欄位--對應mysql中的主鍵的列名,如userid3: 第3段放置主索引值,如2,3,4...., a , b ,c4: 第4段,寫要儲存的列名使用者表 user , 轉換為key-value儲存
-------------------------------------------------- userid username passworde email
-------------------------------------------------- 9 Lisi 1111111 [email protected]com
--------------------------------------------------set user:userid:9:username lisiset user:userid:9:password 111111set user:userid:9:email [email protected]comkeys user:userid:9*2 注意:在關係型資料中,除主鍵外,還有可能其他列也步驟查詢,如上表中, username 也是極頻繁查詢的,往往這種列也是加了索引的.轉換到k-v資料中,則也要相應的產生一條按照該列為主的key-valueSet user:username:lisi:uid 9 這樣,我們可以根據username:lisi:uid ,查出userid=9, 再查user:9:password/email ...
17 redis -key設計原則