redis 基本資料型別(二)
Redis支援五種資料型別:string(字串),hash(雜湊),list(列表),set(集合)及zset(sorted set:有序集合)。
一.String(字串)
string是redis最基本的型別,你可以理解成與Memcached一模一樣的型別,一個key對應一個value。
string型別是二進位制安全的。意思是redis的string可以包含任何資料。比如jpg圖片或者序列化的物件 。
string型別是Redis最基本的資料型別,一個鍵最大能儲存512MB。
- redis 127.0.0.1:6379> SET name "redis.net.cn"
- OK
- redis 127.0.0.1:6379> GET name
在以上例項中我們使用了 Redis 的 SET 和 GET 命令。鍵為 name,對應的值為redis.net.cn。
注意:一個鍵最大能儲存512MB。
二.Hash(雜湊)
Redis hash 是一個鍵值對集合。
Redis hash是一個string型別的field和value的對映表,hash特別適合用於儲存物件。
- redis 127.0.0.1:6379> HMSET user:1 username redis.net.cn password redis.net.cn points 200
- OK
- redis 127.0.0.1:6379> HGETALL user:1
- 1) "username"
- 2) "redis.net.cn"
- 3) "password"
- 4) "redis.net.cn"
- 5) "points"
- 6) "200"
以上例項中 hash 資料型別儲存了包含使用者指令碼資訊的使用者物件。 例項中我們使用了 Redis HMSET, HEGTALL 命令,user:1 為鍵值。
每個 hash 可以儲存 232 - 1 鍵值對(40多億)。
三.List(列表)
Redis 列表是簡單的字串列表,按照插入順序排序。你可以新增一個元素導列表的頭部(左邊)或者尾部(右邊)。
- redis 127.0.0.1:6379> lpush redis.net.cn redis
- (integer) 1
- redis 127.0.0.1:6379> lpush redis.net.cn mongodb
- (integer) 2
- redis 127.0.0.1:6379> lpush redis.net.cn rabitmq
- (integer) 3
- redis 127.0.0.1:6379> lrange redis.net.cn 0 10
- 1) "rabitmq"
- 2) "mongodb"
- 3) "redis"
- redis 127.0.0.1:6379>
四.Set(集合)
Redis的Set是string型別的無序集合。
集合是通過雜湊表實現的,所以新增,刪除,查詢的複雜度都是O(1)。
sadd 命令
新增一個string元素到,key對應的set集合中,成功返回1,如果元素以及在集合中返回0,key對應的set不存在返回錯誤。
- redis 127.0.0.1:6379> sadd redis.net.cn redis
- (integer) 1
- redis 127.0.0.1:6379> sadd redis.net.cn mongodb
- (integer) 1
- redis 127.0.0.1:6379> sadd redis.net.cn rabitmq
- (integer) 1
- redis 127.0.0.1:6379> sadd redis.net.cn rabitmq
- (integer) 0
- redis 127.0.0.1:6379> smembers redis.net.cn
- 1) "rabitmq"
- 2) "mongodb"
五.zset(sorted set:有序集合)
Redis zset 和 set 一樣也是string型別元素的集合,且不允許重複的成員。
不同的是每個元素都會關聯一個double型別的分數。redis正是通過分數來為集合中的成員進行從小到大的排序。
zset的成員是唯一的,但分數(score)卻可以重複。
zadd 命令
新增元素到集合,元素在集合中存在則更新對應score
- redis 127.0.0.1:6379> zadd redis.net.cn 0 redis
- (integer) 1
- redis 127.0.0.1:6379> zadd redis.net.cn 0 mongodb
- (integer) 1
- redis 127.0.0.1:6379> zadd redis.net.cn 0 rabitmq
- (integer) 1
- redis 127.0.0.1:6379> zadd redis.net.cn 0 rabitmq
- (integer) 0
- redis 127.0.0.1:6379> ZRANGEBYSCORE redis.net.cn 0 1000
- 1) "redis"
- 2) "mongodb"
- 3) "rabitmq"