大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專(zhuān)注Java教育14年 全國(guó)咨詢(xún)/投訴熱線(xiàn):400-8080-105
動(dòng)力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁(yè) hot資訊 Redis數(shù)據(jù)類(lèi)型及應(yīng)用場(chǎng)景

Redis數(shù)據(jù)類(lèi)型及應(yīng)用場(chǎng)景

更新時(shí)間:2022-04-13 10:17:09 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽1458次

數(shù)據(jù)類(lèi)型

Redis 共有五種類(lèi)型,結(jié)合其他類(lèi)型,幾乎是相同的 8 種類(lèi)型。即String、hash、list、set、zset、geo、bitmaps、hyperLogLog和Stream。

字符串類(lèi)型

String 類(lèi)型是Redis字符串類(lèi)型,類(lèi)似于鍵值對(duì)的一種形式。

通常我們使用 String 類(lèi)型來(lái)存儲(chǔ)商品的數(shù)量、用戶(hù)信息和分布式鎖等應(yīng)用場(chǎng)景。

1.入庫(kù)貨品數(shù)量。

set goods:count:1 1233
set goods:count:2 100

2.用戶(hù)信息。

set user:1 "{"id":1, "name":" Zhang San ", "age": 12}"
set user:2 "{"id":2, "name":" Li Si ", "age": 12}"

3.分布式鎖。

# Set a nonexistent key named id:1 The value is 10, The expiration date is 10 second .
127.0.0.1:6379> set id:1 10 ex 10 nx
OK
127.0.0.1:6379> get id:1
"10"
# The current key has not expired yet , If it is set at this time, it will not be set successfully .
127.0.0.1:6379> set id:1 10 ex 10 nx
(nil)
# When 10 Get it in seconds , The current key is empty .
127.0.0.1:6379> get id:1
(nil)

哈希類(lèi)型

hash 類(lèi)型是一種類(lèi)似于關(guān)系數(shù)據(jù)庫(kù)結(jié)構(gòu)的數(shù)據(jù)結(jié)構(gòu)。有一個(gè)鍵名,鍵存儲(chǔ)的內(nèi)容以鍵值對(duì)的形式存在。

利用哈希結(jié)構(gòu),我們可以用它來(lái)存儲(chǔ)用戶(hù)信息、對(duì)象信息等業(yè)務(wù)場(chǎng)景。

1.保存用戶(hù)信息。

127.0.0.1:6379> hset user:1 id 1 name zhangsan age 12 sex 1
(integer) 4
127.0.0.1:6379> hset user:2 id 2 name lisi age 14 sex 0
(integer) 4
127.0.0.1:6379> hmget user:1 id name age sex
1) "1"
2) "zhangsan"
3) "12"
4) "1"

2.存儲(chǔ)對(duì)象信息。

127.0.0.1:6379> hset object:user id public-1 name private-zhangsan
(integer) 2
127.0.0.1:6379> hmget object:uesr id name
1) (nil)
2) (nil)
127.0.0.1:6379> hget object:user id
"public-1"
127.0.0.1:6379>

列表類(lèi)型

list 類(lèi)型是一種列表類(lèi)型的數(shù)據(jù)結(jié)構(gòu)。用一個(gè)鍵,按順序排列數(shù)據(jù)。

list 最常見(jiàn)的場(chǎng)景是 queue 、 Stack 和秒殺等。

1.排隊(duì)。

127.0.0.1:6379> lpush list:1 0 1 2 3 4 5 6
(integer) 7
127.0.0.1:6379> rpop list:1 1
1) "0"
127.0.0.1:6379> rpop list:1 1
1) "1"
127.0.0.1:6379> rpop list:1 1
1) "2"

2. 堆疊。

127.0.0.1:6379> lpush list:1 3 4 5 6
(integer) 3
127.0.0.1:6379> lpop list:1
"6"
127.0.0.1:6379> lpop list:1
"5"
127.0.0.1:6379> lpop list:1
"4"
127.0.0.1:6379> lpop list:1
"3"

3.秒殺。

127.0.0.1:6379> lpush order:user 11 12 14 15 16 17
(integer) 6

設(shè)置類(lèi)型

zet 是一個(gè)集合類(lèi)型,而且這個(gè)集合中的元素是不必要的,不會(huì)重復(fù)。set Type可用于用戶(hù)簽到、網(wǎng)站訪問(wèn)統(tǒng)計(jì)、用戶(hù)關(guān)注標(biāo)簽、好友推薦、猜謎游戲、隨機(jī)數(shù)生成等業(yè)務(wù)場(chǎng)景。

1. 某天用戶(hù)簽到。

127.0.0.1:6379> sadd sign:2020-01-16 1 2 3 4 5 6 7 8
(integer) 8
127.0.0.1:6379> smembers sign:2020-01-16
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
6) "6"
7) "7"
8) "8"

