Redis資料庫安裝與使用總結

来源:https://www.cnblogs.com/cs-songbai/p/18084979
-Advertisement-
Play Games

Redis語句總結 一、基本概念 Redis 全稱: Remote Dictionary Server(遠程字典伺服器)的縮寫,以字典結構存儲數據,並允許其他應用通過TCP協議讀寫字典中的內容。 使用C語言編寫,並以記憶體作為數據存儲介質,所以讀寫數據的效率極高 *redis的官方只提供了linux版 ...


Redis語句總結

一、基本概念

Redis 全稱: Remote Dictionary Server(遠程字典伺服器)的縮寫,以字典結構存儲數據,並允許其他應用通過TCP協議讀寫字典中的內容。 使用C語言編寫,並以記憶體作為數據存儲介質,所以讀寫數據的效率極高

*redis的官方只提供了linux版本的redis,window系統的redis是微軟團隊根據官方的linux版本高仿的

二、Redis資料庫特點

  • Redis支持數據的持久化

    可以將記憶體中的數據保存在磁碟中,重啟的時候可以再次載入進行使用

    • 持久化的兩種方式:

      • RDB(Redis DataBase)

        RDB持久化通過fork出一個子進程,在指定的時間間隔內將記憶體中的數據集快照寫入到二進位文件中。這個文件通常命名為`dump.rdb`。
        
      • AOF(Append Only File)

        AOF持久化通過記錄所有的寫命令,並以追加式的方式將這些命令保存到AOF文件中。
        

三、Redis的應用場景

  • 緩存系統("熱點" 數據:高頻讀、低頻寫):緩存用戶信息,優惠券過期時間,驗證碼過期時間、session、token等
  • 計數器:帖子的瀏覽數,視頻播放次數,評論次數、點贊次數等
  • 消息隊列,秒殺系統
  • 排行榜(有序集合)
  • 發佈訂閱:粉絲關註、消息通知

四、Redis安裝

  • 安裝包下載地址 (建議使用5.X+版本)

  • 平臺安裝軟體

    • Windows 系統安裝並啟動 Redis

      • 雙擊 .msi 文件安裝軟體

      • 通過指定配置文件路徑啟動Redis伺服器

        redis-server D:/soft/redis/redis.windows.conf
        
      • Redis伺服器 啟動/停止

        # 啟動服務
        redis-server --service-start
        # 關閉服務
        redis-server --service-stop
        
  • Ubuntu平臺安裝軟體

    安裝命令:sudo apt-get install -y redis-server
    卸載命令:sudo apt-get purge --auto-remove redis-server 
    關閉命令:sudo service redis-server stop 
    開啟命令:sudo service redis-server start 
    重啟命令:sudo service redis-server restart
    配置文件:/etc/redis/redis.conf
    

五、Redis基本配置

  • 配置

    # window下的配置文件保存在軟體 安裝目錄下
    
    # mac或者linux操作系統Redis的配置信息在/etc/redis/redis.conf下。
    # 查看編輯指令: 
    sudo vi /etc/redis/redis.conf
    
  • 核心配置選項

    • 綁定ip:如果需要遠程訪問,可將此⾏註釋,或綁定⼀個真實ip

      bind 127.0.0.1
      
    • 端⼝,預設為6379

      port 6379
      
    • 是否以守護進程運⾏

      # 1. 如果以守護進程運⾏,則不會在命令⾏阻塞,類似於服務
      # 2. 如果以⾮守護進程運⾏,則當前終端被阻塞
      # 3. 設置為yes表示守護進程,設置為no表示⾮守護進程
      # 4. 推薦設置為yes
      daemonize yes
      
    • RDB持久化的備份文件

      dbfilename dump.rdb
      
    • RDB持久化資料庫數據文件的所在目錄

      dir /var/lib/redis
      
    • ⽇志⽂件

      logfile "/var/log/redis/redis-server.log"
      
    • 資料庫,預設有16個

      database 16
      

六、基本指令

# 啟動redis伺服器
sudo service redis start

# 關閉redis伺服器
sudo service redis stop

# 運⾏連接測試命令
ping
# 本地連接
redis-cli
# 遠程連接
redis-cli -h IP地址 -P 埠

# 切換數據數據(Redis預設支持16個資料庫,從0開始的遞增數字命名)
select 庫名

# 查看伺服器端和客戶端的幫助⽂檔
redis-server --help
redis-cli --help

# 其他指令
# 查看redis伺服器進程
ps aux | grep redis 
# 殺死redis伺服器
sudo kill -9 pid
# 指定載入的配置文件
sudo redis-server /etc/redis/redis.conf

