Redis數(shù)據(jù)類型
Redis支持5中數(shù)據(jù)類型:string(字符串)竟贯,hash(哈希),list(列表)看峻,set(集合)及zset(sorted set:有序集合)房轿。
String(字符串)
string是redis最基本的類型,可以理解成與Memcached一模一樣的類型栽渴,一個(gè)key對(duì)應(yīng)一個(gè)value尖坤。
string類型是二進(jìn)制安全的,意思是redis的string可以包含任何數(shù)據(jù)闲擦,比如jpg圖片或者序列化的對(duì)象慢味。
string類型是Redis最基本的數(shù)據(jù)類型场梆,一個(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類型的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ù)類型存儲(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類型的無(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類型元素的集合,切不允許重復(fù)的成員
不同的是每個(gè)元素都會(huì)關(guān)聯(lián)一個(gè)double類型的分?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"