Files
ZYZ/game-server/config/redis.ts
2020-12-28 20:31:04 +08:00

63 lines
2.7 KiB
TypeScript

import * as Redis from 'redis';
import { promisifyAll } from 'bluebird';
// 映射 redis 接口
declare module 'redis' {
export interface RedisClient extends NodeJS.EventEmitter {
// key 是否存在。
existsAsync(key: string): Promise<number>;
// 在 key 存在时删除 key。
delAsync(key: string): Promise<number>;
// 设置过期时间
expireAsync(key: string, time: number): Promise<number>;
// 删除哈希表 key 中的一个或多个指定字段
hdelAsync(key: string, field: string): Promise<number>;
// 将哈希表 key 中的字段 field 的值设为 value
hsetAsync(key: string, field: string, value: string): Promise<number>;
// 获取存储在哈希表中指定字段的值
hgetAsync(key: string, field: string): Promise<string>;
// 移除并返回集合中的一个随机元素
spopAsync(key: string, count?: number): Promise<number>;
// 移除集合中一个或多个成员
sremAsync(key: string, member: string): Promise<number>;
// 返回集合中一个或多个随机数
srandmemberAsync(key: string, count?: number): Promise<string|string[]>;
// 判断成员元素是否是集合的成员
sismemberAsync(key: string, member: string): Promise<boolean>;
// 向有序集合添加一个或多个成员,或者更新已存在成员的分数
zaddAsync(key: string, score: number, member: string): Promise<number>;
// 返回有序集中指定分数区间内的成员,分数从高到低排序
zrevrangebyscoreAsync(key: string, max: (string|number), min: (string|number), withscores?: string, limit?:string, offset?: number, count?:number): Promise<string[]>;
// 获取有序集合的成员数
zcardAsync(key: string): Promise<number>;
// 移除有序集合中给定的排名区间的所有成员
zremrangebyrankAsync(key: string, start: number, stop: number): Promise<number>;
// 获取存储在哈希表中指定字段的值。
hexistsAsync(key: string, field: string): Promise<number>;
}
export interface Multi extends Commands<Multi> {
execAsync(...args: any[]): Promise<any>;
}
}
export function connectRedis(redisArr: string) {
// 创建 redis 连接
const oldRedisClient = Redis.createClient(6379, redisArr, {detect_buffers: true});
oldRedisClient.auth('zyz_2020', (err, reply) => {
if (err) {
console.log('redis err', err);
} else {
console.log('redis suc');
}
})
// 转 promise
const client = promisifyAll(oldRedisClient) as Redis.RedisClient;
client.set('hello', 'redis', Redis.print);
return client;
}