# 清空所有庫中鍵值對
flushall  

# 清空當前庫中鍵值對
flushdb  

五、Reids數據結構

  • redis是key-value的數據結構,每條數據都是⼀個鍵值對
  • 鍵的類型是字元串
  • 鍵不能重覆
  • 值的類型分為五種自有類型和一種自定義類型
    • 字元串string
    • 哈希hash
    • 列表list
    • 集合set
    • 有序集合zset
  • 數據的操作行為
    • 保存
    • 修改
    • 獲取
    • 刪除
  • 官⽹命令⽂檔

六、數據操作

1. string類型

字元串類型是 Redis 中最為基礎的數據存儲類型,它在 Redis 中是二進位安全的,這便意味著該類型可以接受任何格式的數據,如JPEG圖像數據或Json對象描述信息等。在Redis中字元串類型的Value最多可以容納的數據長度是512M。
【保存】

如果設置的鍵不存在則為添加,如果設置的鍵已經存在則修改

  • 設置鍵值

    set key value
    
    # eg: 設置鍵為name值為fl的數據
    set name fl
    
  • 設置鍵值,值不可修改

    setnx key value
    
    # eg: 設置鍵為name值為fl的數據
    setnx name fl
    
    # setnx鍵對應的值不可修改,這裡修改name無效
    setnx name fl1
    get name
    >> "fl"
    
  • 設置多個鍵值

    mset key1 value1 key2 value2 ...
    
    # eg: 設置鍵為'a1'值為'python'、鍵為'a2'值為'java'、鍵為'a3'值為'c'
    mset a1 python a2 java a3 c
    
  • 追加值

    append key value
    
    # eg: 向鍵a1對應的值中追加值' haha'
    append a1 'haha'
    
  • 自增自減

    # key 對用值必須為數字類型字元串
    incr key
    decr key
    incrby key increment
    decrby key increment
    
    # eg: 向鍵age對應的值自增100
    incrby age 100
    
  • 查詢字元串長度

    strlen key
    
    # eg: 查詢鍵age的長度
    strlen age
    
【查詢】
  • 獲取:根據鍵獲取值,如果不存在此鍵則返回nil

    get key
    
    # eg: 獲取鍵'name'的值
    get 'name'
    
  • 根據多個鍵獲取多個值

    mget key1 key2 ...
    
    # eg: 獲取鍵a1、a2、a3'的值
    mget a1 a2 a3
    

2. 鍵命令

  • 查找鍵,參數⽀持正則表達式

    keys pattern
    
    # eg1: 查看所有鍵
    keys *
    
    # *:匹配任意字元
    # ?:匹配一個字元
    # []:匹配括弧里的任一字元
    # \ :轉義
    # eg2: 查看名稱中包含a的鍵
    keys 'a*'
    
  • 判斷鍵是否存在,如果存在返回1,不存在返回0

    exists key1
    
    # eg: 判斷鍵a1是否存在
    exists a1
    
  • 查看鍵對應的value的類型

    type key
    
    # eg:查看鍵a1的值類型,為redis⽀持的五種類型中的⼀種
    type a1
    
  • 刪除鍵及對應的值

    del key1 key2 ...
    
    # eg: 刪除鍵a2、a3
    del a2 a3
    
  • 設置過期時間,以秒為單位; 如果沒有指定過期時間則⼀直存在,直到使⽤DEL移除

    expire key seconds
    
    # eg: 設置鍵'a1'的過期時間為3秒
    expire 'a1' 3
    
  • 查看有效時間,以秒為單位

    ttl key
    
    # eg:查看鍵'bb'的有效時間
    ttl bb
    
  • 讓鍵重新變成永久(成功返回1, 否則返回0,表示鍵不存在或者本身就是永久的)

    PERSIST 鍵
    
  • 設置鍵值對同時設置過期時間:

    setex key value EX seconds
    setex key seconds value
    
    # eg: 設置鍵為aa值為aa過期時間為3秒的數據
    setex aa aa ex 3
    setex aa 3 aa
    

3.hash類型

hash⽤於存儲對象,對象的結構為屬性、值; 值的類型為string
【增加、修改】
  • 設置單個屬性 或 多個屬性

    hset key field value
    hmset key field1 value1 field2 value2 ...
    
    # eg: 設置鍵 user的屬性name為fengling
    hset user name fengling
    # eg: 設置鍵u2的 屬性name為fengling、屬性age為18
    hmset u2 name fengling age 18
    
  • 其他

    # 存在返回1 不存在返回0
    hexists 鍵 域
    
    # 不存在是添加,存在什麼也不做
    hsetnx 鍵 域 域值
    
    # 增加數字
    hincrby 鍵 域 自增值
    