2. 用戶(hù)關(guān)注標(biāo)簽。

127.0.0.1:6379> sadd user:1:friend 1 2 3 4 5 6
(integer) 6
127.0.0.1:6379> sadd user:2:friend 11 22 7 4 5 6
(integer) 6
127.0.0.1:6379> sinterstore user:relation user:1:friend user:2:friend
(integer) 3
127.0.0.1:6379> smembers user:relation
1) "4"
2) "5"
3) "6"

3.玩猜謎游戲。

127.0.0.1:6379> spop user:2:friend 1
1) "5"

zset 類(lèi)型

zset 的 type 和 set 類(lèi)型都是集合類(lèi)型,兩者的區(qū)別,設(shè)置 zset 為數(shù)據(jù)設(shè)置一個(gè)分?jǐn)?shù),這個(gè)分?jǐn)?shù)可以用于數(shù)據(jù)排序,同時(shí) zset 類(lèi)型的數(shù)據(jù)也是有序的,因此 zset 也稱(chēng)為有序集合。

zset 除了可以用在 set 一個(gè)可用的場(chǎng)景中,更多的可以用在排序的場(chǎng)景中,比如排行榜、延遲隊(duì)列,就好像一個(gè)未付款的訂單會(huì)失效多久。

1.簽到排行榜。

127.0.0.1:6379> zadd goods:order 1610812987 1
(integer) 1
127.0.0.1:6379> zadd goods:order 1610812980 2
(integer) 1
127.0.0.1:6379> zadd goods:order 1610812950 3
(integer) 1
127.0.0.1:6379> zadd goods:order 1610814950 4
(integer) 1
127.0.0.1:6379> zcard goods:order
(integer) 4
127.0.0.1:6379> zrangebyscore goods:order 1610812950 1610812987
1) "3"
2) "2"
3) "1"

位圖類(lèi)型

位圖底層存儲(chǔ)是二進(jìn)制格式的數(shù)據(jù)。在某些特定情況下,使用這種類(lèi)型,可以大大減少存儲(chǔ)空間,因?yàn)榇鎯?chǔ)的數(shù)據(jù)只能是0和1。為了便于理解,這種數(shù)據(jù)格式可以理解為數(shù)組。

利用這個(gè)特性,你可以在一些訪問(wèn)統(tǒng)計(jì)、簽到統(tǒng)計(jì)等中使用這個(gè)類(lèi)型。

1. 用戶(hù)一個(gè)月的簽到記錄。

127.0.0.1:6379> setbit user:2020-01 0 1
(integer) 0
127.0.0.1:6379> setbit user:2020-01 1 1
(integer) 0
127.0.0.1:6379> setbit user:2020-01 2 1
(integer) 0
127.0.0.1:6379> bitcount user:2020-01 0 4
(integer) 3

2.統(tǒng)計(jì)某天網(wǎng)站的簽到數(shù)。

127.0.0.1:6379> setbit site:2020-01-17 1 1
(integer) 0
127.0.0.1:6379> setbit site:2020-01-17 3 1
(integer) 0
127.0.0.1:6379> setbit site:2020-01-17 4 1
(integer) 0
127.0.0.1:6379> setbit site:2020-01-17 6 1
(integer) 0
127.0.0.1:6379> bitcount site:2020-01-17 0 100
(integer) 4
127.0.0.1:6379> getbit site:2020-01-17 5
(integer) 0

3.計(jì)算一段時(shí)間內(nèi),登錄的用戶(hù)數(shù)。

127.0.0.1:6379> setbit site:2020-01-18 6 1
(integer) 0
127.0.0.1:6379> setbit site:2020-01-18 4 1
(integer) 0
127.0.0.1:6379> setbit site:2020-01-18 7 1
(integer) 0
127.0.0.1:6379> bitop and continue:site site:2020-01-18 site:2020-01-17
(integer) 1

HypefLogLog 類(lèi)型

HypefLogLog 類(lèi)型在使用方面,有點(diǎn)像集合類(lèi)型。這種類(lèi)型實(shí)際上是一個(gè)字符串類(lèi)型的數(shù)據(jù)結(jié)構(gòu)。使用這種類(lèi)型最大的好處就是減少了空間、但也有一定的錯(cuò)誤率。這種類(lèi)型也不允許同一個(gè) key 有重復(fù)的元素。此類(lèi)型還支持合并多個(gè)鍵 Value 。

這種數(shù)據(jù)類(lèi)型一般用于一些不需要精確計(jì)算的統(tǒng)計(jì)場(chǎng)景。

1.用戶(hù)登錄統(tǒng)計(jì)。

127.0.0.1:6379> pfadd 2020:01:sgin 1 2 3 4 5 6 7 8
(integer) 1
# Try adding... Repeatedly
127.0.0.1:6379> pfadd 2020:02:sgin 1 2 3 4 5 6 7 8
(integer) 0
127.0.0.1:6379> pfadd 2020:02:sgin 9
(integer) 1
127.0.0.1:6379> pfadd 2020:02:sgin 10
(integer) 1
127.0.0.1:6379> pfadd 2020:02:sgin 11
(integer) 1
127.0.0.1:6379> pfcount 2020:02:sgin
(integer) 11

GEO類(lèi)型

GEO Type是一種存儲(chǔ)地理信息的數(shù)據(jù)格式,基于數(shù)據(jù)的特性。可以用于一些距離計(jì)算、附近推薦等業(yè)務(wù)場(chǎng)景。

1.距離計(jì)算
 

127.0.0.1:6379> geoadd city:distance nx 121.32 42.36 beijing 121.20 38.56
shanghai 100.36 38.56 sichuan
(integer) 3
127.0.0.1:6379> geopos city:distance beijing shanghai sichuan
1) 1) "121.32000178098678589"
2) "42.36000020595371751"
2) 1) "121.19999974966049194"
2) "38.55999947301710762"
3) 1) "100.3599974513053894"
2) "38.55999947301710762"
# Calculate the distance between Beijing and Shanghai
127.0.0.1:6379> geodist city:distance beijing shanghai km
"422.7819"

流類(lèi)型

Stream 類(lèi)型是 Redis 在 5.0 以后的版本中增加了新的數(shù)據(jù)結(jié)構(gòu)。這種數(shù)據(jù)結(jié)構(gòu)主要用于用戶(hù)消息隊(duì)列場(chǎng)景。Redis 本身有一個(gè)發(fā)布訂閱(pub/sub)來(lái)實(shí)現(xiàn)消息隊(duì)列的功能,但是有個(gè)缺點(diǎn)就是消息不持久,如果有網(wǎng)絡(luò)disconnect 、Redis Downtime 等,消息會(huì)被丟棄。

1. 消息隊(duì)列

# Add message queue
127.0.0.1:6379> xadd message * name zhangsan age 12
"1610873104343-0"
127.0.0.1:6379> xrange message - +
1) 1) "1610873104343-0"
2) 1) "name"
2) "zhangsan"
3) "age"
4) "12"
# Get message queue
127.0.0.1:6379> xrevrange message + - count 1
1) 1) "1610873104343-0"
2) 1) "name"
2) "zhangsan"
3) "age"
4) "12"

以上就是關(guān)于“Redis數(shù)據(jù)類(lèi)型及應(yīng)用場(chǎng)景”的介紹,大家如果對(duì)此比較感興趣,想了解更多相關(guān)知識(shí),不妨來(lái)關(guān)注一下動(dòng)力節(jié)點(diǎn)的Redis教程,里面的課程內(nèi)容細(xì)致全面,通俗易懂,很適合沒(méi)有基礎(chǔ)的小白學(xué)習(xí),希望對(duì)大家能夠有所幫助哦。

提交申請(qǐng)后,顧問(wèn)老師會(huì)電話(huà)與您溝通安排學(xué)習(xí)

  • 全國(guó)校區(qū) 2025-04-24 搶座中
  • 全國(guó)校區(qū) 2025-05-15 搶座中
  • 全國(guó)校區(qū) 2025-06-05 搶座中
  • 全國(guó)校區(qū) 2025-06-26 搶座中
免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 曰韩毛片 | 日韩a无吗一区二区三区 | 亚洲综合无码一区二区 | 欧美精品综合一区二区三区 | 五月婷视频 | 日日噜噜噜夜夜爽爽狠狠 | 久久精品国产福利 | 逆天至尊免费看229集 | 午夜影视在线 | 亚洲成a人v大片在线观看 | 国产麻豆视频在线看网站 | 免费视频99 | 99精彩视频在线观看 | 国产精品青草久久久久婷婷 | 大杳焦伊人久久综合热 | 天天久久狠狠伊人第一麻豆 | 亚洲欧美色鬼久久综合 | 色偷偷亚洲 | 久草视频中文 | 中文字幕亚洲综合精品一区 | 欧美成人免费午夜影视 | 天天躁狠狠躁夜躁2021 | 5060一级毛片 | 青青久在线视频免费视频 | 夜夜狠狠狠狠 | 国产在线一区视频 | 欧美福利精品福利视频在线观看 | freexxxx性特大另类ww | 在线看片777av免费观看 | 国产在线精品香蕉麻豆 | 欧美日韩一区二区高清免费视频 | 国产精品久久精品牛牛影视 | 久久99热精品免费观看欧美 | 天天干天天舔天天操 | 午夜影视在线 | 国内特级毛片 | 美女黄色免费在线观看 | 欧美色影院 | 国产精品视频一区二区三区经 | 色天天综合久久久久综合片 | 久久国产精品久久精 |