如何在云开发Cloudbase中使用Redis?
一 什么是云开发?
首先,我们简单的来再了解一下什么是云开发Cloudbase:云开发是腾讯云为移动开发者提供的一站式后端云服务,可用于开发多种客户端,它帮助开发者统一构建和管理资源,免去了应用开发过程中繁琐的服务器搭建及运维、域名注册、数据接口实现等繁琐流程,让开发者可以专注于业务逻辑的实现,而无需理解后端逻辑及服务器运维知识,开发门槛更低,效率更高。
二 Redis 介绍及应用场景
Redis 是一个开源高性能基于key-value的NoSQL 数据库,支持多种类型的数据结构,如字符串(strings)、散列(hashes)、列表(lists)、集合(sets)、有序集合(sorted set)等而且对数据的操作都是原子性的。Redis运行在内存中,所以具有极高的读写速度,同时也支持数据的持久化,将内存中的数据保存在磁盘中。
1、Redis应用场景
- 计数器:因为Redis操作是原子性的,通过原子递增或递减来做高并发用户的数据计数,比如点赞数、收藏数、分享数、商品抢购时的库存量、商品文章总数、评论数量等
- 排行榜:Redis支持集合和有序集合的数据结构,且运行在内存中,因此可以存储一些类似于排行榜的数据,比如最近、最热、点击率最高、活跃度最高、评论最多等等的文章、商品、用户等;
- 哈希表:用户粉丝列表、用户点赞列表、用户收藏列表、用户关注列表等;
- 自动排序:存储时间戳,随着时间的变化,按照用户关注用户的最新动态列表等自动排序;
- 会话缓存:使用Redis进行会话缓存,将web session存放在Redis中。
- 全页缓存FPC:可以将服务端渲染结果的缓存在Redis中;
- 记录用户操作信息:用户是否点赞、用户是否收藏、用户是否分享等;
2、创建Redis
在云开发中使用Redis首先我们来了解一下私有网络VPC(Virtual Private Cloud)的概念:
私有网络是基于腾讯云构建的专属云上网络空间,为你在腾讯云上的资源提供网络服务,不同私有网络间完全逻辑隔离。你可以自定义网络环境、路由表、安全策略等;同时,私有网络支持多种方式连接 Internet、连接其他 VPC、连接您的本地数据中心,助力您轻松部署云上网络。
1. 公网与私有网络访问数据库的对比
在服务器自建的MySQL或者在腾讯云等云服务公司购买的关系型数据库服务在开放了外部网络连接和IP白名单的情况下,都是可以使用云函数连接的,也就是说云函数是部署在公共网络之中的,只能访问公网的数据库资源(内网或本地的数据库是不行的),而你的数据库要能被公网访问就需要开放外部网络连接和IP白名单。不过云函数目前没有固定的IP,因此数据库需要添加的IP白名单列表会比较长。
- 更高质量,与其他腾讯云产品共享同一自建的内部网络,由于是内部传输,不受公网质量影响,可用性、时延、丢包率保障大大提高;
- 更强安全,内网连接处于腾讯集团级别的防DDos安全防护下,由于不经过广域 Internet 和运营商链路,避免报文在公网传输可能被窃取的风险;
- 内网传输更快,成本更低,云函数外网流量是要计费的,而同一地域的内网流量则是免费的;
2. 私有网络服务的创建
首先打开打开腾讯云控制台的私有网络中免费创建私有网络,由于私有网络具有地域(Region)属性,我们需要在函数所在的地域来新建私有网络。私有网络有三个核心组成成分:私有网络网段IPv4 CIDR、子网和路由表。一个私有网络下的子网可以属于该地域下不同可用区,同一私有网络下各个子网内资源无论是否在同一可用区内,均默认内网互通。如下图:
3. 使用Redis
在云开发中使用redis推荐优先考虑拓展:
使用云开发拓展:
云开发扩展能力是云开发团队为开发者提供的一站式云端服务,旨在降低开发者使用云服务的门槛,助力开发者快速开发应用。
- 1.首先需要在云开发控制台的拓展管理上安装拓展:
- 2.倘若安装中没有实例(即还没有购买Redis数据库,点击新建实例:),倘若已经有实例的可以跳过下一步
- 3.购买Redis数据库,创建实例,配备好私有网络,(注意:目前使用的拓展暂时只支持上海的服务器,因为云开发部署在上海 不建议跨地域的链接,也就是说,如果要使用拓展能力,上文私有网络需配置为上海地区的)
- 4.创建好实例后回到扩展选择刚刚创建(或者已有的)的实例:
- 5.点击完成创建:
- 6.看到有如下扩展即安装成功:
- 7.创建好后查看拓展相关信息:(在这里面我们便可以看到一起创建好的云函数啦~)
- 8.在云函数的列表,我们可以查看到新创建的云函数以及相关的使用方法和配置:
- 9. 具体使用举例:
云函数中连接和操作Redis数据库:(可以在云函数列表中看到拓展创建的云函数的内容)
- 需要提供 Redis 实例的 ip、端口和密码等信息。
- 举例:
//
'use strict';
const redis = require('redis')
let client = redis.createClient({
host: process.env.HOST,
port: process.env.PORT,
// 需要填写真实的密码
password: 'xxx'
})
exports.main = async (event, context, callback) => {
let res = await new Promise((resolve, reject) => {
client.get('test', function (err, reply) {
if (err) {
resolve({
err
})
}
resolve({
data: reply.toString()
})
})
})
return {
res
}
}
Redis有多种数据结构,不同的数据结构的数据的增删改查都有着相应的命令,这里就不多介绍了:更多操作可以查看:https://cloud.tencent.com/developer/doc/1203
更多关于拓展以及云函数的操作可以查看官方文档:https://cloud.tencent.com/document/product/876/45355
总结:
在云开发中使用Redis数据库,思路大体就是以下这样:
- 首先你要开通了腾讯云云开发以及配置好相应的环境以及工具:http://docs.cloudbase.net/quick-start/create-env.html(文档很详细)
- 然后需要创建自己的VPC私有网络,如何创建在上文中已经有说明;
- 两种方式: (1)安装Redis拓展,更好更快的管理Redis服务; (2)在自己开发的云函数中加入刚刚配置好的Redis数据库的私有网络;
- 云函数通过客户端连接Redis进行相关操作。
同样的,使用其他数据库的思路也大同小异,可以参考!
以上文章仅作分享,无商业用途,若有侵权,联系即删!