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

Redis 是一個(gè)開(kāi)源的 In-Memory 的 NoSQL 數(shù)據(jù)庫(kù),可以用作數(shù)據(jù)庫(kù)、緩存和消息中間件。支持多種類型的數(shù)據(jù)結(jié)構(gòu),如字符串(strings)、散列(hashes)、列表(lists)和集合(sets)等。常見(jiàn)的應(yīng)用場(chǎng)景有:
1. 會(huì)話緩存:Redis 不僅在內(nèi)存中存儲(chǔ),讀寫速度較快,還提供了持久化方案來(lái)提供一致性。
2. 頁(yè)面緩存:可以作為 PHP 或者是 Node.js 服務(wù)端渲染結(jié)果的緩存。
3. 消息隊(duì)列:Redis 支持列表且支持 Pub/Sub,可以作為消息隊(duì)列來(lái)使用。
4. 排行榜/計(jì)數(shù):Redis 在內(nèi)存中,因此它在遞增和遞減方面做得非常出色,另外,Redis 也支持集合和排序集合數(shù)據(jù)結(jié)構(gòu),比較適合排行榜的場(chǎng)景。
私有網(wǎng)絡(luò)(Virtual Private Cloud,VPC)是基于騰訊云構(gòu)建的專屬云上網(wǎng)絡(luò)空間,為你在騰訊云上的資源提供網(wǎng)絡(luò)服務(wù),不同私有網(wǎng)絡(luò)間完全邏輯隔離。你可以自定義網(wǎng)絡(luò)環(huán)境、路由表、安全策略等;同時(shí),私有網(wǎng)絡(luò)支持多種方式連接 Internet、連接其他 VPC、連接您的本地?cái)?shù)據(jù)中心,助力您輕松部署云上網(wǎng)絡(luò)。
相比于用戶共享資源池的基礎(chǔ)網(wǎng)絡(luò),在私有網(wǎng)絡(luò)中用戶可以自由定義網(wǎng)段劃分、IP 地址和路由策略;安全方面可提供網(wǎng)絡(luò) ACL 及安全組的訪問(wèn)控制,靈活性和安全性更高。

私有網(wǎng)絡(luò)有三個(gè)核心組成成分:私有網(wǎng)絡(luò)網(wǎng)段、子網(wǎng)和路由表。
一個(gè)私有網(wǎng)絡(luò)由至少一個(gè)子網(wǎng)組成,子網(wǎng)的 CIDR(無(wú)類別域間路由) 必須在私有網(wǎng)絡(luò)的 CIDR 內(nèi)。
子網(wǎng)用于管理彈性云服務(wù)器網(wǎng)絡(luò)平面的一個(gè)網(wǎng)絡(luò),可以提供 IP 地址管理、DNS 等服務(wù)。私有網(wǎng)絡(luò)中的所有云資源(如云服務(wù)器、云數(shù)據(jù)庫(kù)等)都必須部署在子網(wǎng)內(nèi)。
私有網(wǎng)絡(luò)具有 地域(Region) 屬性(如廣州),而子網(wǎng)具有 可用區(qū)(Zone) 屬性(如廣州一區(qū)),一個(gè)私有網(wǎng)絡(luò)下的子網(wǎng)可以屬于該地域下不同可用區(qū),同一私有網(wǎng)絡(luò)下各個(gè)子網(wǎng)內(nèi)資源無(wú)論是否在同一可用區(qū)內(nèi),均默認(rèn)內(nèi)網(wǎng)互通。
路由表由多條路由策略組成,用于控制私有網(wǎng)絡(luò)內(nèi)子網(wǎng)的出流量走向。每個(gè)子網(wǎng)僅且只能關(guān)聯(lián)一個(gè)路由表,一個(gè)路由表可以關(guān)聯(lián)多個(gè)子網(wǎng)。您可以為不同流量走向的子網(wǎng)創(chuàng)建多個(gè)路由表。
在騰訊云控制臺(tái)的私有網(wǎng)絡(luò)中可以免費(fèi)創(chuàng)建私有網(wǎng)絡(luò),由于私有網(wǎng)絡(luò)具有地域(Region)屬性,我們需要在函數(shù)所在的地域來(lái)新建私有網(wǎng)絡(luò)。
這里我們選擇華東地區(qū)(上海)地域,如果您已經(jīng)在該地域建立了私有網(wǎng)絡(luò),可以跳過(guò)這一步。

創(chuàng)建私有網(wǎng)絡(luò)時(shí)需要初始化一個(gè)子網(wǎng),這里我們選擇建一個(gè)在上海二區(qū)可用區(qū)的子網(wǎng)。

創(chuàng)建私有網(wǎng)絡(luò)和子網(wǎng)之后,我們需要配置函數(shù)的網(wǎng)絡(luò)模式,將函數(shù)加入到華東地區(qū)(上海)地域的私有網(wǎng)絡(luò)中。
在騰訊云的云開(kāi)發(fā)控制臺(tái)中,找到需要配置的云函數(shù),點(diǎn)擊編輯進(jìn)入配置界面:

在函數(shù)配置界面中,修改網(wǎng)絡(luò)配置為華東地區(qū)(上海)地域的虛擬網(wǎng)絡(luò)和子網(wǎng)。

