日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Redis數(shù)據(jù)類型
經(jīng)過前面介紹,我們知道 Redis 是 Key-Value 類型緩存型數(shù)據(jù)庫,Redis 為了存儲不同類型的數(shù)據(jù),提供了五種常用數(shù)據(jù)類型,如下所示:

  • string(字符串)
  • hash(哈希散列)
  • list(列表)
  • set(集合)
  • zset(sorted set:有序集合)

注意:這里指的數(shù)據(jù)類型是 Value(值) 的數(shù)據(jù)類型,而非 key。

string字符串

String 是 Redis 最基本的數(shù)據(jù)類型。字符串是一組字節(jié),在 Redis 數(shù)據(jù)庫中,字符串具有二進(jìn)制安全(binary safe)特性,這意味著它的長度是已知的,不由任何其他終止字符決定的,一個(gè)字符串類型的值最多能夠存儲 512 MB 的內(nèi)容。

二進(jìn)制安全:是一種主要用于字符串操作函數(shù)的計(jì)算機(jī)編程術(shù)語。只關(guān)心二進(jìn)制化的字符串,不關(guān)心具體的字符串格式,嚴(yán)格的按照二進(jìn)制的數(shù)據(jù)存取。這保證字符串不會因?yàn)槟承┎僮鞫獾綋p壞。

下面我們使用 SET 命令儲存一個(gè)字符串,然后使用 GET 命令查看它:

127.0.0.1:6379> set website "www.biancheng.net"
OK
127.0.0.1:6379> get website
"www.biancheng.net"

在上述事例,我們使用 Redis 存儲了一個(gè)鍵為 website,值為 www.baincheng.net 的 string 類型數(shù)據(jù)。

當(dāng)然您也使用 MSET 命令一次性存儲多個(gè)值,并使用 MGET 命令查詢多個(gè) 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 組成的映射表,您可以把它理解成一個(gè)包含了多個(gè)鍵值對的集合。由于 Hash 類型具有上述特點(diǎn),所以一般被用來存儲對象。

下面使用 HMSET 命令來存儲一個(gè)包含了用戶基本信息的對象,如下所示:

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í)設(shè)置多個(gè)字段,后者用來查詢?nèi)孔侄巍?br />

注意:一個(gè) Hash 中最多包含 2^32-1 個(gè)鍵值對。

list列表

Redis List 中的元素是字符串類型,其中的元素按照插入順序進(jìn)行排列,允許重復(fù)插入,最多可插入的元素個(gè)數(shù)為 2^32 -1 個(gè)(大約40億個(gè)),您可以添加一個(gè)元素到列表的頭部(左邊)或者尾部(右邊)。

下面使用 LPUSH 和 LRANGE 命令對 List 數(shù)據(jù)類型進(jìn)行簡單演示:

#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 查看列表元素
#最開始插入的在最后,最后插入位于第一個(gè)位置,和隊(duì)列相似。
127.0.0.1:6379> LRANGE biancheng 0 6
1) "Golang"
2) "Redis"
3) "SQL"
4) "C"
5) "Python"
6) "Java"

注意:Redis 的列表類型同樣遵循索引機(jī)制。

set集合

Redis Set 是一個(gè)字符串類型元素構(gòu)成的無序集合。在 Redis 中,集合是通過哈希映射表實(shí)現(xiàn)的,所以無論是添加元素、刪除元素,亦或是查找元素,它們的時(shí)間復(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 個(gè)元素。

zset有序集合

Redis zset 是一個(gè)字符串類型元素構(gòu)成的有序集合,集合中的元素不僅具有唯一性,而且每個(gè)元素還會關(guān)聯(lián)一 個(gè) double 類型的分?jǐn)?shù),該分?jǐn)?shù)允許重復(fù)。Redis 正是通過這個(gè)分?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)頁標(biāo)題:Redis數(shù)據(jù)類型
轉(zhuǎn)載注明:http://www.5511xx.com/article/coshggi.html