【查詢】
  • 獲取指定鍵 所有的屬性 或 所有的值

    hkeys key
    hvals key
    
    # eg1: 獲取鍵u2的所有屬性
    hkeys u2
    # eg2: 獲取鍵u2所有屬性的值
    hvals u2
    
  • 獲取⼀個屬性的值 或 多個屬性的值

    hget key field
    hmget key field1 field2 ...
    
    # eg: 獲取鍵u2屬性'name'的值
    hget u2 'name'
    # eg: 獲取鍵u2屬性'name'、'age的值
    hmget u2 name age
    
  • 獲取鍵中所有屬性和值

    hgetall key
    
  • 獲取域的個數

    hlen key
    
    # eg: 獲取鍵u2屬性個數
    hlen u2
    
【刪除】
  • 刪除屬性,屬性對應的值會被⼀起刪除

    hdel key field1 field2 ...
    
    # eg: 刪除鍵'u2'的屬性'age'
    hdel u2 age
    

4. list類型

列表的元素類型為string; 按照插⼊順序排序
【增加】
  • 插⼊數據

    # 在列表左側/右側插入數據
    lpush key value1 value2 ...
    rpush key value1 value2 ...
    
    # eg1:從鍵為'a1'的列表左側加⼊數據a b c
    lpush a1 a b c
    # eg2:從鍵為'a1'的列表右側加⼊數據0 1
    rpush a1 0 1
    
  • 在指定元素的前或後插⼊新元素

    linsert key before或after 現有元素 新元素
    
    # eg: 在鍵為'a1'的列表中元素'b'前加⼊'3'
    linsert a1 before b 3
    
【查詢】
  • 返回列表⾥指定範圍內的元素

    • start、stop為元素的下標索引

    • 索引從左側開始,第⼀個元素為0

    • 索引可以是負數,表示從尾部開始計數,如-1表示最後⼀個元素

      lrange key start stop
      
      # eg: 獲取鍵為'a1'的列表所有元素
      lrange a1 0 -1
      
  • 返回列表⾥指定索引值的元素

    lindex key value
    
    # eg: 獲取列表num中索引為1的元素
    lindex num 1
    
  • 返回列表成員長度

    llen key
    
    # eg: 獲取列表num中元素個數
    llen num
    
【修改】
  • 設置指定索引位置的元素值

    • 索引從左側開始,第⼀個元素為0

    • 索引可以是負數,表示尾部開始計數,如-1表示最後⼀個元素

      lset key index value
      
      # eg: 修改鍵為'a1'的列表中下標為1的元素值為'z'
      lset a 1 z
      
【刪除】
  • 刪除指定元素

    • 將列表中前count次出現的值為value的元素移除

    • count > 0: 從頭往尾移除

    • count < 0: 從尾往頭移除

    • count = 0: 移除所有

      lrem key count value
      
      # eg1:向列表'a2'中加⼊元素'a'、'b'、'a'、'b'、'a'、'b'
      lpush a2 a b a b a b
      
      # eg2:從'a2'列表右側開始刪除2個'b'
      lrem a2 -2 b
      
      # eg3:查看列表'py12'的所有元素
      lrange a2 0 -1
      
  • 移除並獲取列表的第一個成員或最後一個成員

    # 刪除列表第一個成員, 並獲取移除的元素
    lpop key
    # 刪除列表最後一個成員, 並獲取移除的元素
    rpop key
    

5. set類型

set 無序集合,元素為string類型;元素具有唯⼀性,不重覆
說明:對於集合沒有修改操作
【增加】
  • 添加元素

    sadd key member1 member2 ...
    
    # eg: 向鍵'a3'的集合中添加元素'zhangsan'、'lisi'、'wangwu'
    sadd a3 zhangsan sili wangwu
    
【查詢】
  • 獲取所有的元素

    smembers key
    
    # eg: 獲取鍵'a3'的集合中所有元素
    smembers a3
    
  • 隨機獲取多個元素

    # count>0,隨機獲取count個元素,不可重覆
    # count<0,隨機獲取count個元素,可重覆
    SRANDMEMBER key [count]
    
  • 獲取元素個數

    scard 鍵
    
