Fix: Redis Service

改成 MidwayJS 官方提供的方案
This commit is contained in:
奇趣保罗 2022-04-20 02:44:34 +08:00
parent 4199574109
commit 48d289b076
14 changed files with 139 additions and 193 deletions

9
.env
View File

@ -1,7 +1,6 @@
DB_NAME=paul_api_next
DB_USER=root
DB_PASS=233456
DB_PORT=8889
DB_LINK=localhost
DB_URL=mysql://root:233456@localhost:8889/paul_api_next
CACHE_HOST=127.0.0.1
CACHE_PORT=6379
PAUL_SITENAME="保罗 API Next"

View File

@ -11,19 +11,21 @@
"@midwayjs/hooks": "^3.0.0",
"@midwayjs/hooks-kit": "^3.0.0",
"@midwayjs/koa": "^3.3.0",
"@midwayjs/redis": "^3.3.2",
"@midwayjs/rpc": "^3.0.0",
"@prisma/client": "^3.12.0",
"ahooks": "^3.3.0",
"dotenv": "^16.0.0",
"isomorphic-unfetch": "^3.1.0",
"lodash": "^4.17.21",
"prismjs": "^1.27.0",
"react": "^17.0.2",
"react-dom": "^17.0.2",
"react-router-dom": "^6.3.0",
"redis": "^4.0.6"
"react-router-dom": "^6.3.0"
},
"devDependencies": {
"@midwayjs/mock": "^3.3.0",
"@types/ioredis": "^4.28.10",
"@types/lodash": "^4.14.181",
"@types/prismjs": "^1.26.0",
"@types/react": "^17.0.44",

View File

@ -4,7 +4,7 @@ generator client {
datasource db {
provider = "mysql"
url = "mysql://root:233456@localhost:8889/paul_api_next"
url = env("DB_URL")
}
model ACGM {

View File

@ -1,15 +1,15 @@
import { Api, Get, Query, useContext } from "@midwayjs/hooks";
import { Api, Get, Query, useContext, useInject } from "@midwayjs/hooks";
import { RedisService } from "@midwayjs/redis";
import { prisma } from "./utils/prisma";
import { getSong } from "./utils/netease";
import { client } from "./utils/redis";
import { prisma } from "./utils/prisma";
export default Api(
Get(),
Query<{ play?: string }>(),
async () => {
const ctx = useContext();
const client = await useInject(RedisService);
// 设置 Header
ctx.set("access-control-allow-origin", "*");
@ -44,7 +44,7 @@ export default Api(
}
// 尝试使用缓存
const cached = await client.lRange(`api-next:163:${id}`, 0, 7);
const cached = await client.lrange(`api-next:163:${id}`, 0, 7);
if (cached.length) {
return {
@ -70,7 +70,7 @@ export default Api(
const song = await getSong(id);
if (song) {
await client.rPush(`api-next:163:${id}`, [
await client.rpush(`api-next:163:${id}`,
song.title,
song.artist,
song.album,
@ -79,8 +79,11 @@ export default Api(
song.lyric,
song.sub_lyric,
song.link,
song.served
]);
song.served,
err => {
err && console.log(err);
}
);
await client.expire(`api-next:163:${id}`, 21600);
return {

View File

@ -1,9 +1,8 @@
import { Api, Get, Query, useContext } from "@midwayjs/hooks";
import { Api, Get, Query, useContext, useInject } from "@midwayjs/hooks";
import { RedisService } from "@midwayjs/redis";
import { getVideoInfo } from "./utils/bili";
import { client } from "./utils/redis";
const availableStyle = ["gray", "white", "black", "shadow"];
export default Api(
@ -11,6 +10,7 @@ export default Api(
Query<{ av?: string, bv?: string }>(),
async () => {
const ctx = useContext();
const client = await useInject(RedisService);
const id = ctx.query.av || ctx.query.bv;
const type = "av" in ctx.query ? "av" : "bv" in ctx.query ? "bv" : undefined;
@ -27,7 +27,7 @@ export default Api(
await client.incr("api-next:stat:bili");
// 尝试使用缓存
const cached = await client.lRange(`api-next:bili:${id}`, 0, 3);
const cached = await client.lrange(`api-next:bili:${id}`, 0, 3);
let result;
@ -45,11 +45,14 @@ export default Api(
return "获取失败";
}
await client.rPush(`api-next:bili:${id}`, [
await client.rpush(`api-next:bili:${id}`,
info.title,
info.image,
info.desc,
]);
(err) => {
err && console.log(err);
}
);
await client.expire(`api-next:bili:${id}`, 21600);
result = info;

View File

@ -1,13 +1,14 @@
import { Api, Get, Query, useContext } from "@midwayjs/hooks";
import fetch from "isomorphic-unfetch";
import { Api, Get, Query, useContext, useInject } from "@midwayjs/hooks";
import { RedisService } from "@midwayjs/redis";
import { client } from "./utils/redis";
import fetch from "isomorphic-unfetch";
export default Api(
Get(),
Query<{ info?: string }>(),
async () => {
const ctx = useContext();
const client = await useInject(RedisService);
// 设置 Header
ctx.set("access-control-allow-origin", "*");
@ -18,7 +19,7 @@ export default Api(
await client.incr("api-next:stat:bing");
// 尝试使用缓存
const cached = await client.lRange("api-next:bing", 0, 2);
const cached = await client.lrange("api-next:bing", 0, 2);
let image;
@ -42,7 +43,9 @@ export default Api(
copyright: json.images[0].copyright,
};
await client.rPush("api-next:bing", [image.url, image.copyright]);
await client.rpush("api-next:bing", image.url, image.copyright, err => {
err && console.log(err);
});
await client.expire("api-next:bing", 21600);
}

View File

@ -1,73 +0,0 @@
import { Api, Get, Params, Query, useContext } from '@midwayjs/hooks';
import type { Context } from '@midwayjs/koa';
const books = [
{
id: 1,
title: 'The Lord of the Rings',
},
{
id: 2,
title: 'The Hobbit',
},
{
id: 3,
title: 'The Catcher in the Rye',
},
{
id: 4,
title: 'Gone with the Wind',
},
{
id: 5,
title: 'To Kill a Mockingbird',
},
{
id: 6,
title: 'Pride and Prejudice',
},
{
id: 7,
title: 'The Great Gatsby',
},
{
id: 8,
title: 'The Scarlet Letter',
},
{
id: 9,
title: 'The Grapes of Wrath',
},
{
id: 10,
title: 'The Great Gatsby',
},
];
export const getBookByParams = Api(
Get('/book/:id'),
Params<{ id: string }>(),
async () => {
const ctx = useContext<Context>();
const { id } = ctx.params;
const book = books.find((b) => b.id === Number(id));
if (!book) {
ctx.throw(400, 'book not found');
}
return book;
}
);
export const getBookByQuery = Api(
Get('/book'),
Query<{ id: string }>(),
async () => {
const ctx = useContext<Context>();
const { id } = ctx.query;
const book = books.find((b) => b.id === Number(id));
if (!book) {
ctx.throw(400, 'book not found');
}
return book;
}
);

View File

@ -1,10 +1,24 @@
import { createConfiguration, hooks } from '@midwayjs/hooks';
import * as Koa from '@midwayjs/koa';
import { createConfiguration, hooks } from "@midwayjs/hooks";
import * as Koa from "@midwayjs/koa";
import * as dotenv from "dotenv";
import * as redis from "@midwayjs/redis";
const env = dotenv.config();
/**
* setup midway server
*/
export default createConfiguration({
imports: [Koa, hooks()],
importConfigs: [{ default: { keys: 'session_keys' } }],
imports: [Koa, redis, hooks()],
importConfigs: [{
default: {
redis: {
client: {
port: Number(env.parsed ?. CACHE_PORT) || 6379,
host: env.parsed ?. CACHE_HOST || "127.0.0.1",
db: 0,
},
},
}
}],
});

View File

@ -1,12 +1,12 @@
import { Api, Get, Query, useContext } from "@midwayjs/hooks";
import { client } from "./utils/redis";
import { Api, Get, Query, useContext, useInject } from "@midwayjs/hooks";
import { RedisService } from "@midwayjs/redis";
export default Api(
Get(),
Query<{ id?: string, loop?: string }>(),
async () => {
const ctx = useContext();
const client = await useInject(RedisService);
// 增加使用数量
await client.incr("api-next:stat:dji");

View File

@ -1,14 +1,14 @@
import { Api, Get, Query, useContext } from '@midwayjs/hooks';
import { Api, Get, Query, useContext, useInject } from "@midwayjs/hooks";
import { RedisService } from "@midwayjs/redis";
import { getSong } from "./utils/netease";
import { client } from './utils/redis';
export default Api(
Get(),
Query<{ id?: string, play?: string }>(),
async () => {
const ctx = useContext();
const client = await useInject(RedisService);
// 设置 Header
ctx.set("access-control-allow-origin", "*");
@ -38,7 +38,7 @@ export default Api(
ctx.set("cache-control", "max-age=604800");
// 尝试使用缓存
const cached = await client.lRange(`api-next:163:${id}`, 0, 7);
const cached = await client.lrange(`api-next:163:${id}`, 0, 7);
if (cached.length) {
return {
@ -64,7 +64,7 @@ export default Api(
const song = await getSong(id);
if (song) {
await client.rPush(`api-next:163:${id}`, [
await client.rpush(`api-next:163:${id}`,
song.title,
song.artist,
song.album,
@ -73,8 +73,11 @@ export default Api(
song.lyric,
song.sub_lyric,
song.link,
song.served
]);
song.served,
err => {
err && console.log(err);
}
);
await client.expire(`api-next:163:${id}`, 21600);
return {

View File

@ -1,10 +1,11 @@
import { Api, Get } from "@midwayjs/hooks";
import { client } from "./utils/redis";
import { Api, Get, useInject } from "@midwayjs/hooks";
import { RedisService } from "@midwayjs/redis";
export default Api(
Get(),
async () => {
const client = await useInject(RedisService);
const neteaseStat = await client.get("api-next:stat:netease");
const wallpaperStat = await client.get("api-next:stat:wallpaper");
const biliStat = await client.get("api-next:stat:bili");

View File

@ -1,13 +0,0 @@
import { createClient, RedisClientType } from 'redis';
export let client: RedisClientType;
(async () => {
client = createClient({
url: 'redis://127.0.0.1:6379'
});
client.on('error', (err) => console.log('Redis Client Error', err));
await client.connect();
})();

View File

@ -1,14 +1,16 @@
import { Api, Get, Query, useContext } from "@midwayjs/hooks";
import { Api, Get, Query, useContext, useInject } from "@midwayjs/hooks";
import { RedisService } from "@midwayjs/redis";
import { source } from "./data/wallpaper";
import { random } from "lodash";
import { client } from "./utils/redis";
export default Api(
Get(),
Query<{ source: string }>(),
async () => {
const ctx = useContext();
const client = await useInject(RedisService);
const sourceResult = source[ctx.query.source || "jsd"];
// 增加使用数量

124
yarn.lock
View File

@ -256,6 +256,11 @@
enabled "2.0.x"
kuler "^2.0.0"
"@ioredis/commands@^1.1.1":
version "1.1.1"
resolved "https://registry.yarnpkg.com/@ioredis/commands/-/commands-1.1.1.tgz#2ba4299ea624a6bfac15b35f6df90b0015691ec3"
integrity sha512-fsR4P/ROllzf/7lXYyElUJCheWdTJVJvOTps8v9IWKFATxR61ANOlnoPqhH099xYLrJGpc2ZQ28B3rMeUt5VQg==
"@jridgewell/resolve-uri@^3.0.3":
version "3.0.5"
resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz#68eb521368db76d040a6315cdb24bf2483037b9c"
@ -523,6 +528,13 @@
source-map-support "^0.5.16"
typescript "~4.2.4"
"@midwayjs/redis@^3.3.2":
version "3.3.2"
resolved "https://registry.yarnpkg.com/@midwayjs/redis/-/redis-3.3.2.tgz#ab8c42f9548d27fad17a8b39326259e04122b753"
integrity sha512-cMwSvtFTi2dcks8p60S7ZBRxdJ90Mk/MYX5495FSC/64StkSmEjXXRKhI0Cbvv0g6awMz89JhTXxaoIi8meU7A==
dependencies:
ioredis "^5.0.0"
"@midwayjs/rpc@^3.0.0":
version "3.0.0"
resolved "https://registry.yarnpkg.com/@midwayjs/rpc/-/rpc-3.0.0.tgz#49ffb20d8515c0b80afcc46111f89283e29a53cb"
@ -573,41 +585,6 @@
dependencies:
"@midwayjs/cookies" "^1.0.2"
"@node-redis/bloom@1.0.1":
version "1.0.1"
resolved "https://registry.yarnpkg.com/@node-redis/bloom/-/bloom-1.0.1.tgz#144474a0b7dc4a4b91badea2cfa9538ce0a1854e"
integrity sha512-mXEBvEIgF4tUzdIN89LiYsbi6//EdpFA7L8M+DHCvePXg+bfHWi+ct5VI6nHUFQE5+ohm/9wmgihCH3HSkeKsw==
"@node-redis/client@1.0.5":
version "1.0.5"
resolved "https://registry.yarnpkg.com/@node-redis/client/-/client-1.0.5.tgz#ebac5e2bbf12214042a37621604973a954ede755"
integrity sha512-ESZ3bd1f+od62h4MaBLKum+klVJfA4wAeLHcVQBkoXa1l0viFesOWnakLQqKg+UyrlJhZmXJWtu0Y9v7iTMrig==
dependencies:
cluster-key-slot "1.1.0"
generic-pool "3.8.2"
redis-parser "3.0.0"
yallist "4.0.0"
"@node-redis/graph@1.0.0":
version "1.0.0"
resolved "https://registry.yarnpkg.com/@node-redis/graph/-/graph-1.0.0.tgz#baf8eaac4a400f86ea04d65ec3d65715fd7951ab"
integrity sha512-mRSo8jEGC0cf+Rm7q8mWMKKKqkn6EAnA9IA2S3JvUv/gaWW/73vil7GLNwion2ihTptAm05I9LkepzfIXUKX5g==
"@node-redis/json@1.0.2":
version "1.0.2"
resolved "https://registry.yarnpkg.com/@node-redis/json/-/json-1.0.2.tgz#8ad2d0f026698dc1a4238cc3d1eb099a3bee5ab8"
integrity sha512-qVRgn8WfG46QQ08CghSbY4VhHFgaTY71WjpwRBGEuqGPfWwfRcIf3OqSpR7Q/45X+v3xd8mvYjywqh0wqJ8T+g==
"@node-redis/search@1.0.5":
version "1.0.5"
resolved "https://registry.yarnpkg.com/@node-redis/search/-/search-1.0.5.tgz#96050007eb7c50a7e47080320b4f12aca8cf94c4"
integrity sha512-MCOL8iCKq4v+3HgEQv8zGlSkZyXSXtERgrAJ4TSryIG/eLFy84b57KmNNa/V7M1Q2Wd2hgn2nPCGNcQtk1R1OQ==
"@node-redis/time-series@1.0.2":
version "1.0.2"
resolved "https://registry.yarnpkg.com/@node-redis/time-series/-/time-series-1.0.2.tgz#5dd3638374edd85ebe0aa6b0e87addc88fb9df69"
integrity sha512-HGQ8YooJ8Mx7l28tD7XjtB3ImLEjlUxG1wC1PAjxu6hPJqjPshUZxAICzDqDjtIbhDTf48WXXUcx8TQJB1XTKA==
"@nodelib/fs.scandir@2.1.5":
version "2.1.5"
resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5"
@ -849,6 +826,13 @@
resolved "https://registry.yarnpkg.com/@types/http-errors/-/http-errors-1.8.2.tgz#7315b4c4c54f82d13fa61c228ec5c2ea5cc9e0e1"
integrity sha512-EqX+YQxINb+MeXaIqYDASb6U6FCHbWjkj4a1CKDBks3d/QiB2+PqBLyO72vLDgAO1wUI4O+9gweRcQK11bTL/w==
"@types/ioredis@^4.28.10":
version "4.28.10"
resolved "https://registry.yarnpkg.com/@types/ioredis/-/ioredis-4.28.10.tgz#40ceb157a4141088d1394bb87c98ed09a75a06ff"
integrity sha512-69LyhUgrXdgcNDv7ogs1qXZomnfOEnSmrmMFqKgt1XMJxmoOSG/u3wYy13yACIfKuMJ8IhKgHafDO3sx19zVQQ==
dependencies:
"@types/node" "*"
"@types/js-cookie@^2.x.x":
version "2.2.7"
resolved "https://registry.yarnpkg.com/@types/js-cookie/-/js-cookie-2.2.7.tgz#226a9e31680835a6188e887f3988e60c04d3f6a3"
@ -1237,7 +1221,7 @@ cls-hooked@^4.2.2:
emitter-listener "^1.0.1"
semver "^5.4.1"
cluster-key-slot@1.1.0:
cluster-key-slot@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/cluster-key-slot/-/cluster-key-slot-1.1.0.tgz#30474b2a981fb12172695833052bc0d01336d10d"
integrity sha512-2Nii8p3RwAPiFwsnZvukotvow2rIHM+yQ6ZcBXGHdniadkYGZYiGmkHJIbZPIV9nfv7m/U1IPMVVcAhoWFeklw==
@ -1409,7 +1393,7 @@ debug@^3.1.0:
dependencies:
ms "^2.1.1"
debug@^4.1.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.3:
debug@^4.1.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4:
version "4.3.4"
resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865"
integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
@ -1436,6 +1420,11 @@ delegates@^1.0.0:
resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a"
integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=
denque@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/denque/-/denque-2.0.1.tgz#bcef4c1b80dc32efe97515744f21a4229ab8934a"
integrity sha512-tfiWc6BQLXNLpNiR5iGd0Ocu3P3VpxfzFiqubLgMfhfOw9WyvgJBd46CClNn9k3qfbjvT//0cf7AlYRX/OslMQ==
depd@2.0.0, depd@^2.0.0, depd@~2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df"
@ -1479,6 +1468,11 @@ dir-glob@^3.0.1:
dependencies:
path-type "^4.0.0"
dotenv@^16.0.0:
version "16.0.0"
resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.0.0.tgz#c619001253be89ebb638d027b609c75c26e47411"
integrity sha512-qD9WU0MPM4SWLPJy/r2Be+2WgQj8plChsyrCNQzW/0WjvcJQiKQJ9mH3ZgB3fxbUUxgc/11ZJ0Fi5KiimWGz2Q==
ee-first@1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
@ -1786,11 +1780,6 @@ function-bind@^1.1.1:
resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
generic-pool@3.8.2:
version "3.8.2"
resolved "https://registry.yarnpkg.com/generic-pool/-/generic-pool-3.8.2.tgz#aab4f280adb522fdfbdc5e5b64d718d3683f04e9"
integrity sha512-nGToKy6p3PAbYQ7p1UlWl6vSPwfwU6TMSWK7TTu+WUY4ZjyZQGniGGt2oNVvyNSpyZYSB43zMXVLcBm08MTMkg==
gensync@^1.0.0-beta.2:
version "1.0.0-beta.2"
resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0"
@ -1954,6 +1943,21 @@ intersection-observer@^0.12.0:
resolved "https://registry.yarnpkg.com/intersection-observer/-/intersection-observer-0.12.0.tgz#6c84628f67ce8698e5f9ccf857d97718745837aa"
integrity sha512-2Vkz8z46Dv401zTWudDGwO7KiGHNDkMv417T5ItcNYfmvHR/1qCTVBO9vwH8zZmQ0WkA/1ARwpysR9bsnop4NQ==
ioredis@^5.0.0:
version "5.0.4"
resolved "https://registry.yarnpkg.com/ioredis/-/ioredis-5.0.4.tgz#0d4abfd818adfc5ef5029fddac4b8f503a1433b7"
integrity sha512-qFJw3MnPNsJF1lcIOP3vztbsasOXK3nDdNAgjQj7t7/Bn/w10PGchTOpqylQNxjzPbLoYDu34LjeJtSWiKBntQ==
dependencies:
"@ioredis/commands" "^1.1.1"
cluster-key-slot "^1.1.0"
debug "^4.3.4"
denque "^2.0.1"
lodash.defaults "^4.2.0"
lodash.isarguments "^3.1.0"
redis-errors "^1.2.0"
redis-parser "^3.0.0"
standard-as-callback "^2.1.0"
is-arrayish@^0.3.1:
version "0.3.2"
resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03"
@ -2160,6 +2164,16 @@ locate-path@^6.0.0:
dependencies:
p-locate "^5.0.0"
lodash.defaults@^4.2.0:
version "4.2.0"
resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c"
integrity sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=
lodash.isarguments@^3.1.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a"
integrity sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=
lodash@^4.17.21:
version "4.17.21"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
@ -2526,30 +2540,18 @@ redaxios@^0.4.1:
resolved "https://registry.yarnpkg.com/redaxios/-/redaxios-0.4.1.tgz#a46fd53b533ed76d8619d9e6d595b95543855195"
integrity sha512-+Jhh1j8/H0KBro+Hih/MrDEJ1PICaU10JA6iu5b3+uvgRI+5n2M7qpMNXq7eC/0fspP0tTq49ONXlGWFdRoNLg==
redis-errors@^1.0.0:
redis-errors@^1.0.0, redis-errors@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/redis-errors/-/redis-errors-1.2.0.tgz#eb62d2adb15e4eaf4610c04afe1529384250abad"
integrity sha1-62LSrbFeTq9GEMBK/hUpOEJQq60=
redis-parser@3.0.0:
redis-parser@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/redis-parser/-/redis-parser-3.0.0.tgz#b66d828cdcafe6b4b8a428a7def4c6bcac31c8b4"
integrity sha1-tm2CjNyv5rS4pCin3vTGvKwxyLQ=
dependencies:
redis-errors "^1.0.0"
redis@^4.0.6:
version "4.0.6"
resolved "https://registry.yarnpkg.com/redis/-/redis-4.0.6.tgz#a2ded4d9f4f4bad148e54781051618fc684cd858"
integrity sha512-IaPAxgF5dV0jx+A9l6yd6R9/PAChZIoAskDVRzUODeLDNhsMlq7OLLTmu0AwAr0xjrJ1bibW5xdpRwqIQ8Q0Xg==
dependencies:
"@node-redis/bloom" "1.0.1"
"@node-redis/client" "1.0.5"
"@node-redis/graph" "1.0.0"
"@node-redis/json" "1.0.2"
"@node-redis/search" "1.0.5"
"@node-redis/time-series" "1.0.2"
reflect-metadata@^0.1.13:
version "0.1.13"
resolved "https://registry.yarnpkg.com/reflect-metadata/-/reflect-metadata-0.1.13.tgz#67ae3ca57c972a2aa1642b10fe363fe32d49dc08"
@ -2727,6 +2729,11 @@ stack-trace@0.0.x:
resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0"
integrity sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=
standard-as-callback@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/standard-as-callback/-/standard-as-callback-2.1.0.tgz#8953fc05359868a77b5b9739a665c5977bb7df45"
integrity sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==
statuses@2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63"
@ -3013,11 +3020,6 @@ ws@^7.2.3:
resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.7.tgz#9e0ac77ee50af70d58326ecff7e85eb3fa375e67"
integrity sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A==
yallist@4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"
integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==
ylru@^1.2.0:
version "1.3.2"
resolved "https://registry.yarnpkg.com/ylru/-/ylru-1.3.2.tgz#0de48017473275a4cbdfc83a1eaf67c01af8a785"