日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Serverless 解惑——函数计算如何访问 Redis 数据库

發布時間:2025/3/20 数据库 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Serverless 解惑——函数计算如何访问 Redis 数据库 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

函數計算(Function Compute):函數計算 是事件驅動的全托管計算服務。使用函數計算,您無需采購與管理服務器等基礎設施,只需編寫并上傳代碼。函數計算為您準備好計算資源,彈性地可靠地運行任務,并提供日志查詢、性能監控和報警等功能。借助函數計算,您可以快速構建任何類型的應用和服務,并且只需為任務實際消耗的資源付費。

訪問 Redis 數據庫是指在函數計算中通過編寫代碼調用數據庫驅動庫通過 TCP 協議實現對數據庫進行的插入、查詢等操作。通常函數計算中運行的不同函數實例之間是不共享狀態的,對于結構化的數據可以通過數據庫的形式進行持久化以實現狀態共享。由于用戶函數運行在函數計算的 VPC 中,而用戶的數據庫運行在用戶所屬的 VPC 中,所以在函數計算平臺訪問數據庫會涉及到跨 VPC 訪問的場景,下面我們先來介紹一下其工作機制。

工作機制

訪問 Redis 的原理、工作機制與訪問 Mysql 數據庫完全相同,本文不再重復闡述,更詳細的內容請參考 訪問 Mysql 數據庫 中的工作機制章節。

配置與函數編寫

公共配置