【刪除】
  • 隨機刪除count個元素

    spop 鍵 [count]
    
  • 刪除指定元素

    srem key value1 value2 value3 ...
    
    # eg: 刪除鍵'a3'的集合中元素'wangwu'和 'zs'
    srem a3 wangwu zs
    
【判斷】
  • 判斷元素是否存在

    sismember 鍵 元素值
    
【交集、差集和並集】
# 交集、比較多個集合中共同存在的成員
sinter key1 key2 key3 ...
# 差集、比較多個集合中不同的成員
sdiff key1 key2 key3 ...
# 並集、合併所有集合的成員,並去重
sunion key1 key2 key3 ...

# eg: 計算set1 set2 set3 set4的交並差集
sadd set1 1 2 3 4
sadd set2 1 3 4 5
sadd set3 1 3 5 6
sadd set4 2 3 4

sinter set1 set2
>> "1" "3" "4"
sinter set1 set2 set3 set4
>> "3"

sdiff set1 set2
>> "2"
sdiff set2 set1
>> "5"

sunion set1 set2 set3 set4
>> "1" "2" "3" "4" "5" "6"

6. zset類型

zet 有序集合(sorted set) 元素為string類型; 元素具有唯⼀性,不重覆. 每個元素都會關聯⼀個double類型的score,表示權重,通過權重將元素從小到大排序
說明:沒有修改操作
【增加】
  • 添加元素

    zadd key score1 member1 score2 member2 ...
    
    # 向鍵'a4'的集合中添加元素'lisi'、'wangwu'、'zhaoliu'、'zhangsan',權重分別為4、5、6、3
    zadd a4 4 lisi 5 wangwu 6 zhaoliu 3 zhangsan
    
【查詢】
  • 返回指定範圍內的元素, 按score排序

    • start、stop為元素的下標索引

    • 索引從左側開始,第⼀個元素為0

    • 索引可以是負數,表示從尾部開始計數,如-1表示最後⼀個元素

      zrange key start stop [withscores]
      zrevrange key start stop [withscores]
      
      # eg1: 獲取鍵'a4'的集合中所有元素,按score從低到高排序
      zrange a4 0 -1
      # eg2: 獲取鍵'a4'的集合中所有元素,按score從低到高排序,並輸出score
      zrange a4 0 -1 withscores
      # eg3: 獲取鍵'a4'的集合中所有元素,按score從高到低排序
      zrevrange a4 0 -1
      
  • 返回score值在min和max之間的成員

    # LIMIT中offset代表跳過多少個元素,count是返回幾個
    zrangebyscore key min max [WITHSCORES] [LIMIT offset count]
    zrevrangebyscore key max min [WITHSCORES] [LIMIT offset count]
    
    # eg1: 獲取鍵'a4'的集合中許可權值在5和6之間的成員,按score從低到高排序
    zrangebyscore a4 5 6
    # eg2: 獲取鍵'a4'的集合中許可權值在5和6之間的成員,按score從高到低排序
    zrevrangebyscore a4 6 5
    # eg3: 獲取鍵'a4'的集合中許可權值在3和60之間的成員,按score從低到高排序;跳過第一個元素獲取兩個元素
    zrangebyscore a4 3 60 limit 1 2
    
  • 返回成員member的score值

    zscore key member
    
    # 獲取鍵'a4'的集合中元素'zhangsan'的權重
    zscore a4 zhangsan
    
  • 獲取指定分數範圍的元素個數

    zcount key min max
    
    # 獲取鍵'a4'的集合中的元素權重為 3-5 的元素個數
    zcount a4 3 5
    
  • 按score對指定成員在集合中的排名(排名從0開始計算)

    # score從小到大的排名
    zrank key member
    # score從大到小的排名
    zrevrank key member
    
    # 集合a4中元素zhaoliu的排名
    zrank a4 zhaoliu
    
【修改】
  • 修改指定元素的score

    zincrby key 增加值 member
    
    # 將 鍵'a4'的元素zhaoliu的score增加10
    zincrby a4 10 zhaoliu
    
【刪除】
  • 刪除指定元素

    zrem key member1 member2 ...
    
    # eg: 刪除集合'a4'中元素'zhangsan'
    zrem a4 zhangsan
    
  • 刪除權重在指定範圍的元素

    zremrangebyscore key min max
    
    # eg: 刪除集合'a4'中許可權在5、6之間的元素
    zremrangebyscore a4 5 6
    
  • 刪除指定數量的成員

    # 刪除指定數量的成員,從最低score開始刪除, count預設為1
    zpopmin key [count]
    # 刪除指定數量的成員,從最高score開始刪除, count預設為1
    zpopmax key [count]
    
    # eg: 刪除集合'a4'中score最小的元素
    zpopmin a4
    

