Redis是一個開源的使用ANSI C語言編寫、遵守BSD協(xié)議、支持網(wǎng)絡(luò)、可基于內(nèi)存亦可持久化的日志型、Key-Value數(shù)據(jù)庫,并提供多種語言的API,它通常被稱為數(shù)據(jù)結(jié)構(gòu)服務(wù)器,支持五種數(shù)據(jù)類型:string(字符串),hash(哈希),list(列表),set(集合)和zset(sorted set:有序集合)。?
string
string是redis最基本的類型,可以理解為與Memcached一模一樣的類型,一個key對應(yīng)一個value。string類型是二進(jìn)制安全的,即redis的string可以包含任何數(shù)據(jù)。比如jpg圖片或者序列化的對象,string類型是Redis最基本的數(shù)據(jù)類型,一個鍵最大能存儲512MB。
redis 127.0.0.1:6379>?SET name "wunian"
OK
redis 127.0.0.1:6379>?GET name
"wunian"
hash
Redis hash 是一個鍵值(key=>value)對集合,也是一個 string 類型的 field 和 value 的映射表,hash 特別適合用于存儲對象,每個hash 可以存儲 2?^32-1 鍵值對(40多億)。
redis>?HMSET hash field1 "Hello"?field2 "Redis"
"OK"
redis>?HGET hash field1
"Hello"
redis>?HGET hash field2
"Redis"
list
Redis list列表是簡單的字符串列表,按照插入順序排序。你可以添加一個元素到列表的頭部(左邊)或者尾部(右邊),列表最多可存儲2^32?- 1 元素 (4294967295, 每個列表可存儲40多億)。
redis 127.0.0.1:6379>?lpush db redis
(integer)?1
redis 127.0.0.1:6379>?lpush db mongodb
(integer)?2
redis 127.0.0.1:6379>?lpush db rabitmq
(integer)?3
redis 127.0.0.1:6379>?lrange db 0?10
1) "rabitmq"
2) "mongodb"
3) "redis"
set
Redis set是string類型的無序集合,集合是通過哈希表實現(xiàn)的,添加,刪除,查找的復(fù)雜度都是O(1),添加一個string 元素到 key 對應(yīng)的 set 集合中,成功返回1,如果元素已經(jīng)在集合中返回 0,如果 key 對應(yīng)的 set 不存在則返回錯誤,集合中最大的成員數(shù)為2^32?- 1(4294967295, 每個集合可存儲40多億個成員)。
redis 127.0.0.1:6379>?sadd db redis
(integer)?1
redis 127.0.0.1:6379>?sadd db mongodb
(integer)?1
redis 127.0.0.1:6379>?sadd ?db?rabitmq
(integer)?1
redis 127.0.0.1:6379>?sadd ?db?rabitmq
(integer)?0
redis 127.0.0.1:6379>?smembers ?db?
1) "redis"
2) "rabitmq"
3)?"mongodb"
zset
Redis zset和set 一樣也是string類型元素的集合,且不允許重復(fù)的成員,不同的是每個元素都會關(guān)聯(lián)一個double類型的分?jǐn)?shù)。redis正是通過分?jǐn)?shù)來為集合中的成員進(jìn)行從小到大的排序,zset的成員是唯一的,但分?jǐn)?shù)(score)卻可以重復(fù)。
redis 127.0.0.1:6379>?zadd db 0?redis
(integer)?1
redis 127.0.0.1:6379>?zadd db 0?mongodb
(integer)?1
redis 127.0.0.1:6379>?zadd db 0?rabitmq
(integer)?1
redis 127.0.0.1:6379>?zadd db 0?rabitmq
(integer)?0
redis 127.0.0.1:6379>?>?ZRANGEBYSCORE db 0?1000
1) "mongodb"
2) "rabitmq"
3)?"redis"