新聞中心

- string(字符串)
- hash(哈希散列)
- list(列表)
- set(集合)
- zset(sorted set:有序集合)
注意:這里指的數(shù)據(jù)類型是 Value(值) 的數(shù)據(jù)類型,而非 key。
string字符串
String 是 Redis 最基本的數(shù)據(jù)類型。字符串是一組字節(jié),在 Redis 數(shù)據(jù)庫中,字符串具有二進制安全(binary safe)特性,這意味著它的長度是已知的,不由任何其他終止字符決定的,一個字符串類型的值最多能夠存儲 512 MB 的內(nèi)容。
二進制安全:是一種主要用于字符串操作函數(shù)的計算機編程術(shù)語。只關(guān)心二進制化的字符串,不關(guān)心具體的字符串格式,嚴(yán)格的按照二進制的數(shù)據(jù)存取。這保證字符串不會因為某些操作而遭到損壞。
下面我們使用 SET 命令儲存一個字符串,然后使用 GET 命令查看它:
127.0.0.1:6379> set website "www.biancheng.net" OK 127.0.0.1:6379> get website "www.biancheng.net"
在上述事例,我們使用 Redis 存儲了一個鍵為 website,值為 www.baincheng.net 的 string 類型數(shù)據(jù)。
當(dāng)然您也使用 MSET 命令一次性存儲多個值,并使用 MGET 命令查詢多個 key,如下所示:
127.0.0.1:6379> MSET name www.biancheng.net topic Redis OK 127.0.0.1:6379> MGET name topic 1) "www.biancheng.net" 2) "Redis"
hash散列
hash 散列是由字符串類型的 field 和 value 組成的映射表,您可以把它理解成一個包含了多個鍵值對的集合。由于 Hash 類型具有上述特點,所以一般被用來存儲對象。
下面使用 HMSET 命令來存儲一個包含了用戶基本信息的對象,如下所示:
127.0.0.1:6379> HMSET userid:1 username xiaoming password 123456 website www.biancheng.net OK 127.0.0.1:6379> HGETALL userid:1 1) "username" 2) "xiaoming" 3) "password" 4) "123456" 5) "website" 6) "www.biancheng.net"
圖1:Redis Hash類型演示
上述示例中,我們是使用到了 HMSET 和 HGETALL 命令,前者可以同時設(shè)置多個字段,后者用來查詢?nèi)孔侄巍?br />
注意:一個 Hash 中最多包含 2^32-1 個鍵值對。
list列表
Redis List 中的元素是字符串類型,其中的元素按照插入順序進行排列,允許重復(fù)插入,最多可插入的元素個數(shù)為 2^32 -1 個(大約40億個),您可以添加一個元素到列表的頭部(左邊)或者尾部(右邊)。
下面使用 LPUSH 和 LRANGE 命令對 List 數(shù)據(jù)類型進行簡單演示:
#LPUSH 列表添加元素命令 127.0.0.1:6379> LPUSH biancheng Java (integer) 1 127.0.0.1:6379> LPUSH biancheng Python (integer) 2 127.0.0.1:6379> LPUSH biancheng C (integer) 3 127.0.0.1:6379> LPUSH biancheng SQL (integer) 4 127.0.0.1:6379> LPUSH biancheng Redis (integer) 5 127.0.0.1:6379> LPUSH biancheng Golang (integer) 6 #LRANGE 查看列表元素 #最開始插入的在最后,最后插入位于第一個位置,和隊列相似。 127.0.0.1:6379> LRANGE biancheng 0 6 1) "Golang" 2) "Redis" 3) "SQL" 4) "C" 5) "Python" 6) "Java"
注意:Redis 的列表類型同樣遵循索引機制。
set集合
Redis Set 是一個字符串類型元素構(gòu)成的無序集合。在 Redis 中,集合是通過哈希映射表實現(xiàn)的,所以無論是添加元素、刪除元素,亦或是查找元素,它們的時間復(fù)雜度都為 O(1)。
下面通過 SADD 命令添加 string 元素到 Set 集合中,若添加成功則返回 1,如果元素已經(jīng)存在,則返回 0。示例如下:
127.0.0.1:6379> SADD www.biancheng.net HTML (integer) 1 127.0.0.1:6379> SADD www.biancheng.net Pandas (integer) 1 127.0.0.1:6379> SADD www.biancheng.net NumPy (integer) 1 127.0.0.1:6379> SADD www.biancheng.net Matplotlib (integer) 1 127.0.0.1:6379> SADD www.biancheng.net JS (integer) 1 127.0.0.1:6379> SADD www.biancheng.net HTML (integer) 0 127.0.0.1:6379> SADD www.biancheng.net HTML (integer) 0 #SMEMBERS命令查看集合中元素,元素會無序排列 127.0.0.1:6379> SMEMBERS www.biancheng.net 1) "Matplotlib" 2) "HTML" 3) "JS" 4) "Pandas" 5) "NumPy"
由于 Set 集合中的成員具有唯一性,所以重復(fù)插入 HTML 元素不會成功,集合的同樣可容納 2^32 -1 個元素。
zset有序集合
Redis zset 是一個字符串類型元素構(gòu)成的有序集合,集合中的元素不僅具有唯一性,而且每個元素還會關(guān)聯(lián)一 個 double 類型的分?jǐn)?shù),該分?jǐn)?shù)允許重復(fù)。Redis 正是通過這個分?jǐn)?shù)來為集合中的成員排序。
下面通過 zadd 命令添加元素到集合,若元素存在于集合中,則不能添加成功。示例如下:
127.0.0.1:6379> del biancheng (integer) 1 127.0.0.1:6379> zadd biancheng 0 Python (integer) 1 127.0.0.1:6379> zadd biancheng 1 Java (integer) 1 127.0.0.1:6379> zadd biancheng 2 C++ (integer) 1 127.0.0.1:6379> zadd biancheng 3 MySQL (integer) 1 127.0.0.1:6379> zadd biancheng 4 Redis (integer) 1 #重復(fù)元素?zé)o法添加成功 127.0.0.1:6379> zadd biancheng 4 Redis (integer) 0 #重復(fù)分值添加成功 127.0.0.1:6379> zadd biancheng 4 GOLANG (integer) 1 #查看指定成員的分值 127.0.0.1:6379> ZSCORE biancheng Redis "4" 查看zset中的所有成員 127.0.0.1:6379> zrange biancheng 0 4 1) "Python" 2) "Java" 3) "C++" 4) "MySQL" 5) "GOLANG" 6) "Redis"
除了上述五種類型之外,Redis 還支持 HyperLogLog 類型,以及 Redis 5.0 提供的 Stream 類型。在后續(xù)章節(jié)會做相應(yīng)介紹。
在線練習(xí)工具:https://try.redis.io/
查看更多命令:https://redis.io/commands
網(wǎng)站欄目:Redis數(shù)據(jù)類型
文章網(wǎng)址:http://m.fisionsoft.com.cn/article/coshggi.html


咨詢
建站咨詢
