久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

怎么在云開發中使用 Redis

186次閱讀
沒有評論

共計 3302 個字符,預計需要花費 9 分鐘才能閱讀完成。

這篇文章主要介紹怎么在云開發中使用 Redis,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

Redis 介紹及應用場景

Redis 是一個開源的 In-Memory 的 NoSQL 數據庫,可以用作數據庫、緩存和消息中間件。支持多種類型的數據結構,如字符串(strings)、散列(hashes)、列表(lists)和集合(sets)等。常見的應用場景有:

1. 會話緩存:Redis 不僅在內存中存儲,讀寫速度較快,還提供了持久化方案來提供一致性。

2. 頁面緩存:可以作為 PHP 或者是 Node.js 服務端渲染結果的緩存。

3. 消息隊列:Redis 支持列表且支持 Pub/Sub,可以作為消息隊列來使用。

4. 排行榜 / 計數:Redis 在內存中,因此它在遞增和遞減方面做得非常出色,另外,Redis 也支持集合和排序集合數據結構,比較適合排行榜的場景。

私有網絡介紹

私有網絡(Virtual Private Cloud,VPC)是基于騰訊云構建的專屬云上網絡空間,為你在騰訊云上的資源提供網絡服務,不同私有網絡間完全邏輯隔離。你可以自定義網絡環境、路由表、安全策略等;同時,私有網絡支持多種方式連接 Internet、連接其他 VPC、連接您的本地數據中心,助力您輕松部署云上網絡。

相比于用戶共享資源池的基礎網絡,在私有網絡中用戶可以自由定義網段劃分、IP 地址和路由策略;安全方面可提供網絡 ACL 及安全組的訪問控制,靈活性和安全性更高。

私有網絡有三個核心組成成分:私有網絡網段、子網和路由表。

一個私有網絡由至少一個子網組成,子網的 CIDR(無類別域間路由)必須在私有網絡的 CIDR 內。

子網用于管理彈性云服務器網絡平面的一個網絡,可以提供 IP 地址管理、DNS 等服務。私有網絡中的所有云資源(如云服務器、云數據庫等)都必須部署在子網內。

私有網絡具有 地域(Region)屬性(如廣州),而子網具有 可用區(Zone)屬性(如廣州一區),一個私有網絡下的子網可以屬于該地域下不同可用區,同一私有網絡下各個子網內資源無論是否在同一可用區內,均默認內網互通。

路由表由多條路由策略組成,用于控制私有網絡內子網的出流量走向。每個子網僅且只能關聯一個路由表,一個路由表可以關聯多個子網。您可以為不同流量走向的子網創建多個路由表。

新建私有網絡

在騰訊云控制臺的私有網絡中可以免費創建私有網絡,由于私有網絡具有地域(Region)屬性,我們需要在函數所在的地域來新建私有網絡。

這里我們選擇華東地區(上海)地域,如果您已經在該地域建立了私有網絡,可以跳過這一步。

創建私有網絡時需要初始化一個子網,這里我們選擇建一個在上海二區可用區的子網。

將云函數加入私有網絡

創建私有網絡和子網之后,我們需要配置函數的網絡模式,將函數加入到華東地區(上海)地域的私有網絡中。

在騰訊云的云開發控制臺中,找到需要配置的云函數,點擊編輯進入配置界面:

在函數配置界面中,修改網絡配置為華東地區(上海)地域的虛擬網絡和子網。

購買 Redis 并加入同一個私有網絡

接下來我們在騰訊云的云數據庫控制臺中,找到上海地域,新建一個 Redis 實例:

這里為了方便演示,我們選擇了一個內存為 256 MB 的單副本實例,您也可以根據具體的需求和場景來選擇合適的套餐。

Tips:在生產環境中,為了保證可靠性和高可用,建議不要選擇選擇單副本,最好選擇多副本或者 Redis 集群;另外如果只在 CVM 等單機部署了 Redis,也需要做好容災和備份。

注意網絡類型需要選擇私有網絡,同時選擇剛才建好的私有網絡和子網:

云函數中連接 Redis

購買 Redis 之后,很快就會創建 Redis 的實例,創建成功之后,在網絡下我們可以看到 Redis 實例的 ip,我們需要在云函數中連接這個實例:

