node中使用redis碰到的问题

1.在koa框架中使用redis

npm install redis -S

2.redis连接配置
在这里插入图片描述
注意:这种写法会出现一个bug,如下:
在这里插入图片描述
看到这个问题让我一直以为服务器中的端口不通,如果碰到这个问题可以先看下redis服务是否启动,redis端口是否添加到防火墙,端口是否添加服务器安全组,(这里我都开放了,却还是出现这个问题),可以使用下面的命令测试redis是否可以连接成功

telnet [服务器ip] [服务port]
eg: telnet 25.36.123.9 6379

在把这些问题排查后,发现我在node中的配置文件创建redis的实例写法有问题,应该这么写

const redis = require('redis')


const client = redis.createClient({
    url: 'redis://:[email protected]:6379'
  })
  client.connect()

const setValue = (key,value)=>{
    if (typeof value === 'undefined' || value===null || value ==='') {
        return 
    }
    if (typeof value === 'string') {
        return client.set(key,value)
    }else if (typeof value === 'object'){
        Object.keys(value).forEach(item=>{
            client.hset(key,item,value[item],redis.print)
        })
        
    }
    
}
const {promisify} = require('util');
const getAsync = promisify(client.get).bind(client)

const getHValue = (key)=>{
    return promisify(client.hgetall).bind(client)(key)
}

const getValue = (key)=>{
    return getAsync(key)
}

module.exports={
    client,
    setValue,
    getValue,
    getHValue
}


这样就可以使用redis缓存了,但是当我想把创建redis实例的url用一个变量保存并调用的时候,创建redis实例却一直超时,这就很让我不解,如果有大佬路过看到了这个问题可不可以留言告知一下【不甚感激】

おすすめ

転載: blog.csdn.net/fankse/article/details/121658693