# Websocket与Redis结合

Redis:

const redis = require("redis")
const { promisifyAll } = require("bluebird")

const { redisOptions } = require("../config/index")

const redisClient = redis.createClient(redisOptions)
promisifyAll(redisClient)

// 对连接信息的监听
redisClient.on("connect", function() {
  console.log("redis client is connected to server!")
})

// 对错误日志的打印
redisClient.on("error", function(err) {
  console.log("redis client is error: " + err)
})

/**
 * setValue方法
 * @param {String} key 对象的属性
 * @param {String} value 对象的值 JSON.stringfy -> Object
 * @param {*} time 过期时间
 */
const setValue = function(key, value, time) {
  if (time) {
    redisClient.set(key, value, "EX", time, redis.print)
  } else {
    redisClient.set(key, value, redis.print)
  }
}

/**
 * getValue方法
 * @param {String} key
 * 返回是一个String,需要对对象形式的内容,使用JSON.parse
 */
const getValue = async function(key) {
  const result = await redisClient.getAsync(key)
  return result
}

/**
 * 增加记数
 * @param {String}} key
 */
const increase = async function(key) {
  const result = await redisClient.incrAsync(key)
  return result
}

const decrease = async function(key) {
  const result = await redisClient.decrAsync(key)
  return result
}

/**
 * 返回所有相关reg的keys
 * @param {String} reg 定义一个查询的正则表达式
 */
const getKeys = async function(reg) {
  const result = await redisClient.keysAsync(reg + "*")
  return result
}

const existKey = async function(key) {
  const result = await redisClient.existsAsync(key)
  return result
}

const deleteKey = async function(key) {
  const result = await redisClient.delAsync(key)
  return result
}

module.exports = {
  setValue,
  getValue,
  increase,
  decrease,
  getKeys,
  existKey,
  deleteKey,
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
上次更新: 2020/10/28 下午11:02:30