Redis
支持五種數(shù)據(jù)類型:
string
(字符串),
hash
(哈希),
list
(列表),
set
(集合)及
zset(sorted set
:有序集合
)
。
String
(字符串)
string
是
redis
最基本的類型,你可以理解成與
Memcached
一模一樣的類型,一個(gè)
key
對應(yīng)一個(gè)
value
。
string
類型是二進(jìn)制安全的。意思是
redis
的
string
可以包含任何數(shù)據(jù)。比如
jpg
圖片或者序列化的對象 。
string
類型是
Redis
最基本的數(shù)據(jù)類型,一個(gè)鍵最大能存儲(chǔ)
512MB
。
實(shí)例
redis 127.0.0.1:6379> SET name "ziqiangxuetang.com"OKredis 127.0.0.1:6379> GET name
"ziqiangxuetang.com"
在以上實(shí)例中我們使用了 Redis
的
SET
和
GET
命令。鍵為
name
,對應(yīng)的值為
ziqiangxuetang.com
。
注意:一個(gè)鍵最大能存儲(chǔ)512MB
。
Hash
(哈希)
Redis hash
是一個(gè)鍵值對集合。
Redis hash
是一個(gè)
string
類型的
field
和
value
的映射表,
hash
特別適合用于存儲(chǔ)對象。
實(shí)例
redis 127.0.0.1:6379> HMSET user:1 username ziqiangxuetang.com password ziqiangxuetang.com points200OKredis 127.0.0.1:6379> HGETALL user:1
"username"
"ziqiangxuetang.com"
"password"
"ziqiangxuetang.com"
"points"
"200"redis 127.0.0.1:6379>
以上實(shí)例中 hash
數(shù)據(jù)類型存儲(chǔ)了包含用戶腳本信息的用戶對象。 實(shí)例中我們使用了
Redis HMSET, HEGTALL
命令,
user:1
為鍵值。
每個(gè) hash
可以存儲(chǔ)
232 - 1
鍵值對(
40
多億)。
List
(列表)
Redis
列表是簡單的字符串列表,按照插入順序排序。你可以添加一個(gè)元素導(dǎo)列表的頭部(左邊)或者尾部(右邊)。
實(shí)例
redis 127.0.0.1:6379> lpush ziqiangxuetang.com redis
(integer) 1redis 127.0.0.1:6379> lpush ziqiangxuetang.com mongodb
(integer) 2redis 127.0.0.1:6379> lpush ziqiangxuetang.com rabitmq
(integer) 3redis 127.0.0.1:6379> lrange ziqiangxuetang.com 0 10
1) "rabitmq"
2) "mongodb"
3) "redis"redis 127.0.0.1:6379>
列表最多可存儲(chǔ) 232 - 1
元素
(4294967295,
每個(gè)列表可存儲(chǔ)
40
多億
)
。
Set
(集合)
Redis
的
Set
是
string
類型的無序集合。
集合是通過哈希表實(shí)現(xiàn)的,所以添加,刪除,查找的復(fù)雜度都是O(1)
。
sadd
命令
添加一個(gè)string
元素到
,key
對應(yīng)的
set
集合中,成功返回
1,
如果元素以及在集合中返回
0,key
對應(yīng)的
set
不存在返回錯(cuò)誤。
sadd key member
實(shí)例
redis 127.0.0.1:6379> sadd ziqiangxuetang.com redis
(integer) 1redis 127.0.0.1:6379> sadd ziqiangxuetang.com mongodb
(integer) 1redis 127.0.0.1:6379> sadd ziqiangxuetang.com rabitmq
(integer) 1redis 127.0.0.1:6379> sadd ziqiangxuetang.com rabitmq
(integer) 0redis 127.0.0.1:6379> smembers ziqiangxuetang.com
"rabitmq"
"mongodb"
"redis"
注意:以上實(shí)例中 rabitmq
添加了兩次,但根據(jù)集合內(nèi)元素的唯一性,第二次插入的元素將被忽略。
集合中最大的成員數(shù)為 232 - 1 (4294967295,
每個(gè)集合可存儲(chǔ)
40
多億個(gè)成員
)
。
zset(sorted set
:有序集合
)
Redis zset
和
set
一樣也是
string
類型元素的集合
,
且不允許重復(fù)的成員。
不同的是每個(gè)元素都會(huì)關(guān)聯(lián)一個(gè)double
類型的分?jǐn)?shù)。
redis
正是通過分?jǐn)?shù)來為集合中的成員進(jìn)行從小到大的排序。
zset
的成員是唯一的
,
但分?jǐn)?shù)
(score)
卻可以重復(fù)。
zadd
命令
添加元素到集合,元素在集合中存在則更新對應(yīng)score
zadd key score member
實(shí)例
redis 127.0.0.1:6379> zadd ziqiangxuetang.com 0 redis
(integer) 1redis 127.0.0.1:6379> zadd ziqiangxuetang.com 0 mongodb
(integer) 1redis 127.0.0.1:6379> zadd ziqiangxuetang.com 0 rabitmq
(integer) 1redis 127.0.0.1:6379> zadd ziqiangxuetang.com 0 rabitmq
(integer) 0redis 127.0.0.1:6379> ZRANGEBYSCORE ziqiangxuetang.com 0 1000
"redis"
"mongodb"
"rabitmq"
來源:網(wǎng)絡(luò)