創建專有網絡VPC

  • 登錄 VPC控制臺。
  • 參閱 VPC 搭建專有網絡 創建VPC和交換機。
  • 創建安全組

    在安全組控制臺 新建安全組,點擊 創建安全組,設置安全組名稱,網絡類型選擇 專有網絡,并選擇剛才創建的專有網絡。

    創建與配置 Redis 實例

  • 創建適合業務需求的云數據庫 Redis 版實例可以參考 云數據庫 Redis 版。

  • 創建成功后,在實例信息頁面左側的導航欄中單擊白名單設置

  • 單擊 default 區域框右側的修改

  • 在彈出的對話框中,將 函數計算所在的 VPC 網絡的網段地址配置在白名單輸入框中。

  • 登錄 VPC 控制臺,在專有網絡列表中找到應用所在的 VPC,單擊該 VPC 的名稱進入專有網絡詳情頁面。
  • 復制應用所在的 VPC 的 IPv4 網段
  • 組內白名單設置框中粘貼該 VPC 的 IPv4 網段地址,然后單擊確定
  • 最后訪問 Redis 數據庫 host 為實例的內網地址,可以登錄阿里云控制臺查看:

  • 多種語言的客戶端連接阿里云 Redis 可以參考 Redis 客戶端連接。

    函數計算配置 VPC

    注意:函數計算服務所在區域與公共配置中創建的資源所在區域一致。

  • 在 函數計算控制臺 創建服務。
    • 創建服務步驟請參考文章 服務的增刪改查
  • 【專有網絡配置】選項中,選擇您在步驟一中創建的 VPC 網絡,交換機、安全組。
  • 【權限配置】選項中,選擇【新建角色】,點擊【點擊授權】,在角色快速創建頁面,點擊【同意授權】。
    • 這步的操作是授予函數計算對 ENI 的操作權限,函數計算訪問 VPC 中資源需要的權限請參考文章 配置函數計算訪問 VPC 內的資源
  • 點擊確定,新建服務完畢。
  • 函數編寫與調試

    下面演示 Python3 開發語言訪問 Redis 數據庫函數示例創建:

    使用 Fun 工具在建立存放代碼和依賴模塊目錄下安裝依賴和項目部署。

  • 建立一個目錄,用于存放代碼和依賴模塊,在該目錄下新建 template.yml 文件,例如 /tmp/code/template.yml,內容為:
  • ROSTemplateFormatVersion: '2015-09-01' Transform: 'Aliyun::Serverless-2018-04-03' Resources:Redis-test:Type: 'Aliyun::Serverless::Service'Properties:Description: This is Redis serviceRole: 'acs:ram::XXX:role/fc-public-test'LogConfig:Project: XXXLogstore: XXXXVpcConfig:VpcId: vpc-XXXXXVSwitchIds:- vsw-XXXXSecurityGroupId: sg-XXXXInternetAccess: truepython-test:Type: 'Aliyun::Serverless::Function'Properties:Initializer: 'index.initializer'Handler: 'index.handler'Runtime: python3Timeout: 10MemorySize: 128CodeUri: './'EnvironmentVariables:REDIS_HOST: r-XXXXX.redis.rds.aliyuncs.comREDIS_PASSWORD: XXXXXREDIS_PORT: '6379'
  • 在該目錄下創建 Funfile 文件內容為:
  • RUNTIME python3 RUN fun-install pip install redis
  • 執行fun install命令安裝依賴:

    $ fun install using template: template.yml start installing function dependencies without dockerbuilding Redis-test/python-test Funfile exist, Fun will use container to build forcely Step 1/2 : FROM registry.cn-beijing.aliyuncs.com/aliyunfc/runtime-python3.6:build-1.7.7---> 373f5819463b Step 2/2 : RUN fun-install pip install redis---> Running in f26aef48f9e5 Task => PipTask=> PYTHONUSERBASE=/code/.fun/python pip install --user redis Removing intermediate container f26aef48f9e5---> 809c6655f9e9 sha256:809c6655f9e93d137840b1446f46572fbab7548c5c36b6ae66599dfc2e27555b Successfully built 809c6655f9e9 Successfully tagged fun-cache-78c74899-5497-4205-a670-24e4daf88284:latest copying function artifact to /Users/txd123/Desktop/Redis/PythonInstall Success
  • 在函數根目錄下新建代碼文件,例如 /tmp/code/index.py,在代碼中使用 redis :

    # -*- coding: utf-8 -*- import os,sys import redis def initializer(context):global conn_poolconn_pool=redis.ConnectionPool(host=os.environ['REDIS_HOST'],password=os.environ['REDIS_PASSWORD'],port=os.environ['REDIS_PORT'],db=1,decode_responses=True)def handler(event, context):r = redis.Redis(connection_pool=conn_pool)r.set('test','89898')r.set('zyh_info','{"name":"Tanya","password":"123456","account":11234}')print(r.get('test'))return r.get('zyh_info')
  • 使用 fun 工具部署:

    $ fun deploy using template: template.yml using region: cn-hangzhou using accountId: ***********3743 using accessKeyId: ***********Ptgk using timeout: 60Waiting for service Redis-test to be deployed...Waiting for function python-test to be deployed...Waiting for packaging function python-test code...The function python-test has been packaged. A total of 25 files files were compressed and the final size was 138.78 KBfunction python-test deploy success service Redis-test deploy success
  • 登錄控制臺,即可看到相關的服務、函數被創建成功,且觸發執行可以返回正確的結果。

    總結

    通過本文介紹可以快速實現函數計算訪問 Redis 數據庫。

    使用函數計算帶來的優勢:

  • 無需采購和管理服務器等基礎設施,只需專注業務邏輯的開發,可以大幅縮短項目交付時間和人力成本;
  • 提供日志查詢、性能監控、報警等功能快速排查故障;
  • 免運維,毫秒級別彈性伸縮,快速實現底層擴容以應對峰值壓力,性能優異;
  • 成本極具競爭力;
  • “阿里巴巴云原生技術圈關注微服務、Serverless、容器、Service Mesh 等技術領域、聚焦云原生流行技術趨勢、云原生大規模的落地實踐,做最懂云原生開發者的技術圈。”

    總結

    以上是生活随笔為你收集整理的Serverless 解惑——函数计算如何访问 Redis 数据库的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。