redis數(shù)據(jù)類(lèi)型

Redis數(shù)據(jù)類(lèi)型

Redis支持5中數(shù)據(jù)類(lèi)型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。

String(字符串)

string是redis最基本的類(lèi)型,可以理解成與Memcached一模一樣的類(lèi)型,一個(gè)key對(duì)應(yīng)一個(gè)value。
string類(lèi)型是二進(jìn)制安全的,意思是redis的string可以包含任何數(shù)據(jù),比如jpg圖片或者序列化的對(duì)象。
string類(lèi)型是Redis最基本的數(shù)據(jù)類(lèi)型,一個(gè)鍵最大能存儲(chǔ)512MB。

實(shí)例
redis 127.0.0.1:6379> SET name "runoob"
OK
redis 127.0.0.1:6379> GET name
"runoob"

在以上實(shí)例中我們使用了Redis的set和get命令,鍵為name,對(duì)應(yīng)的值為runoob。
注意:一個(gè)鍵最大能存儲(chǔ)512MB

Hash(哈希)

Redis hash是一個(gè)鍵名對(duì)集合。
Redis hash是一個(gè)string類(lèi)型的filed和value的映射表,hash特別適合用于存儲(chǔ)對(duì)象。

實(shí)例
127.0.0.1:6379> HMSET user:1 username runoob password runoob points 200
OK
127.0.0.1:6379> HGETALL user:1
1) "username"
2) "runoob"
3) "password"
4) "runoob"
5) "points"
6) "200"

以上實(shí)例中hash數(shù)據(jù)類(lèi)型存儲(chǔ)了包含用戶腳本信息的用戶對(duì)項(xiàng)目實(shí)例中我們使用Redis的hmset、hgetall命令,user:1為鍵值。
每個(gè)hash可以存儲(chǔ)2^32 -1鍵值對(duì)(40多億)。

List(列表)

Redis列表是簡(jiǎn)單的字符串列表,按照插入順序排序,你可以添加一個(gè)元素噠哦列表的頭部(左邊)或者尾部(右邊)

實(shí)例
redis 127.0.0.1:6379> lpush runoob redis
(integer) 1
redis 127.0.0.1:6379> lpush runoob mongodb
(integer) 2
redis 127.0.0.1:6379> lpush runoob rabitmq
(integer) 3
redis 127.0.0.1:6379> lrange runoob 0 10
1) "rabitmq"
2) "mongodb"
3) "redis"
redis 127.0.0.1:6379>

列表最多可以存儲(chǔ)2^32 -1元素(4294967295,每個(gè)列表可存儲(chǔ)40多億)

Set(集合)

Redis的Set是string類(lèi)型的無(wú)序集合
集合使用過(guò)哈希表實(shí)現(xiàn)的,所以添加,刪除,查找的復(fù)雜度都是0(1)。

asdd命令

添加一個(gè)string元素到key對(duì)應(yīng)的set集合中,成功返回1,如果元素已經(jīng)在集合中返回0,對(duì)應(yīng)的set不存在返回錯(cuò)誤。

sadd key member
實(shí)例
redis 127.0.0.1:6379> sadd runoob redis
(integer) 1
redis 127.0.0.1:6379> sadd runoob mongodb
(integer) 1
redis 127.0.0.1:6379> sadd runoob rabitmq
(integer) 1
redis 127.0.0.1:6379> sadd runoob rabitmq
(integer) 0
redis 127.0.0.1:6379> smembers runoob

1) "rabitmq"
2) "mongodb"
3) "redis"

注意:以上實(shí)例中rabitmq添加了兩次,但根據(jù)集合內(nèi)元素的唯一性,第二次插入元素將被忽略
集合中最大成員數(shù)是2^32-1(每個(gè)集合可存儲(chǔ)40多億個(gè)成員)

zset(sorted set:有序集合)

Redis zset和set一樣也是string類(lèi)型元素的集合,切不允許重復(fù)的成員
不同的是每個(gè)元素都會(huì)關(guān)聯(lián)一個(gè)double類(lèi)型的分?jǐn)?shù),redis正是通過(guò)分?jǐn)?shù)來(lái)為集合中的成員進(jìn)行從小到大的排序
zset的成員是唯一的但是分?jǐn)?shù)(score)確實(shí)可以重復(fù)的

zadd命令

添加元素到集合,元素在集合中存在則更新對(duì)應(yīng)的score

zadd key score member
實(shí)例
redis 127.0.0.1:6379> zadd runoob 0 redis
(integer) 1
redis 127.0.0.1:6379> zadd runoob 0 mongodb
(integer) 1
redis 127.0.0.1:6379> zadd runoob 0 rabitmq
(integer) 1
redis 127.0.0.1:6379> zadd runoob 0 rabitmq
(integer) 0
redis 127.0.0.1:6379> ZRANGEBYSCORE runoob 0 1000

1) "redis"
2) "mongodb"
3) "rabitmq"
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容