Try Redis : Redis 入门教程
開(kāi)篇
Redis 是一種以鍵值對(duì)(key-value)存儲(chǔ)數(shù)據(jù)的NoSQL數(shù)據(jù)庫(kù)。
鍵值對(duì)存儲(chǔ)數(shù)據(jù)的本質(zhì)是以某個(gè)鍵存儲(chǔ)某個(gè)值。之后你可以用這個(gè)鍵把存儲(chǔ)的值取出來(lái)。可以用SET命令以鍵‘servername’存儲(chǔ)值‘fido’:
SET servername 'fido'這樣,數(shù)據(jù)就被存儲(chǔ)了,之后可以使用GET取出剛剛存儲(chǔ)的數(shù)據(jù):
GET servername // 返回 "fido"對(duì)于數(shù)據(jù)的操作,還有一些基本的命令,比如INCR和DEL。
INCR 用于原子地遞增一個(gè)數(shù)值數(shù)據(jù)。而DEL則是刪除一個(gè)值。
SET connections 10 INCR connections // 返回 11 INCR connections // 返回 12 DEL connections INCR connections // 返回 1給值指定壽命
可以通過(guò)EXPIRE設(shè)置一個(gè)值的存活時(shí)間,過(guò)了這個(gè)時(shí)間,該值就會(huì)被刪除。通過(guò)TTL可以查看值的存活時(shí)間。
對(duì)于TTL,
如果一個(gè)值沒(méi)有設(shè)置存活時(shí)間,那么TTL會(huì)返回-1,表示這個(gè)值不會(huì)過(guò)期(這是值的默認(rèn)壽命:長(zhǎng)生);
如果一個(gè)值設(shè)置了存活時(shí)間,在存活時(shí)間內(nèi),對(duì)值使用TTL會(huì)返回相應(yīng)的生命剩余時(shí)間;
如果對(duì)一個(gè)不存在的值或是已經(jīng)超過(guò)存活時(shí)間(會(huì)被刪除)的值使用TTL,會(huì)返回-2。
注意,每使用SET設(shè)置一個(gè)值時(shí),該值的TTL都會(huì)被重置為默認(rèn)。
例子:
SET resource:lock 'Redis Demo 1' TTL resource:lock // 返回 -1EXPIRE resource:lock 120 //設(shè)置存活時(shí)間為120秒// 7秒后 TTL resource:lock // 返回 113 // 120秒以后 TTL resource:lock // 返回 -2SET resource:lock 'Redis Demo 2' TTL resource:lock // 返回 -1列表(list)
Redis也支持一些復(fù)雜的/復(fù)合的(complex)數(shù)據(jù)結(jié)構(gòu)。這里第一個(gè)要說(shuō)的是列表。列表是一系列有序的值的集合。
與列表交互的幾個(gè)重要方法有:RPUSH, LPUSH, LLEN, LRANGE, LPOP和RPOP。
RPUSH和LPUSH用于在列表的右端和左端插入數(shù)據(jù)。
LLEN返回列表的長(zhǎng)度。
LRANGE返回一個(gè)子列表,它接收兩個(gè)參數(shù),它們標(biāo)識(shí)你所要的子序列的首尾元素在原序列的位置。
如果第二個(gè)元素是-1,則表示到序列的末尾。LPOP和RPOP刪除并返回左右兩端的第一個(gè)元素(跟棧的pop一樣)。
例子(不用顯式的創(chuàng)建列表,在向一個(gè)不存在的列表中插入值時(shí),列表會(huì)被自動(dòng)創(chuàng)建,當(dāng)列表中的最后一個(gè)元素被pop后,列表會(huì)被自動(dòng)刪除):
RPUSH friends "Alice" // 創(chuàng)建一個(gè)列表friends并對(duì)其添加一個(gè)元素"Alice" RPUSH friends "Bob" // 向friends添加元素"Bob" LPUSH friends "Sam" // 向friends添加元素"Sam"LRANGE friends 0 -1 // 返回 1) "Sam", 2) "Alice", 3) "Bob" LRANGE friends 0 1 // 返回 1) "Sam", 2) "Alice" LRANGE friends 1 2 // 返回 1) "Alice", 2) "Bob"LLEN friends // 返回 3 LPOP friends // 返回 "Sam" RPOP friends // 返回 "Bob"LLEN friends // 返回 1 LRANGE friends 0 -1 // 返回 1) "Alice"集合(set)
集合跟列表類(lèi)似,但是集合是無(wú)序的,且集合內(nèi)元素唯一。
集合的幾個(gè)常用命令為:SADD, SREM, SISMEMBER, SMEMBERS和SUNION。
SADD 向集合中添加值。
SREM 從集合中刪除給定的值。
SISMEMBER 接收一個(gè)參數(shù),用以判斷該參數(shù)的值是否在集合中,若在集合中返回1,否則返回0。
如果不給參數(shù),則返回整個(gè)列表。SMEMBERS 返回集合中所有元素。
SUNION 合并兩個(gè)集合。
例子(跟列表一樣,集合也不用顯式創(chuàng)建):
SADD superpowers "flight" SADD superpowers "x-ray vision" SADD superpowers "reflexes"SREM superpowers "reflexes"SISMEMBER superpowers "flight" // 返回 1 SISMEMBER superpowers "reflexes" // 返回 0SMEMBERS superpowers // 返回 1) "flight", 2) "x-ray vision"SADD birdpowers "pecking" SADD birdpowers "flight" SUNION superpowers birdpowers // 返回 1) "pecking", 2) "x-ray vision", 3) "flight"有序集合(Sorted Sets)
集合是個(gè)很好用的數(shù)據(jù)結(jié)構(gòu),但是因?yàn)樗菬o(wú)序的,在某些情況下使用會(huì)不太方便。所以Redis 1.2 引入了有序集合。
有序集合的命令是Z開(kāi)頭,比如:有序集合的數(shù)據(jù)插入用的是ZADD而不是SADD。
有序集合跟常規(guī)集合類(lèi)似,不過(guò)有序集合的每個(gè)值都有一個(gè)與其關(guān)聯(lián)的分?jǐn)?shù)(associated score),這個(gè)分?jǐn)?shù)用于排序集合內(nèi)元素。
來(lái)一個(gè)例子:
ZADD hackers 1940 "Alan Kay" ZADD hackers 1906 "Grace Hopper" ZADD hackers 1953 "Richard Stallman" ZADD hackers 1965 "Yukihiro Matsumoto" ZADD hackers 1916 "Claude Shannon" ZADD hackers 1969 "Linus Torvalds" ZADD hackers 1957 "Sophie Wilson" ZADD hackers 1912 "Alan Turing"在例子中,第一個(gè)參數(shù)(出生年)是排序的分?jǐn)?shù),下面獲取索引值2到4的元素(從0開(kāi)始):
ZRANGE hackers 2 4 // 返回 1) "Claude Shannon", 2) "Alan Kay", 3) "Richard Stallman"Hashes
Hashes 是字符串字段和字符串值之間的映射。所以它是表示對(duì)象的最佳數(shù)據(jù)類(lèi)型:
HSET user:1000 name "John Smith" HSET user:1000 email "john.smith@example.com" HSET user:1000 password "s3cret"使用HGETALL獲得存儲(chǔ)的數(shù)據(jù)(返回所有的字段名和字段值):
HGETALL user:1000也可以把對(duì)象的屬性一次設(shè)置完:
HMSET user:1001 name "Mary Jones" password "hidden" email "mjones@example.com"獲取某個(gè)特定字段:
HGET user:1001 name // 返回 "Mary Jones"數(shù)值類(lèi)型在hash字段中也是很好用的,比如原子地步進(jìn)一個(gè)數(shù)啥的都是可以的:
HSET user:1000 visits 10 HINCRBY user:1000 visits 1 // 返回 11 HINCRBY user:1000 visits 10 // 返回 21 HDEL user:1000 visits HINCRBY user:1000 visits 1 // 返回 1結(jié)束
本文翻譯自 Try Redis。
到此為止,try redis教程結(jié)束。更多內(nèi)容,請(qǐng)看下面鏈接:
Redis Documentation
Command Reference
Implement a Twitter Clone in Redis
Introduction to Redis Data Types
總結(jié)
以上是生活随笔為你收集整理的Try Redis : Redis 入门教程的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 大数据计算平台Spark内核全面解读
- 下一篇: EF使用CodeFirst方式生成数据库