Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
DCloud
unidocs-zh
提交
b8173a09
unidocs-zh
项目概览
DCloud
/
unidocs-zh
通知
3172
Star
105
Fork
804
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
93
列表
看板
标记
里程碑
合并请求
67
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
unidocs-zh
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
93
Issue
93
列表
看板
标记
里程碑
合并请求
67
合并请求
67
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
b8173a09
编写于
5月 14, 2022
作者:
雪洛
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
docs: update redis
上级
98c56e89
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
26 addition
and
17 deletion
+26
-17
docs/uniCloud/redis.md
docs/uniCloud/redis.md
+26
-17
未找到文件。
docs/uniCloud/redis.md
浏览文件 @
b8173a09
...
...
@@ -2,12 +2,17 @@
> 2021年11月18日,腾讯云和阿里云均支持
redis是一个内存中的数据结构存储系统,在项目中通常作为数据库的中间件来搭配使用。它的核心优势是快,相对于直接从MongoDB等数据库的磁盘存储中读写数据,操作Redis内存数据库在速度上会有质的提升。但它只能存储key/value格式的数据,也不方便做复杂的查询。所以Redis一般需要与MongoDB搭配使用。
Redis是一个基于key/value的内存数据库。在项目中通常作为MongoDB等磁盘数据库的补充来搭配使用。
相对于磁盘数据库,Redis的核心优势是快。因为操作内存要比磁盘快的多,并且Redis只支持key/value数据,读写都很快。但Redis没有磁盘数据库丰富的查询等功能。
Redis一般需要与MongoDB搭配使用,MongoDB做主存储,Redis缓存部分数据应对高性能需求场景。
在uniCloud中,Redis还有一个特点,是它按容量和使用时长计费,访问它不耗费云数据库的读写次数。
Redis常见使用场景:
-
缓存高频数据,比如首页列表
-
秒杀
抢购
-
ip黑名单屏蔽
-
缓存高频数据,比如首页列表
、banner列表、热门排行。MongoDB数据更新后同步给Redis,这些频繁的请求就不再查询MongoDB数据库
-
秒杀
、抢购。短时间大量并发可能发生超卖,此时必须使用Redis解决
-
ip黑名单屏蔽
。希望较快封杀某些ip请求,缓解MongoDB数据库压力。
-
其他数据库操作速度不满足需求的场景
## 开通Redis扩展库@buy
...
...
@@ -16,6 +21,8 @@ Redis常见使用场景:
## 为云函数启用redis扩展库@use-in-function
Redis的sdk体积不小,没有内置在云函数中。在需要Redis的云函数里,开发者需手动配置Redis扩展库。(Redis没有免费试用,需购买才可以使用)
-
HBuilderX 3.4起提供了可视化界面,新建云函数/云对象时可选择Redis扩展库,或者在已有的云函数目录点右键选择“管理公共模块或扩展库依赖”
-
HBuilderX 3.4以前,没有可视化界面,需要开发者手动在云函数/云对象的package.json内添加云函数的扩展库(如果云函数目录下没有package.json,可以通过在云函数目录下执行
`npm init -y`
来生成)
...
...
@@ -35,6 +42,8 @@ Redis常见使用场景:
}
```
## 云函数中调用Redis
```
js
// 云函数中调用Redis示例
'
use strict
'
;
...
...
@@ -50,19 +59,19 @@ exports.main = async (event, context) => {
```
##
r
edis本地运行@local-function
##
R
edis本地运行@local-function
>
新增于 HBuilderX 3.4.10
>
HBuilderX 3.4.10 起支持
因为Redis在云函数的内网中,所以只能在云端云函数中访问,而不能在本地云函数中访问。每次调试
redis相关功能需要不断的上传云函数,严重影响开发效率。自HBuilderX 3.4.10起,本地云函数可以通过clientDB代理访问云端Redis,无需任何配置自HBuilderX 3.4.10起自动生效。如果你在本地调用云端Redis的话会在clientDB的
日志内看到
`HBuilderX运行调试Redis的代理请求`
字样。
因为Redis在云函数的内网中,所以只能在云端云函数中访问,而不能在本地云函数中访问。每次调试
Redis相关功能需要不断的上传云函数,严重影响开发效率。自HBuilderX 3.4.10起,本地云函数可以通过云端内置代理访问云端Redis。如果在本地调用云端Redis的话会在云函数
日志内看到
`HBuilderX运行调试Redis的代理请求`
字样。
## 数据类型@data-type
r
edis中数据被存储为key-value形式,key均为字符串,value有以下几种类型
R
edis中数据被存储为key-value形式,key均为字符串,value有以下几种类型
### 字符串String
字符串类型,这是最简单Redis类型。需要注意的是
r
edis并没有number类型,如果存入number类型的数据最终也会转为string类型。
字符串类型,这是最简单Redis类型。需要注意的是
R
edis并没有number类型,如果存入number类型的数据最终也会转为string类型。
```
js
await
redis
.
set
(
'
string-key
'
,
1
)
// 设置string-key的值为字符串"1"
...
...
@@ -153,13 +162,13 @@ await redis.set(key: string, value: string, mode: string, duration: number, flag
**入参说明**
|参数
|说明 |必填 |说明
|
|--
|-- |-- |--
|
|key
|键 |是 |
|
|value |值
|是 |
|
|
flag |区分状态进行SET |否 |NX:不存在时才设置,EX:存在时才设置
|
|mode
|标识duration的单位 |否(duration不为空时必填) |EX:单位秒,PX:单位毫秒
|
|
duration |过期时间,到期后自动删除 |否 |
|
|参数
|说明 |必填 |说明
|
|--
|-- |-- |--
|
|key
|键 |是 |
|
|value |值
|是 |
|
|
duration |过期时间,到期后自动删除 |否 |
|
|mode
|标识duration的单位 |否(duration不为空时必填) |EX:单位秒,PX:单位毫秒
|
|
flag |区分状态进行SET |否 |NX:不存在时才设置,XX:存在时才设置
|
**返回值**
...
...
@@ -226,7 +235,7 @@ await redis.setnx(key: string, value: string)
**示例**
```
js
await
redis
.
setnx
(
'
string-key
'
,
'
value
'
)
//
值设置为value,过期时间10秒
await
redis
.
setnx
(
'
string-key
'
,
'
value
'
)
//
键string-key不存在时将值设置为'value'
```
### mget
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录