String是redis最基本的類型,你能夠理解成與Memcached如出一轍的類型,一個key對應一個value。redis
String類型是二進制安全的。意思是redis的string能夠包含任何數據。好比jpg圖片或者序列化的對象 。編程
String類型是Redis最基本的數據類型,一個鍵最大能存儲512MB。安全
Demobash
在以上Demo中咱們使用了 Redis 的 SET 和 GET 命令。服務器
Redis hash 是一個鍵值對集合。數據結構
Redis hash是一個string類型的field和value的映射表,hash特別適合用於存儲對象。app
Demoide
以上Demo中 hash 數據類型存儲了包含用戶腳本信息的用戶對象。 Demo中咱們使用了 Redis HMSET, HEGTALL 命令,cityhash 爲鍵值。優化
每一個 hash 能夠存儲 232 - 1鍵值對(40多億)。ui
127.0.0.1:6379> hmset city:name bj sh sz gd hz tj OK 127.0.0.1:6379> hgetall city:name 1) "bj" 2) "sh" 3) "sz" 4) "gd" 5) "hz" 6) "tj"
Redis 列表是簡單的字符串列表,按照插入順序排序。你能夠添加一個元素導列表的頭部(左邊)或者尾部(右邊)。
Demo 展現list時,數據成倒敘,先進後出
127.0.0.1:6379> lpush list list1 list2 list3 3 127.0.0.1:6379> lrange list 0 2 list3 list2 list1
列表最多可存儲 232 - 1元素 (4294967295, 每一個列表可存儲40多億)。
Redis的Set是string類型的無序集合。
集合是經過哈希表實現的,因此添加,刪除,查找的複雜度都是O(1)。
sadd 命令:添加一個string元素到,key對應的set集合中,成功返回1,若是元素以及在集合中返回0,key對應的set不存在返回錯誤。
sadd key member
127.0.0.1:6379> sadd sett set1 set2 2 127.0.0.1:6379> smembers sett set1 set2
以上Demo中 "BEIJING" 添加了兩次,但根據集合內元素的惟一性,第二次插入的元素將被忽略。返回0
集合中最大的成員數爲 232 - 1 (4294967295, 每一個集合可存儲40多億個成員)。
Redis zset 和 set 同樣也是string類型元素的集合,且不容許重複的成員。不一樣的是每一個元素都會關聯一個double類型的分數。redis正是經過分數來爲集合中的成員進行從小到大的排序。
zset的成員是惟一的,但分數(score)卻能夠重複。
zadd 命令:添加元素到集合,元素在集合中存在則更新對應score
在建立時指定數據的下標
127.0.0.1:6379> zadd zset 0 zset1 1 zset2 2 zset3 3 127.0.0.1:6379> zrangebyscore zset 0 3 zset1 zset2 zset3
在通常的編程概念裏,流是一種主要用於優化內存的數據類型,它不須要一次性把大量數據,好比說大文件一次性讀取到內存再處理,能夠邊讀取邊處理,這樣能夠用少許內存就能夠處理大文件。
所以簡單地說,流是Redis一種新的數據結構,不須要讀取原有key的值,就能夠在此key中添加新內容的數據類型。
Stream能夠用更抽象的方式來記錄數據,好比說日誌。
Stream類型存儲的不是一個字符串,而是多個鍵值對,好比:
XADD mystream * -id temperature >
表明往mystream添加新的數據 { "sensor-id": 1234, "temperature": 19.8 }, *表明服務器端生成一個新的EntryID
1518951480106-0 是表明這組數據的EntryID值,能夠理解爲日誌中的行號。1518951480106是當前時間的毫秒值,0表明這一時侯的第幾個數據。能夠用XLEN查看總數據個數。
> XLEN mystream
(integer) 1
也能夠本身指定EntryID的值,如:
> XADD somestream 0-1 field value
0-1
> XADD somestream 0-2 foo bar
0-2
流是隻增不減的,因此若是entryid值比以前的小,則會報錯:
> XADD somestream 0-1 foo bar
(error) ERR The ID specified in XADD is equal or smaller than the target stream top item
能夠用 XRANGE/XREVRANGE 來查找,- + 表明查找全部的。
> XRANGE mystream - +
能夠指定EntryID的值範圍,能夠理解爲取某個時間段的日誌內容
> XRANGE mystream 1518951480106 1518951480107
1) 1) 1518951480106-0
2) 1) "sensor-id"
2) "1234"
3) "temperature"
4) "19.8"
能夠只取前兩個
> XRANGE mystream - + COUNT 21) 1) 1519073278252-0 2) 1) "foo" 2) "value_1"2) 1) 1519073279157-0 2) 1) "foo" 2) "value_2"