7. 比特流操作

# 按從左到右的偏移量設置一個bit數據的值
setbit key offset value
# 獲取一個bit數據的值
getbit
# 統計字元串被設置為1的bit數.
bitcount
# 返回字元串裡面第一個被設置為1或者0的bit位。
bitpos

# eg:
setbit mykey 7 1
>> "\x01"

六、分佈訂閱

  • 訂閱 subscribe

    # 訂閱法語
    subscribe channel1 channel2 channel3...
    
    # eg: 訂閱一個名為 info 的 channel
    subscribe info
    
    >>>
    Reading messages... (press Ctrl-C to quit)
    1) "subscribe"
    2) "info"
    3) (integer) 1
    
  • 發佈 public

    # 發佈法語
    publish channel message
    
    # eg: 給 info 頻道發佈消息 "python"
    publish info python
    
    # 返回訂閱的人數
    >>>
    publish info "python"
    (integer) 2
    
  • 運行結果

    # 訂閱方終端顯示內容
    Reading messages... (press Ctrl-C to quit)
    1) "subscribe"
    2) "info"
    3) (integer) 1
    1) "message"
    2) "info"
    3) "python"
    
  • redis與python交互

    • 發佈訂閱消費者

      import redis
      
      my_redis = redis.Redis(host="127.0.0.1", port=7777)
      
      # 創建訂閱者對象
      subscribe = my_redis.pubsub()
      subscribe.subscribe("room_01")
      
      # 忽略 訂閱本身的響應
      subscribe.parse_response()
      
      while True:
          print("waitting...")
          listen_msg = subscribe.parse_response()
          print(listen_msg)
      
      
    • 發佈訂閱生產者

      import redis
      import time
      
      my_redis = redis.Redis(host="127.0.0.1", port=7777)
      
      for item in "hello":
          time.sleep(1)
          my_redis.publish("room_01", item)
      
      

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 實驗環境: 一臺安裝好的DNS伺服器,ip為192.168.1.201 一臺郵件伺服器,192.168.1.224 一臺客戶端,192.168.1.249,dnsIP為192.168.1.201 都是wmnet1,使其能互相ping通 一:配置DNS 1.打開DNS伺服器,新建主機 把郵件伺服器的主 ...
  • 本文主要學習 FreeRTOS 事件組的相關知識,包括事件組概述、事件組特征、創建事件組、操作事件組、刪除事件組等知識 ...
  • 放眼全球,數據作為一種新興生產要素,在全球經貿活動中扮演著至關重要的角色,驅動著數字經濟的蓬勃興起。據前瞻預測,至2025年,全球數據流動對整體經濟增長的貢獻預估將達到驚人的11萬億美元。 近幾年國家對數據要素關註度不斷上升。2023年12月31日,國家數據局等17部門聯合印發《“數據要素×”三年行 ...
  • varchar的最大值是多少?如果你去搜索過這個答案,我相信你或多或少都看到過65535這個答案。比如我們嘗試詢問一下當下最火的人工智慧,你可能會得到和我類似答案。 ...
  • 在用Apache SeaTunnel研發SM2加密組件過程中,發現社區關於本地調試SeaTunnel文章過於簡單,很多情況沒有說明,於是根據自己遇到問題總結這篇文檔。SeaTunnel本地調試官方文檔,希望對大家有所幫助! 使用的引擎為Flink(不需要下載,SeaTunnel中有載入依賴),輸入輸 ...
  • 前言 本文記錄 ES 的一些基本操作,就是對官方文檔的一些整理,按自己的習慣重新排版,湊合著看。官方的更詳細,建議看官方的。 下文以 books 為索引名舉例。 新增 添加單個文檔 (沒有索引會自動創建) POST books/_doc {"name": "Snow Crash", "author" ...
  • 前置概念 無併發的解決方案 一些小型項目,或極少有併發的項目,這些策略在無併發情況下,不會有什麼問題。 讀數據策略:有緩存則讀緩存,然後介面返回。沒有緩存,查詢出數據,載入緩存,然後介面返回。 寫數據策略:數據發生了變動,先刪除緩存,再更新數據,等下次讀取的時候載入緩存,或一步到位更新數據後直接更新 ...
  • mysql語句總結 創建 --create 創建 <create> create database 資料庫名 [charset=utf8]; create table 數據表名 ( (欄位 類型 約束[, 欄位 類型 約束]) | -- 級聯刪除/級聯更新 on delete/update casc ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...