接下來(lái)我們?cè)隍v訊云的云數(shù)據(jù)庫(kù)控制臺(tái)中,找到上海地域,新建一個(gè) Redis 實(shí)例:

這里為了方便演示,我們選擇了一個(gè)內(nèi)存為 256 MB 的單副本實(shí)例,您也可以根據(jù)具體的需求和場(chǎng)景來(lái)選擇合適的套餐。
Tips:在生產(chǎn)環(huán)境中,為了保證可靠性和高可用,建議不要選擇選擇單副本,最好選擇多副本或者 Redis 集群;另外如果只在 CVM 等單機(jī)部署了 Redis,也需要做好容災(zāi)和備份。
注意網(wǎng)絡(luò)類型需要選擇私有網(wǎng)絡(luò),同時(shí)選擇剛才建好的私有網(wǎng)絡(luò)和子網(wǎng):

購(gòu)買 Redis 之后,很快就會(huì)創(chuàng)建 Redis 的實(shí)例,創(chuàng)建成功之后,在網(wǎng)絡(luò)下我們可以看到 Redis 實(shí)例的 ip,我們需要在云函數(shù)中連接這個(gè)實(shí)例:

1. 在云函數(shù)中安裝 Redis 客戶端庫(kù)
為了連接和操作 Redis 實(shí)例,我們需要一個(gè) Redis 客戶端,這里我們使用社區(qū)開(kāi)源的 ioredis 作為 Redis 客戶端庫(kù)作為示例:

首先,在云函數(shù)目錄中的 package.json 中新增依賴 ioredis 依賴,設(shè)置完之后記得在開(kāi)發(fā)者工具中選擇上傳并部署(云端安裝依賴):
{
"name":"redis-demo",
"dependencies":{
"wx-server-sdk":"latest",
"ioredis":"4.14.1"
}
}2. 云函數(shù)中連接和操作 Redis
接下來(lái),在云函數(shù)中編寫代碼來(lái)連接和操作 Redis,這里需要提供 Redis 實(shí)例的 ip、端口和密碼等信息。
Tips:建議在 main 函數(shù)外面新建 Redis 客戶端實(shí)例,這樣在函數(shù)實(shí)例被復(fù)用時(shí)不會(huì)重復(fù)連接 Redis ,性能更好。
在 main 函數(shù)中可通過(guò) redis.get、redis.set 等方法讀取和寫入數(shù)據(jù),具體可以查看 ioredis 的 API 文檔。
constRedis= require('ioredis');
// 建議在 main 函數(shù)外面新建 Redis 客戶端實(shí)例
// 這樣在函數(shù)實(shí)例被復(fù)用時(shí)不會(huì)重復(fù)連接 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,
});
// 云函數(shù)入口函數(shù)
exports.main = async (event, context)=>{
// TODO 可以使用 redis.get、redis.set 等方法來(lái)操作 Redis
};我們現(xiàn)在來(lái)實(shí)際演示下一下如何在云函數(shù)中使用 Redis 作為緩存
我們需要新建一個(gè)名為 redis-demo 的云函數(shù) ,該函數(shù)的主要實(shí)現(xiàn)是:
連接部署在同一個(gè)私有網(wǎng)絡(luò)的 Redis。
在用戶請(qǐng)求云函數(shù)時(shí),會(huì)首先用用戶的 openid 作為 key 來(lái)從 Redis 中查詢是否有緩存。
如果有緩存則直接返回。
沒(méi)有緩存,則會(huì)執(zhí)行一個(gè)函數(shù)來(lái)拿到結(jié)果,我們這里模擬了一個(gè)耗時(shí) 2s 的操作來(lái)返回一個(gè)隨機(jī)數(shù)作為示例,拿到結(jié)果之后,會(huì)緩存在 Redis 中并返回。
// 云函數(shù)入口文件
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,
});
// 云函數(shù)入口函數(shù)
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)=>{
// 模擬一個(gè)耗時(shí) 2s 的任務(wù),返回了一個(gè)隨機(jī)數(shù)
setTimeout(()=> resolve(Math.random()),2000);
});
// 緩存一小時(shí)
redis.set(cacheKey, result,'EX',3600);
return result;
}else{
return cache;
}
};編寫完代碼之后,我們需要上傳并部署 redis-demo 函數(shù),然后嘗試在小程序中調(diào)用這個(gè)云函數(shù)來(lái)測(cè)試一下效果:

我們可以看到,由于使用了 Redis 作為緩存,在多次的調(diào)用云函數(shù)請(qǐng)求中,在 300 ms 左右都可以獲取到函數(shù)的結(jié)果,函數(shù)返回的結(jié)果正是我們緩存的隨機(jī)數(shù),符合預(yù)期的效果。
以上是“怎么在云開(kāi)發(fā)中使用 Redis”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道!
網(wǎng)站題目:怎么在云開(kāi)發(fā)中使用Redis-創(chuàng)新互聯(lián)
地址分享:http://chinadenli.net/article6/shgog.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開(kāi)發(fā)、網(wǎng)站設(shè)計(jì)、移動(dòng)網(wǎng)站建設(shè)、網(wǎng)站策劃、靜態(tài)網(wǎng)站、品牌網(wǎng)站設(shè)計(jì)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容