1. 程式人生 > >redis應用之——標簽

redis應用之——標簽

redis nosql 數據庫 編程 標簽

假設需要需要查詢既屬於,又屬於,又屬於的情況,以mysql為例,語句會很長,很耗資源。而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聖經


redis應用之——標簽