1. 程式人生 > >2.Redis的數據類型

2.Redis的數據類型

排序 刪除 rac 讀取 value 無序 實現 mark -m

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的數據類型