啟動
啟動服務(wù)端
./redis-server
指定要加載的配置文件
./redis-server ../redis.conf
默認(rèn)情況下谣旁,redis-server會以非daemon的方式來運(yùn)行子姜,且默認(rèn)服務(wù)端口為6379特石。
啟動客戶端
./redis-cli
//用set指令來設(shè)置key吊说、value
127.0.0.1:6379> set name "roc" OK
//來獲取name的值
127.0.0.1:6379> get name "roc"
//通過客戶端來關(guān)閉redis服務(wù)端
127.0.0.1:6379> shutdown
127.0.0.1:6379>
數(shù)據(jù)結(jié)構(gòu)
redis是一種高級的key:value存儲系統(tǒng)状植,其中value支持五種數(shù)據(jù)類型:
1.字符串(strings)
2.字符串列表(lists)
3.字符串集合(sets)
4.有序字符串集合(sorted sets)
5.哈希(hashes)
而關(guān)于key,一下幾點(diǎn)需要注意:
1.key不要太長驳遵,盡量不要超過1024字節(jié)淫奔,這不僅消耗內(nèi)存,而且會降低查找的效率堤结;
2.key也不要太短唆迁,太短的話,key的可讀性會降低竞穷;
3.在一個項目中唐责,key最好使用統(tǒng)一的命名模式,例如user:10000:passwd瘾带。
字符串
strings類型是一個很基礎(chǔ)的數(shù)據(jù)類型
set mystr "hello world!" //設(shè)置字符串類型
get mystr //讀取字符串類型
字符串可以進(jìn)行數(shù)值操作
在遇到數(shù)值操作時鼠哥,redis會將字符串類型轉(zhuǎn)換成數(shù)值。由于INCR等指令本身就具有原子操作的特性看政,所以我們完全可以利用redis的INCR朴恳、INCRBY、DECR允蚣、DECRBY等指令來實現(xiàn)原子計數(shù)的效果
list
redis中的lists在底層實現(xiàn)上并不是數(shù)組于颖,而是鏈表。對于一個具有上百萬個元素的lists來說嚷兔,在頭部和尾部插入一個新元素森渐,其時間復(fù)雜度是常數(shù)級別的,比如用LPUSH在10個元素的lists頭部插入新元素谴垫,和在上千萬元素的lists頭部插入新元素的速度應(yīng)該是相同的章母。鏈表型lists的元素定位會比較慢,而數(shù)組型lists的元素定位就會快得多翩剪。
lists的常用操作包括LPUSH乳怎、RPUSH、LRANGE等。我們可以用LPUSH在lists的左側(cè)插入一個新元素蚪缀,用RPUSH在lists的右側(cè)插入一個新元素秫逝,用LRANGE命令從lists中指定一個范圍來提取元素。
127.0.0.1:6379> lpush tlist "1"
(integer) 1
127.0.0.1:6379> rpush tlist "2"
(integer) 2
127.0.0.1:6379> lpush tlist "0"
(integer) 3
127.0.0.1:6379> lrange tlist 0 1
1) "0"
2) "1"
127.0.0.1:6379> lrange tlist 0 -1
1) "0"
2) "1"
3) "2"
127.0.0.1:6379>
lists的應(yīng)用相實例:
1.我們可以利用lists來實現(xiàn)一個消息隊列询枚,而且可以確保先后順序违帆,不必像MySQL那樣還需要通過ORDER BY來進(jìn)行排序。
2.利用LRANGE還可以很方便的實現(xiàn)分頁的功能金蜀。
3.在博客系統(tǒng)中刷后,每片博文的評論也可以存入一個單獨(dú)的list中。
set
redis的集合渊抄,是一種無序的集合尝胆。集合相關(guān)的操作也很豐富,如添加新元素护桦、刪除已有元素含衔、取交集、取并集二庵、取差集等
127.0.0.1:6379> sadd tset "one"
(integer) 1
127.0.0.1:6379> sadd tset "two"
(integer) 1
127.0.0.1:6379> smembers tset
1) "one"
2) "two"
127.0.0.1:6379> sismember tset "one"
(integer) 1
127.0.0.1:6379> sismember tset "one1"
(integer) 0
127.0.0.1:6379>
sunion tset tset //求并集
zset
有序集合(sorted sets)贪染。有序集合中的每個元素都關(guān)聯(lián)一個序號(score),這便是排序的依據(jù)催享。我們都將redis中的有序集合叫做zsets杭隙,這是因為在redis中,有序集合相關(guān)的操作指令都是以z開頭的睡陪,比如zrange寺渗、zadd、zrevrange兰迫、zrangebyscore等等
127.0.0.1:6379> zadd tzset 1 "baidu"
(integer) 1
127.0.0.1:6379> zadd tzset 3 "360"
(integer) 1
127.0.0.1:6379> zrange tzset 0 -1
1) "baidu"
2) "360"
127.0.0.1:6379> zrange tzset 0 -1 withscores
1) "baidu"
2) "1"
3) "360"
4) "3"
127.0.0.1:6379>
hash
用于處理對象數(shù)據(jù)
127.0.0.1:6379> hmset user:001 username huben password 123456
OK
127.0.0.1:6379> hgetall user:001
1) "username"
2) "huben"
3) "password"
4) "123456"
127.0.0.1:6379> hset user:001 password 12345678
(integer) 0
127.0.0.1:6379> hgetall user:001
1) "username"
2) "huben"
3) "password"
4) "12345678"
127.0.0.1:6379>