參考文章:
一、redis資料型別
·1.1 字串-strings
有人說,如果只使用redis中的字串型別,且不使用redis的持久化功能,那麼,redis就和memcache非常非常像了。這說明strins型別是乙個很基礎的資料型別,也是任何儲存系統都必須必備的資料型別。字串型別是二進位制安全的。
1、set
建立string。注意:此命令缺省會覆蓋已存在key的值。
用法:
set joan dora2、incrset joan dora nx -->如果存在key為joan時,則會失敗
set joan dora xx -- >成功
如果value是數字型別(當然也是string的),可以使用此命令,進行加法操作。
用法:
set counter 100在遇到數值操作時,redis會將字串型別轉換為數值。由於incr等指令本身就具有原子操作的特性,所以我們完全可以利用redis的incr、incrby、decr、decrby等指令來實現原子計數的效果。假如,在某種場景下有三個客戶端同時讀取了mynum的值(值為2),然後對其同時進行了加1操作,那麼,最後mynum的值一定是5。不少**都利用redis的這個原子特性來實現業務上的統計計數需求。incr counter -->101
incrby counter 49 -->150
3、get
取值,用法:
get joan -->dora1.2 列表-lists
rdis中的lists在底層實現並不是陣列,而是鍊錶,也就是對於乙個具有上百萬個元素的lists來說,在頭部和尾部插入乙個新元素,其時間複雜度是常數級別的。雖然lists有這樣的優勢,但同樣尤其弊端,那就是,鏈表型lists的元素定位會比較慢,而陣列型lists的元素定位就會快很多。
lpush、rpush、lrange
redis 的一種資料結構:雙端列表。lpush是將alue放到列表的頭部,rpush是將value放在列表的尾部。
用法:
rpush mylist a應用場景:rpush mylist b
lpush mylist first
lrange mylist 0 -1 -->0代表列表的第乙個 -1代表列表的最後乙個 -2 是倒數第二個
rpush mylist a b c d "joandora" --> 連續存放多個值
1、我們可以利用lists來實現乙個訊息佇列,而且可以確保先後順序,不必像mysql那樣還要通過order by來進行排序。
2、利用lrange可以很方便的實現分頁功能。
1.2.1 ltrim
對乙個列表進行修剪,讓列表只保留制定區間的元素。例如:ltrim 0 2:表示只保留list前三個元素,其他元素都刪除。
1.3 無序不重複集合 set
redis中的集合是一種無序的集合集合相關的操作也很豐富,如新增刪除已有元素,取交集、並集、差集等。
用法:
//向集合myset中加入乙個新元素"one"1.4 有序不重複集合 sorted set127.0.0.1:6379> sadd myset "one"
(integer) 1
127.0.0.1:6379> sadd myset "two"
(integer) 1
//列出集合myset中的所有元素
127.0.0.1:6379> smembers myset
1) "one"
2) "two"
//判斷元素1是否在集合myset中,返回1表示存在
127.0.0.1:6379> sismember myset "one"
(integer) 1
//判斷元素3是否在集合myset中,返回0表示不存在
127.0.0.1:6379> sismember myset "three"
(integer) 0
//新建乙個新的集合yourset
127.0.0.1:6379> sadd yourset "1"
(integer) 1
127.0.0.1:6379> sadd yourset "2"
(integer) 1
127.0.0.1:6379> smembers yourset
2) "2"
//對兩個集合求並集
127.0.0.1:6379> sunion myset yourset
1) "1"
2) "one"
3) "2"
4) "two"
有序集合中的每個元素都關聯乙個序號(score),這便是排序的依據。很多時候,我們都將redis中的有序集合叫做zsets。這是因為在redis中,有序集合相關的操作指令都是以z開頭,比如:zrange、zadd等。
zadd 1 a --> 1是排序1.5 雜湊-hasheszrange myset 0 -1 --> 檢視集合元素
zrevrange myset 0 -1 --> 檢視集合元素,反向
zrange myset 0 -1 withscores --> 列印元素的時候,間隔列印出序號
雜湊是從redis-2.0版本之後才有的資料結構。hashes存的是字串和字串值之間的對映,比如乙個使用者要儲存其全名、姓氏、年齡等等,就很適用hashes。
hmset key field value --> 將多個field-vaue存放到key中二、其他操作命令hget webset yahoo --> 能查,不過結果為空
hincrby user age 10 --> 給hash中age加10
2.1、mset、mget
可同時完成多個key-value訪問值
用法:
mset a 10 b 20 c 302.2、delmget a b c
刪除key-value
用法:del mylist
2.3、pop
取值,和push類似,也是分左和右。
用法:rpop mylist
lpop mylist
(二)redis的資料型別
redis可以儲存資料,但是不加限定,這裡的資料指的是個什麼樣的資料就成了疑問,因為面對現實社會中存在的資訊,不同語言或者不同工具,會把它們劃分成不同的資料型別,每種資料型別甚至又有自己獨特的表示方式。所以引出了redis這個工具中可以容納的資料型別。redis的資料型別可以分為字串 雜湊表 鍊錶 ...
redis的資料型別(二)string型別
下面講解value,value包括string list set sorted set hash string是最基本的型別,而且stirng型別是二進位制安全的。意思是redis的string可以包含任何資料。比如jpg或者序列化的物件。從內部實現來看其實string可以看做byte陣列,最大上限...
redis資料型別
redis對比與memcached 最大的優勢就是支援更多靈活的資料結構,豐富的資料操作 redis現支援的資料型別有 字串,列表,集合,雜湊,有序集合 1.字串 普通資料型別 2.列表 簡單的字串列表,按照插入順序排序。你可以新增乙個元素到列表的頭部 左邊 或者尾部 右邊 適用於 對資料頭尾操作頻...