1. 在云函數中安裝 Redis 客戶端庫

為了連接和操作 Redis 實例,我們需要一個 Redis 客戶端,這里我們使用社區開源的 ioredis 作為 Redis 客戶端庫作為示例:

首先,在云函數目錄中的 package.json 中新增依賴 ioredis 依賴,設置完之后記得在開發者工具中選擇上傳并部署(云端安裝依賴):

{
 name : redis-demo ,
 dependencies :{
 wx-server-sdk : latest ,
 ioredis : 4.14.1 
}

2. 云函數中連接和操作 Redis

接下來,在云函數中編寫代碼來連接和操作 Redis,這里需要提供 Redis 實例的 ip、端口和密碼等信息。

Tips:建議在 main 函數外面新建 Redis 客戶端實例,這樣在函數實例被復用時不會重復連接 Redis,性能更好。

在 main 函數中可通過 redis.get、redis.set 等方法讀取和寫入數據,具體可以查看 ioredis 的 API 文檔。

constRedis= require( ioredis 
//  建議在  main  函數外面新建  Redis  客戶端實例
//  這樣在函數實例被復用時不會重復連接  Redis
const redis =newRedis({
 port:6379,// Redis port
 host: YOUR_REDIS_IP ,// Redis host
 family:4,// 4 (IPv4) or 6 (IPv6)
 password: YOUR_PASSWORD ,
 db:0,
//  云函數入口函數
exports.main = async (event, context)= {// TODO  可以使用  redis.get、redis.set  等方法來操作  Redis};

示例:云函數中使用 Redis 作為緩存

我們現在來實際演示下一下如何在云函數中使用 Redis 作為緩存

我們需要新建一個名為 redis-demo 的云函數,該函數的主要實現是:

連接部署在同一個私有網絡的 Redis。

在用戶請求云函數時,會首先用用戶的 openid 作為 key 來從 Redis 中查詢是否有緩存。

如果有緩存則直接返回。

沒有緩存,則會執行一個函數來拿到結果,我們這里模擬了一個耗時 2s 的操作來返回一個隨機數作為示例,拿到結果之后,會緩存在 Redis 中并返回。

示例函數代碼:

//  云函數入口文件
const cloud = require( wx-server-sdk 
constRedis= require( ioredis 
cloud.init();
const redis =newRedis({
 port:6379,// Redis port
 host: YOUR_REDIS_IP ,// Redis host
 family:4,// 4 (IPv4) or 6 (IPv6)
 password: YOUR_PASSWORD ,
 db:0,
//  云函數入口函數
exports.main = async (event, context)= {const wxContext = cloud.getWXContext();
const cacheKey = wxContext.OPENID;
const cache = await redis.get(cacheKey);
if(!cache){const result = await newPromise((resolve, reject)= {
//  模擬一個耗時  2s  的任務,返回了一個隨機數
 setTimeout(()=  resolve(Math.random()),2000);
//  緩存一小時
 redis.set(cacheKey, result, EX ,3600);
 return result;
 }else{
 return cache;
 }
};

編寫完代碼之后,我們需要上傳并部署 redis-demo 函數,然后嘗試在小程序中調用這個云函數來測試一下效果:

我們可以看到,由于使用了 Redis 作為緩存,在多次的調用云函數請求中,在 300 ms 左右都可以獲取到函數的結果,函數返回的結果正是我們緩存的隨機數,符合預期的效果。

以上是“怎么在云開發中使用 Redis”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注丸趣 TV 行業資訊頻道!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-07-20發表,共計3302字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 襄汾县| 台南市| 娄底市| 如东县| 息烽县| 祥云县| 金门县| 英超| 澄城县| 石阡县| 焉耆| 碌曲县| 石柱| 金门县| 淳安县| 金华市| 饶阳县| 延寿县| 墨竹工卡县| 南昌市| 军事| 嵊泗县| 龙州县| 平安县| 安远县| 修武县| 工布江达县| 铁力市| 泰顺县| 萨迦县| 临朐县| 山东省| 绍兴市| 定安县| 绥芬河市| 梅州市| 乌恰县| 将乐县| 登封市| 汉川市| 东海县|