Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
suncj1314
unidocs-zh
提交
b8173a09
U
unidocs-zh
项目概览
suncj1314
/
unidocs-zh
与 Fork 源项目一致
Fork自
DCloud / unidocs-zh
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
U
unidocs-zh
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
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.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录