標籤:redis
REmote DIctionary Server(Redis) 是一個由Salvatore Sanfilippo寫的key-value儲存系統
127.0.0.1:6379> set mykey somevalueOK127.0.0.1:6379> get mykey"somevalue"127.0.0.1:6379>
可以SET和GET命令來建立和檢索strings。注意,set命令將取代現有的任何已經存在的key。SET命令還有一個提供附加參數的選項,我們能夠讓SET命令只有在沒有相同key的情況下成功,反之亦然,可以讓SET命令在有相同key值得情況下成功。
127.0.0.1:6379> set mykey newval nx(nil)127.0.0.1:6379> get mykey"somevalue"127.0.0.1:6379> 127.0.0.1:6379> set mykey newval xxOK127.0.0.1:6379> get mykey"newval"
string是Redis的基本類型,也可以對其進行一些有趣的操作,例如加法器:
127.0.0.1:6379> set counter 100OK127.0.0.1:6379> incr counter(integer) 101127.0.0.1:6379> incr counter(integer) 102127.0.0.1:6379> incrby counter 50(integer) 152
INCR命令讓the value 成為一個整數,運行一次INCR便+1。INCRBY命令便是一個加法運算。類似的命令如減法運算為: DECR and DECRBY。
Redis可以運用MSET and MGET 命令完成一次性的完成多個key-value的對應關係,使用MGET命令,Redis返回一個value數組
127.0.0.1:6379> mset a 10 b 20 c 30OK127.0.0.1:6379> mget a b c1) "10"2) "20"3) "30"127.0.0.1:6379>
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Redis列表是簡單的字串列表,按照插入順序排序。你可以添加一個元素導列表的頭部(左邊)或者尾部(右邊) LPUSH 命令插入一個新的元素導頭部, 而 RPUSH插入一個新元素導尾部.當一個這兩個操作在一個空的Key上被執行的時候一個新的列表被建立。相似的,如果一個列表操作清空一個列表那麼對應的key將被從key空間刪除。這是非常方便的語義,因為他們被調用使用一個空列表完全就像他們被調用時使用一個不存在的鍵值(可以)做為參數。
PUSH一類的命令的返回值為list的長度。一些類表操作和結果的例子:
127.0.0.1:6379> rpush mylist A(integer) 1127.0.0.1:6379> rpush mylist B(integer) 2127.0.0.1:6379> lpush mylist first(integer) 3127.0.0.1:6379> lrange mylist 0 -11) "first"2) "A"3) "B"127.0.0.1:6379>
注意:LRANGE 利用了兩個檢索值,0表示list的開頭第一個,-1表示list的倒數第一個,即最後一個。-2則便是list的倒數第二個,以此類推。
這些命令都是可變的命令,也就是說你可以一次加入多個元素放入list。
127.0.0.1:6379> RPUSH mylist 1 2 3 4 5 "hello"(integer) 9127.0.0.1:6379> lrange mylist 0 -11) "first"2) "A"3) "B"4) "1"5) "2"6) "3"7) "4"8) "5"9) "hello"127.0.0.1:6379>
在Redis的命令操作中,還有一類重要的操作:POP,取出list元素。和PUSH操作類似,POP命令可以選擇不同的方向取出元素.POP命令返回值為取出的元素。
127.0.0.1:6379> rpush mylist a b c (integer) 3127.0.0.1:6379> LRANGE mylist 0 -1 1) "a"2) "b"3) "c"127.0.0.1:6379> rpop mylist"c"127.0.0.1:6379> LRANGE mylist 0 -1 1) "a"2) "b"127.0.0.1:6379> lpop mylist"a"127.0.0.1:6379> LRANGE mylist 0 -1 1) "b"127.0.0.1:6379>
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Redis Hashes是字串欄位和字串值之間的映射,因此他們是展現對象的完美資料類型。 (例如:一個有名,姓,年齡等等屬性的使用者):一個帶有一些欄位的hash僅僅需要一塊很小的空間儲存,因此你可以儲存數以百萬計的對象在一個小的Redis執行個體中。 雜湊主要用來表現對象,他們有能力儲存很多個物件,因此你可以將雜湊用於許多其他的任務。
127.0.0.1:6379> hmset user:1000 username liubo age 20 money 100 //建立記錄,相等於資料庫表一條記錄OK127.0.0.1:6379> hget user:1000 username//擷取值,記錄的欄位名對應的值"liubo"127.0.0.1:6379> hget user:1000 money"100"
HMSET命令設定一個多域的hash表,HGET命令擷取指定的單域,HGETALL命令擷取指定key的所有資訊。HMGET類似於HGET,只是返回一個value數組。
127.0.0.1:6379> hmget user:1000 username age money1) "liubo"2) "20"3) "100"127.0.0.1:6379> hgetall user:10001) "username"2) "liubo"3) "age"4) "20"5) "money"6) "100"127.0.0.1:6379>
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
無序集合
Redis 集合(Set)是一個無序的字串集合. 你可以以O(1)的時間複雜度 (無論集合中有多少元素時間複雜度都是常量)完成添加,刪除,以及測試元素是否存在。 Redis 集合擁有令人滿意的不允許包含相同成員的屬性。多次添加相同的元素,最終在集合裡只會有一個元素。 實際上說這些就是意味著在添加元素的時候無須檢測元素是否存在。 一個Redis集合的非常有趣的事情是他支援一些服務端的命令從現有的集合出發去進行集合運算,因此你可以在非常短的時間內進行合并(unions), 求交集(intersections),找出不同的元素(differences of sets)。
127.0.0.1:6379> sadd myset 1 2 3 (integer) 3127.0.0.1:6379> SMEMBERS myset1) "1"2) "2"3) "3"127.0.0.1:6379>
SADD命令產生一個無序集合,返回集合的元素個數。SMEMBER用於查看集合。
SISMEMBER用於查看集合是否存在,匹配項包括集合名和元素個數。匹配成功返回1,匹配失敗返回0.
127.0.0.1:6379> SISMEMBER myset 3(integer) 1127.0.0.1:6379> SISMEMBER myset 30(integer) 0
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
有序集合
Redis有序集合與普通集合非常相似,是一個沒有重複元素的字串集合。不同之處是有序集合的沒有成員都關聯了一個評分,這個評分被用來按照從最低分到最高分的方式排序集合中的成員。集合的成員是唯一的,但是評分可以是重複了。 使用有序集合你可以以非常快的速度(O(log(N)))添加,刪除和更新元素。因為元素是有序的, 所以你也可以很快的根據評分(score)或者次序(position)來擷取一個範圍的元素。訪問有序集合的中間元素也是非常快的,因此你能夠使用有序集合作為一個沒有重複成員的智能列表。在有序集合中,你可以很快捷的訪問一切你需要的東西:有序的元素,快速的存在性測試,快速存取集合的中間元素! 簡而言之使用有序集合你可以做完成許多對效能有極端要求的任務,而那些任務使用其他類型的資料庫真的是很難完成的。
ZADD與SADD類似,但是在元素之前多了一個參數,這個參數便是用於排序的。形成一個有序的集合。
查看集合ZRANGE是查看正序的集合,ZREVRANGE是查看反序的集合。0表示集合第一個元素,-1表示集合的倒數第一個元素。
127.0.0.1:6379> zadd myzset 20 liubo(integer) 1127.0.0.1:6379> zadd myzset 22 hello(integer) 1127.0.0.1:6379> zadd myzset 20 nice (integer) 1127.0.0.1:6379> zadd myzset 0.1 welcome(integer) 1127.0.0.1:6379> ZRANGE myzset 0 -1 1) "welcome"2) "liubo"3) "nice"4) "hello"127.0.0.1:6379> ZREVRANGE myzset 0 -11) "hello"2) "nice"3) "liubo"4) "welcome"127.0.0.1:6379>
使用WITHSCORES 參數返回記錄值。
127.0.0.1:6379> ZREVRANGE myzset 0 2 withscores //返回分數最高的前三名, 顯示分數參數1) "hello"2) "22"3) "nice"4) "20"5) "liubo"6) "20"127.0.0.1:6379>
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。
Redis 基本類型