Try Redis : Redis 入門教程
開篇
Redis 是一種以索引值對(key-value)儲存資料的NoSQL資料庫。
索引值對儲存資料的本質是以某個鍵儲存某個值。之後你可以用這個鍵把儲存的值取出來。可以用SET
命令以鍵‘servername’儲存值‘fido’:
SET servername 'fido'
這樣,資料就被儲存了,之後可以使用GET
取出剛剛儲存的資料:
GET servername // 返回 "fido"
對於資料的操作,還有一些基本的命令,比如INCR
和DEL
。
INCR
用於原子地遞增一個數值資料。而DEL
則是刪除一個值。
SET connections 10
INCR connections // 返回 11
INCR connections // 返回 12
DEL connections
INCR connections // 返回 1
給值指定壽命
可以通過EXPIRE
設定一個值的存活時間,過了這個時間,該值就會被刪除。通過TTL
可以查看值的存活時間。
對於TTL
,
如果一個值沒有設定存活時間,那麼TTL
會返回-1
,表示這個值不會到期(這是值的預設壽命:長生);
如果一個值設定了存活時間,在存活時間內,對值使用TTL
會返回相應的生命剩餘時間;
如果對一個不存在的值或是已經超過存活時間(會被刪除)的值使用TTL
,會返回-2
。
注意,每使用SET
設定一個值時,該值的TTL
都會被重設為預設。
例子:
SET resource:lock 'Redis Demo 1'
TTL resource:lock // 返回 -1
EXPIRE resource:lock 120//設定存活時間為120秒
// 7秒後
TTL resource:lock // 返回 113
// 120秒以後
TTL resource:lock // 返回 -2
SET resource:lock 'Redis Demo 2'
TTL resource:lock // 返回 -1
列表(list)
Redis也支援一些複雜的/複合的(complex)資料結構。這裡第一個要說的是列表。列表是一系列有序的值的集合。
與列表互動的幾個重要方法有:RPUSH
, LPUSH
, LLEN
, LRANGE
, LPOP
和RPOP
。
RPUSH
和LPUSH
用於在列表的右端和左端插入資料。
LLEN
返回列表的長度。
LRANGE
返回一個子列表,它接收兩個參數,它們標識你所要的子序列的首尾元素在原序列的位置。
如果第二個元素是-1,則表示到序列的末尾。
LPOP
和RPOP
刪除並返回左右兩端的第一個元素(跟棧的pop一樣)。
例子(不用顯式的建立列表,在向一個不存在的列表中插入值時,列表會被自動建立,當列表中的最後一個元素被pop後,列表會被自動刪除):
RPUSH friends "Alice"// 建立一個列表friends並對其添加一個元素"Alice"
RPUSH friends "Bob"// 向friends添加元素"Bob"
LPUSH friends "Sam"// 向friends添加元素"Sam"
LRANGE friends 0-1// 返回 1) "Sam", 2) "Alice", 3) "Bob"
LRANGE friends 01// 返回 1) "Sam", 2) "Alice"
LRANGE friends 12// 返回 1) "Alice", 2) "Bob"
LLEN friends // 返回 3
LPOP friends // 返回 "Sam"
RPOP friends // 返回 "Bob"
LLEN friends // 返回 1
LRANGE friends 0-1// 返回 1) "Alice"
集合(set)()
集合跟列表類似,但是集合是無序的,且集合內元素唯一。
集合的幾個常用命令為:SADD
, SREM
, SISMEMBER
, SMEMBERS
和SUNION
。
例子(跟列表一樣,集合也不用顯式建立):
SADD superpowers "flight"
SADD superpowers "x-ray vision"
SADD superpowers "reflexes"
SREM superpowers "reflexes"
SISMEMBER superpowers "flight"// 返回 1
SISMEMBER superpowers "reflexes"// 返回 0
SMEMBERS 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)
集合是個很好用的資料結構,但是因為它是無序的,在某些情況下使用會不太方便。所以Redis 1.2 引入了有序集合。
有序集合的命令是Z
開頭,比如:有序集合的資料插入用的是ZADD
而不是SADD
。
有序集合跟常規集合類似,不過有序集合的每個值都有一個與其關聯的分數(associated score),這個分數用於排序集合內元素。
來一個例子:
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"
在例子中,第一個參數(出生年)是排序的分數,下面擷取索引值2到4的元素(從0開始):
ZRANGE hackers 24// 返回 1) "Claude Shannon", 2) "Alan Kay", 3) "Richard Stallman"
Hashes
Hashes
是字串欄位和字串值之間的映射。所以它是表示對象的最佳資料類型:
HSET user:1000 name "John Smith"
HSET user:1000 email "john.smith@example.com"
HSET user:1000 password "s3cret"
使用HGETALL
獲得儲存的資料(返回所有的欄位名和欄位值):
HGETALL user:1000
也可以把對象的屬性一次設定完:
HMSET user:1001 name "Mary Jones" password "hidden" email "mjones@example.com"
擷取某個特定欄位:
HGET user:1001 name // 返回 "Mary Jones"
數實值型別在hash欄位中也是很好用的,比如原子地步進一個數啥的都是可以的:
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
結束
到此為止,try redis教程結束。更多內容,請看下面連結:
- Redis Documentation
- Command Reference
- Implement a Twitter Clone in Redis
- Introduction to Redis Data Types
下面關於Redis的文章您也可能喜歡,不妨參考下:
Ubuntu 14.04下Redis安裝及簡單測試
Redis主從複製基本配置
Redis叢集明細文檔
Ubuntu 12.10下安裝Redis(圖文詳解)+ Jedis串連Redis
Redis系列-安裝部署維護篇
CentOS 6.3安裝Redis
Redis安裝部署學習筆記
Redis設定檔redis.conf 詳解
Redis 的詳細介紹:請點這裡
Redis 的:請點這裡
本文永久更新連結地址: