主頁 > 資料庫 > Bigkey問題的解決思路與方式探索

Bigkey問題的解決思路與方式探索

2022-11-23 08:09:32 資料庫

作者:vivo 互聯網資料庫團隊- Du Ting

在Redis運維程序中,由于Bigkey 的存在,會影響業務程式的回應速度,嚴重的還會造成可用性損失,DBA也一直和業務開發方強調 Bigkey 的規避方法以及危害,

一、背景

在Redis運維程序中,由于Bigkey的存在,會影響業務程式的回應速度,嚴重的還會造成可用性損失,DBA也一直和業務開發方強調 Bigkey 的規避方法以及危害,但是Bigkey一直沒有完全避免,全網Redis集群有2200個以上,實體數量達到4.5萬以上,在當前階段進行一次全網 Bigkey檢查,估計需要以年為時間單位,非常耗時,我們需要新的思路去解決Bigkey問題,

二、Bigkey 介紹

2.1、什么是 Bigkey

在Redis中,一個字串型別最大可以到512MB,一個二級資料結構(比如hash、list、set、zset等)可以存盤大約40億個(2^32-1)個元素,但實際上不會達到這么大的值,一般情況下如果達到下面的情況,就可以認為它是Bigkey了,

  • 【字串型別】: 單個string型別的value值超過1MB,就可以認為是Bigkey,
  • 【非字串型別】:哈希、串列、集合、有序集合等, 它們的元素個數超過2000個,就可以認為是Bigkey,

2.2 Bigkey是怎么產生的

我們遇到的Bigkey一般都是由于程式設計不當或者對于資料規模預料不清楚造成的,比如以下的情況,

  • 【統計】:遇到一個統計類的key,是記錄某網站的訪問用戶的IP,隨著時間的推移,網站訪問的用戶越來越多,這個key的元素數量也會越來越大,形成Bigkey,
  • 【快取】: 快取類key一般是這樣的邏輯,將資料從資料庫查詢出來序列化放到Redis里,如果業務程式從Redis沒有訪問到,就會查詢資料庫并將查詢到的資料追加到Redis快取中,短時間內會快取大量的資料到Redis的key中,形成Bigkey,
  • 【佇列】:把Redis當做佇列使用,處理任務,如果消費出現不及時情況,將導致佇列越來越大,形成Bigkey,

這三種情況,都是我們實際運維中遇到的,需要謹慎使用,合理優化,

2.3 Bigkey 的危害

我們在運維中,遇到Bigkey的情況下,會導致一些問題,會觸發監控報警,嚴重的還會影響Redis實體可用性,進而影響業務可用性,在需要水平擴容時候,可能導致水平擴容失敗,

2.3.1記憶體空間不均勻

記憶體空間不均勻會不利于集群對記憶體的統一管理,有資料丟失風險,下圖中的三個節點是同屬于一個集群,它們的key的數量比較接近,但記憶體容量相差比較多,存在Bigkey的實體占用的記憶體多了4G以上了,

圖片

可以使用使用Daas平臺“工具集-操作項管理”,選擇對應的slave實體執行分析,找出具體的Bigkey,

2.3.2 超時阻塞

Redis是單執行緒作業的,通俗點講就是同一時間只能處理一個Redis的訪問命令,操作Bigkey的命令通常比較耗時,這段時間Redis不能處理其他命令,其他命令只能阻塞等待,這樣會造成客戶端阻塞,導致客戶端訪問超時,更嚴重的會造成master-slave的故障切換,造成阻塞的操作不僅僅是業務程式的訪問,還有key的自動過期的洗掉、del洗掉命令,對于Bigkey,這些操作也需要謹慎使用,

超時阻塞案例

我們遇到一個這樣超時阻塞的案例,業務方反映程式訪問Redis集群出現超時現象,hkeys訪問Redis的平均回應時間在200毫秒左右,最大回應時間達到了500毫秒以上,如下圖,

圖片

hkeys是獲取所有哈希表中的欄位的命令,分析應該是集群中某些實體存在hash型別的Bigkey,導致hkeys命令執行時間過長,發生了阻塞現象,

1.使用Daas平臺“服務監控-資料庫實體監控”,選擇master節點,選擇Redis回應時間監控指標“redis.instance.latency.max”,如下圖所示,從監控圖中我們可以看到

(1)正常情況下,該實體的回應時間在0.1毫秒左右,

(2)監控指標上面有很多突刺,該實體的回應時間到了70毫秒左右,最大到了100毫秒左右,這種情況就是該實體會有100毫秒都在處理Bigkey的訪問命令,不能處理其他命令,

通過查看監控指標,驗證了我們分析是正確的,是這些監控指標的突刺造成了hkeys命令的回應時間比較大,我們找到了具體的master實體,然后使用master實體的slave去分析下Bigkey情況,

圖片

圖片

2.使用Daas平臺“工具集-操作項管理”,選擇slave實體執行分析,分析結果如下圖,有一個hash型別key有12102218個fields,

圖片

3. 和業務溝通,這個Bigkey是連續存放了30天的業務資料了,建議根據二次hash方式拆分成多個key,也可把30天的資料根據分鐘級別拆分成多個key,把每個key的元素數量控制在5000以內,目前業務正在排期優化中,優化后,監控指標的回應時間的突刺就會消失了,

2.3.3 網路阻塞

Bigkey的value比較大,也意味著每次獲取要產生的網路流量較大,假設一個Bigkey為10MB,客戶端每秒訪問量為100,那么每秒產生1000MB的流量,對于普通的千兆網卡(按照位元組算是128MB/s)的服務器來說簡直是滅頂之災,而且我們現在的Redis服務器是采用單機多實體的方式來部署Redis實體的,也就是說一個Bigkey可能會對同一個服務器上的其他Redis集群實體造成影響,影響到其他的業務,

2.3.4 遷移困難

我們在運維中經常做的變更操作是水平擴容,就是增加Redis集群的節點數量來達到擴容的目的,這個水平擴容操作就會涉及到key的遷移,把原實體上的key遷移到新擴容的實體上,當要對key進行遷移時,是通過migrate命令來完成的,migrate實際上是通過dump + restore + del三個命令組合成原子命令完成,它在執行的時候會阻塞進行遷移的兩個實體,直到以下任意結果發生才會釋放:遷移成功,遷移失敗,等待超時,如果key的遷移程序中遇到Bigkey,會長時間阻塞進行遷移的兩個實體,可能造成客戶端阻塞,導致客戶端訪問超時;也可能遷移時間太長,造成遷移超時導致遷移失敗,水平擴容失敗,

遷移失敗案例

我們也遇到過一些因為Bigkey擴容遷移失敗的案例,如下圖所示,是一個Redis集群水平擴容的工單,需要進行key的遷移,當工單執行到60%的時候,遷移失敗了,

1. 進入工單找到失敗的實體,使用失敗實體的slave節點,在Daas平臺的“工具集-操作項管理”進行Bigkey分析,

圖片

2. 經過分析找出了hash型別的Bigkey有8421874個fields,正是這個Bigkey導致遷移時間太長,超過了遷移時間限制,導致工單失敗了,

圖片

3.和業務溝通,這些key是記錄用戶訪問系統的某個功能模塊的ip地址的,訪問該功能模塊的所有ip都會記錄到給key里面,隨著時間的積累,這個key變的越來越大,同樣是采用拆分的方式進行優化,可以考慮按照時間日期維度來拆分,就是一段時間段的訪問ip記錄到一個key中,

4.Bigkey優化后,擴容的工單可以重試,完成集群擴容操作,

三、Bigkey的發現

Bigkey首先需要重源頭治理,防止Bigkey的產生;其次是需要能夠及時的發現,發現后及時處理,分析Bigkey的方法不少,這里介紹兩種比較常用的方法,也是Daas平臺分析Bigkey使用的兩種方式,分別是Bigkeys命令分析法、RDB檔案分析法,

3.1 scan命令分析

Redis4.0及以上版本提供了--Bigkeys命令,可以分析出實體中每種資料結構的top 1的Bigkey,同時給出了每種資料型別的鍵值個數以及平均大小,執行--Bigkeys命令時候需要注意以下幾點:

  • 建議在slave節點執行,因為--Bigkeys也是通過scan完成的,可能會對節點造成阻塞,
  • 建議在節點本機執行,這樣可以減少網路開銷,
  • 如果沒有從節點,可以使用--i引數,例如(--i 0.1 代表100毫秒執行一次),
  • --Bigkeys只能計算每種資料結構的top1,如果有些資料結構有比較多的Bigkey,是查找不出來的,

Daas平臺集成了基于原生--Bigkeys代碼實作的查詢Bigkey的方式,這個方式的缺點是只能計算每種資料結構的top1,如果有些資料結構有比較多的Bigkey,是查找不出來的,該方式相對比較安全,已經開放出來給業務開發同學使用,

3.2 RDB檔案分析

借助開源的工具,比如rdb-tools,分析Redis實體的RDB檔案,找出其中的Bigkey,這種方式需要生成RDB檔案,需要注意以下幾點:

  • 建議在slave節點執行,因為生成RDB檔案會影響節點性能,
  • 需要生成RDB檔案,會影響節點性能,雖然在slave節點執行,但是也是有可能造成主從中斷,進而影響到master節點,

Daas平臺集成了基于RDB檔案分析代碼實作的查詢Bigkey的方式,可以根據實際需求自定義填寫N,分析的top N個Bigkey,該方式相對有一定風險,只有DBA有權限執行分析,

3.3 Bigkey 巡檢

通過巡檢,可以暴露出隱患,提前解決,避免故障的發生,進行全網Bigkey的巡檢,是避免Bigkey故障的比較好的方法,由于全網Redis實體數量非常大,分析的速度比較慢,使用當前的分析方法很難完成,為了解決這個問題,存盤研發組分布式資料庫同學計劃開發一個高效的RDB決議工具,然后通過大規模決議RDB檔案來分析Bigkey,可以提高分析速度,實作Bigkey的巡檢,

四、 Bigkey處理優化

4.1 Bigkey拆分

優化Bigkey的原則就是string減少字串長度,list、hash、set、zset等減少元素數量,當我們知道哪些key是Bigkey時,可以把單個key拆分成多個key,比如以下拆分方式可以參考,

  • big list:list1、list2、...listN
  • big hash:可以做二次的hash,例如hash%100
  • 按照日期拆分多個:key20220310、key20220311、key202203212

4.2 Bigkey分析工具優化

我們全網Redis集群有2200以上,實體數量達到4.5萬以上,有的比較大的集群的實體數量達到了1000以上,前面提到的兩種Bigkey分析工具還都是實體維度分析,對于實體數量比較大的集群,進行全集群分析也是比較耗時的,為了提高分析效率,從以下幾個方面進行優化:

  • 可以從集群維度選擇全部slave進行分析,
  • 同一個集群的相同服務器slave實體串行分析,不同服務器的slave實體并行分析,最大并發度默認10,同時可以分析10個實體,并且可以自定義輸入執行分析的并發度,
  • 分析出符合Bigkey規定標準的所有key資訊:大于1MB的string型別的所有key,如果不存在就列出最大的50個key;hash、list、set、zset等型別元素個數大于2000的所有key,如不存在就給出每種型別最大的50個key,
  • 增加暫停、重新開始、結束功能,暫停分析后可以重新開始,

4.3 水平擴容遷移優化

目前情況,我們有一些Bigkey的發現是被動的,一些是在水平擴容時候發現的,由于Bigkey的存在導致擴容失敗了,嚴重的還觸發了master-slave的故障切換,這個時候可能已經造成業務程式訪問超時,導致了可用性下降,

我們分析了Daas平臺的水平擴容時遷移key的程序及影響引數,內容如下:

(1)【cluster-node-timeout】:控制集群的節點切換引數,master堵塞超過cluster-node-timeout/2這個時間,就會主觀判定該節點下線pfail狀態,如果遷移Bigkey阻塞時間超過cluster-node-timeout/2,就可能會導致master-slave發生切換,

(2)【migrate timeout】:控制遷移io的超時時間,超過這個時間遷移沒有完成,遷移就會中斷,

(3)【遷移重試周期】:遷移的重試周期是由水平擴容的節點數決定的,比如一個集群擴容10個節點,遷移失敗后的重試周期就是10次,

(4)【一個遷移重試周期內的重試次數】:在一個起遷移重試周期內,會有3次重試遷移,每一次的migrate timeout的時間分別是10秒、20秒、30秒,每次重試之間無間隔,

比如一個集群擴容10個節點,遷移時候遇到一個Bigkey,第一次遷移的migrate timeout是10秒,10秒后沒有完成遷移,就會設定migrate timeout為20秒重試,如果再次失敗,會設定migrate timeout為30秒重試,如果還是失敗,程式會遷移其他新9個的節點,但是每次在遷移其他新的節點之前還會分別設定migrate timeout為10秒、20秒、30秒重試遷移那個遷移失敗的Bigkey,這個重試程序,每個重試周期阻塞(10+20+30)秒,會重試10個周期,共阻塞600秒,其實后面的9個重試周期都是無用的,每次重試之間沒有間隔,會連續阻塞了Redis實體,

(5)【遷移失敗日志】:遷移失敗后,記錄的日志沒有包括遷移節點、solt、key資訊,不能根據日志立即定位到問題key,

我們對這個遷移程序做了優化,具體如下:

(1)【cluster-node-timeout】:默認是60秒,在遷移之前設定為15分鐘,防止由于遷移Bigkey阻塞導致master-slave故障切換,

(2)【migrate timeout】:為了最大限度減少實體阻塞時間,每次重試的超時時間都是10秒,3次重試之間間隔30秒,這樣最多只會連續阻塞Redis實體10秒,

(3)【重試次數】:遷移失敗后,只重試3次(重試是為了避免網路抖動等原因造成的遷移失敗),每次重試間隔30秒,重試3次后都失敗了,會暫停遷移,日志記錄下Bigkey,去掉了其他節點遷移的重試,

(4)【優化日志記錄】:遷移失敗日志記錄遷移節點、solt、key資訊,可以立即定位到問題節點及key,

五、總結

本文通過對Bigkey的分析,重點介紹了在運維中對bigkey問題的處理思路、解決方式,首先是需要從源頭治理,防止Bigkey形成,DBA應該加強對業務開發同學bigkey相關問題的宣導;其次是需要具備及時發現的能力,這個也是我們現在的不足之處,我們后面會從Bigkey巡檢、Bigkey分析工具的這兩個方面,提高Bigkey發現能力,

參考資料:

  1. Redis命令參考
  2. Github:rdb-tools
  3. redis之bigkey(看這一篇就夠)
分享 vivo 互聯網技術干貨與沙龍活動,推薦最新行業動態與熱門會議,

轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/538076.html

標籤:其它

上一篇:Python基礎之資料庫:2、MySQL的下載與安裝、基本使用、系統服務制作

下一篇:分庫分表很常見,但這些問題90%的人都答不全

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • GPU虛擬機創建時間深度優化

    **?桔妹導讀:**GPU虛擬機實體創建速度慢是公有云面臨的普遍問題,由于通常情況下創建虛擬機屬于低頻操作而未引起業界的重視,實際生產中還是存在對GPU實體創建時間有苛刻要求的業務場景。本文將介紹滴滴云在解決該問題時的思路、方法、并展示最終的優化成果。 從公有云服務商那里購買過虛擬主機的資深用戶,一 ......

    uj5u.com 2020-09-10 06:09:13 more
  • 可編程網卡芯片在滴滴云網路的應用實踐

    **?桔妹導讀:**隨著云規模不斷擴大以及業務層面對延遲、帶寬的要求越來越高,采用DPDK 加速網路報文處理的方式在橫向縱向擴展都出現了局限性。可編程芯片成為業界熱點。本文主要講述了可編程網卡芯片在滴滴云網路中的應用實踐,遇到的問題、帶來的收益以及開源社區貢獻。 #1. 資料中心面臨的問題 隨著滴滴 ......

    uj5u.com 2020-09-10 06:10:21 more
  • 滴滴資料通道服務演進之路

    **?桔妹導讀:**滴滴資料通道引擎承載著全公司的資料同步,為下游實時和離線場景提供了必不可少的源資料。隨著任務量的不斷增加,資料通道的整體架構也隨之發生改變。本文介紹了滴滴資料通道的發展歷程,遇到的問題以及今后的規劃。 #1. 背景 資料,對于任何一家互聯網公司來說都是非常重要的資產,公司的大資料 ......

    uj5u.com 2020-09-10 06:11:05 more
  • 滴滴AI Labs斬獲國際機器翻譯大賽中譯英方向世界第三

    **桔妹導讀:**深耕人工智能領域,致力于探索AI讓出行更美好的滴滴AI Labs再次斬獲國際大獎,這次獲獎的專案是什么呢?一起來看看詳細報道吧! 近日,由國際計算語言學協會ACL(The Association for Computational Linguistics)舉辦的世界最具影響力的機器 ......

    uj5u.com 2020-09-10 06:11:29 more
  • MPP (Massively Parallel Processing)大規模并行處理

    1、什么是mpp? MPP (Massively Parallel Processing),即大規模并行處理,在資料庫非共享集群中,每個節點都有獨立的磁盤存盤系統和記憶體系統,業務資料根據資料庫模型和應用特點劃分到各個節點上,每臺資料節點通過專用網路或者商業通用網路互相連接,彼此協同計算,作為整體提供 ......

    uj5u.com 2020-09-10 06:11:41 more
  • 滴滴資料倉庫指標體系建設實踐

    **桔妹導讀:**指標體系是什么?如何使用OSM模型和AARRR模型搭建指標體系?如何統一流程、規范化、工具化管理指標體系?本文會對建設的方法論結合滴滴資料指標體系建設實踐進行解答分析。 #1. 什么是指標體系 ##1.1 指標體系定義 指標體系是將零散單點的具有相互聯系的指標,系統化的組織起來,通 ......

    uj5u.com 2020-09-10 06:12:52 more
  • 單表千萬行資料庫 LIKE 搜索優化手記

    我們經常在資料庫中使用 LIKE 運算子來完成對資料的模糊搜索,LIKE 運算子用于在 WHERE 子句中搜索列中的指定模式。 如果需要查找客戶表中所有姓氏是“張”的資料,可以使用下面的 SQL 陳述句: SELECT * FROM Customer WHERE Name LIKE '張%' 如果需要 ......

    uj5u.com 2020-09-10 06:13:25 more
  • 滴滴Ceph分布式存盤系統優化之鎖優化

    **桔妹導讀:**Ceph是國際知名的開源分布式存盤系統,在工業界和學術界都有著重要的影響。Ceph的架構和演算法設計發表在國際系統領域頂級會議OSDI、SOSP、SC等上。Ceph社區得到Red Hat、SUSE、Intel等大公司的大力支持。Ceph是國際云計算領域應用最廣泛的開源分布式存盤系統, ......

    uj5u.com 2020-09-10 06:14:51 more
  • es~通過ElasticsearchTemplate進行聚合~嵌套聚合

    之前寫過《es~通過ElasticsearchTemplate進行聚合操作》的文章,這一次主要寫一個嵌套的聚合,例如先對sex集合,再對desc聚合,最后再對age求和,共三層嵌套。 Aggregations的部分特性類似于SQL語言中的group by,avg,sum等函式,Aggregation ......

    uj5u.com 2020-09-10 06:14:59 more
  • 爬蟲日志監控 -- Elastc Stack(ELK)部署

    傻瓜式部署,只需替換IP與用戶 導讀: 現ELK四大組件分別為:Elasticsearch(核心)、logstash(處理)、filebeat(采集)、kibana(可視化) 下載均在https://www.elastic.co/cn/downloads/下tar包,各組件版本最好一致,配合fdm會 ......

    uj5u.com 2020-09-10 06:15:05 more
最新发布
  • day02-2-商鋪查詢快取

    功能02-商鋪查詢快取 3.商鋪詳情快取查詢 3.1什么是快取? 快取就是資料交換的緩沖區(稱作Cache),是存盤資料的臨時地方,一般讀寫性能較高。 快取的作用: 降低后端負載 提高讀寫效率,降低回應時間 快取的成本: 資料一致性成本 代碼維護成本 運維成本 3.2需求說明 如下,當我們點擊商店詳 ......

    uj5u.com 2023-04-20 08:33:24 more
  • MySQL中binlog備份腳本分享

    關于MySQL的二進制日志(binlog),我們都知道二進制日志(binlog)非常重要,尤其當你需要point to point災難恢復的時侯,所以我們要對其進行備份。關于二進制日志(binlog)的備份,可以基于flush logs方式先切換binlog,然后拷貝&壓縮到到遠程服務器或本地服務器 ......

    uj5u.com 2023-04-20 08:28:06 more
  • day02-短信登錄

    功能實作02 2.功能01-短信登錄 2.1基于Session實作登錄 2.1.1思路分析 2.1.2代碼實作 2.1.2.1發送短信驗證碼 發送短信驗證碼: 發送驗證碼的介面為:http://127.0.0.1:8080/api/user/code?phone=xxxxx<手機號> 請求方式:PO ......

    uj5u.com 2023-04-20 08:27:27 more
  • 快取與資料庫雙寫一致性幾種策略分析

    本文將對幾種快取與資料庫保證資料一致性的使用方式進行分析。為保證高并發性能,以下分析場景不考慮執行的原子性及加鎖等強一致性要求的場景,僅追求最終一致性。 ......

    uj5u.com 2023-04-20 08:26:48 more
  • sql陳述句優化

    問題查找及措施 問題查找 需要找到具體的代碼,對其進行一對一優化,而非一直把關注點放在服務器和sql平臺 降低簡化每個事務中處理的問題,盡量不要讓一個事務拖太長的時間 例如檔案上傳時,應將檔案上傳這一步放在事務外面 微軟建議 4.啟動sql定時執行計劃 怎么啟動sqlserver代理服務-百度經驗 ......

    uj5u.com 2023-04-20 08:26:35 more
  • 云時代,MySQL到ClickHouse資料同步產品對比推薦

    ClickHouse 在執行分析查詢時的速度優勢很好的彌補了MySQL的不足,但是對于很多開發者和DBA來說,如何將MySQL穩定、高效、簡單的同步到 ClickHouse 卻很困難。本文對比了 NineData、MaterializeMySQL(ClickHouse自帶)、Bifrost 三款產品... ......

    uj5u.com 2023-04-20 08:26:29 more
  • sql陳述句優化

    問題查找及措施 問題查找 需要找到具體的代碼,對其進行一對一優化,而非一直把關注點放在服務器和sql平臺 降低簡化每個事務中處理的問題,盡量不要讓一個事務拖太長的時間 例如檔案上傳時,應將檔案上傳這一步放在事務外面 微軟建議 4.啟動sql定時執行計劃 怎么啟動sqlserver代理服務-百度經驗 ......

    uj5u.com 2023-04-20 08:25:13 more
  • Redis 報”OutOfDirectMemoryError“(堆外記憶體溢位)

    Redis 報錯“OutOfDirectMemoryError(堆外記憶體溢位) ”問題如下: 一、報錯資訊: 使用 Redis 的業務介面 ,產生 OutOfDirectMemoryError(堆外記憶體溢位),如圖: 格式化后的報錯資訊: { "timestamp": "2023-04-17 22: ......

    uj5u.com 2023-04-20 08:24:54 more
  • day02-2-商鋪查詢快取

    功能02-商鋪查詢快取 3.商鋪詳情快取查詢 3.1什么是快取? 快取就是資料交換的緩沖區(稱作Cache),是存盤資料的臨時地方,一般讀寫性能較高。 快取的作用: 降低后端負載 提高讀寫效率,降低回應時間 快取的成本: 資料一致性成本 代碼維護成本 運維成本 3.2需求說明 如下,當我們點擊商店詳 ......

    uj5u.com 2023-04-20 08:24:03 more
  • day02-短信登錄

    功能實作02 2.功能01-短信登錄 2.1基于Session實作登錄 2.1.1思路分析 2.1.2代碼實作 2.1.2.1發送短信驗證碼 發送短信驗證碼: 發送驗證碼的介面為:http://127.0.0.1:8080/api/user/code?phone=xxxxx<手機號> 請求方式:PO ......

    uj5u.com 2023-04-20 08:23:11 more