2.Redis的數據類型
Redis 數據類型
Redis支持五種數據類型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。
String(字符串)
string是redis最基本的類型,你可以理解成與Memcached一模一樣的類型,一個key對應一個value。
string類型是二進制安全的。意思是redis的string可以包含任何數據。比如jpg圖片或者序列化的對象 。
string類型是Redis最基本的數據類型,一個鍵最大能存儲512MB。
127.0.0.1:6379> set name ‘kevin‘ OK 127.0.0.1:6379> get name "kevin"
在以上實例中我們使用了 Redis 的 SET 和 GET 命令。鍵為 name,對應的值為 kevin。
註意:一個鍵最大能存儲512MB。
Hash(哈希)
Redis hash 是一個鍵值(key=>value)對集合。
Redis hash是一個string類型的field和value的映射表,hash特別適合用於存儲對象。
hmset 可以設置hash存儲.
hmget 可以讀取多個值.
hget 只能讀取一個值
127.0.0.1:6379> hmset helloworld hello ‘hello‘ world ‘world‘ OK 127.0.0.1:6379> hmget helloworld hello 1) "hello" 127.0.0.1:6379> hget helloworld hello "hello" 127.0.0.1:6379> hmget helloworld hello world 1) "hello" 2) "world"
以上實例中 hash 數據類型存儲了‘hello world‘。 實例中我們使用了 Redis hmset, hmget,hget 命令,helloworld
為鍵值。
每個 hash 可以存儲 232 -1 鍵值對(40多億)。
List(列表)
Redis 列表是簡單的字符串列表,按照插入順序排序。你可以添加一個元素到列表的頭部(左邊)或者尾部(右邊)。
下面展示我們用一個list來儲存老師的學生們,以及找出學生們:
127.0.0.1:6379> lpush students jack //添加一個學生jack (integer) 1 127.0.0.1:6379> lpush students kevin nick zoe zick grace //添加多個學生 (integer) 6 127.0.0.1:6379> lrange students 1 3 //取出1-3個學生.可以發現index從0開始 1) "zick" 2) "zoe" 3) "nick"
列表最多可存儲 232 - 1 元素 (4294967295, 每個列表可存儲40多億)。
Set(集合)
Redis的Set是string類型的無序集合。
集合是通過哈希表實現的,所以添加,刪除,查找的復雜度都是O(1)。
127.0.0.1:6379> sadd teachers jack
(integer) 1
127.0.0.1:6379> sadd teachers jack //jack已經添加過 所以被忽略
(integer) 0
127.0.0.1:6379> sadd teachers jack kevin wang.liu
(integer) 2
127.0.0.1:6379> smembers teachers //
1) "kevin"
2) "wang.liu"
3) "jack"
集合中最大的成員數為 232 - 1(4294967295, 每個集合可存儲40多億個成員)。
zset(sorted set:有序集合)
Redis zset 和 set 一樣也是string類型元素的集合,且不允許重復的成員。
不同的是每個元素都會關聯一個double類型的分數。redis正是通過分數來為集合中的成員進行從小到大的排序。
zset的成員是唯一的,但分數(score)卻可以重復。
127.0.0.1:6379> zadd nums 0 j1
(integer) 1
127.0.0.1:6379> zadd nums 0 j1 //此時會更新j1的分數
(integer) 0
127.0.0.1:6379> zadd nums 1 j1
(integer) 0
127.0.0.1:6379> zadd nums 2 j2
(integer) 1
127.0.0.1:6379> zadd nums 4 j3
(integer) 1
127.0.0.1:6379> ZRANGEBYSCORE nums 0 1000
1) "j1"
2) "j2"
3) "j3"
2.Redis的數據類型