I'm using node-redis 4.0.2, and I want to be able to connect to Redis once, then use this connection afterwards. However, I couldn't do it, I get TypeError: client.set is not a function because I don't know how to export the client after the connection is established.
How can I achieve it?
import { createClient } from 'redis'
export const client = (async () => {
const client = createClient({
url: 'redis://default:mypassishere@127.0.0.1:6380',
})
client.on('error', (err) => console.log('Redis Client Error', err))
await client.connect()
return client
})()
export async function test () {
await client.set('testdata', 'ok')
const answer = await client.get('testdata')
console.log(answer)
}
I used to do it like below (node-redis 3.1.2), but given that I can't use async like that, I can't implement the same solution now.
import { createClient } from 'redis'
const { promisify } = require('util')
const client = createClient({ port: 6379 })
client.auth('mypassishere', () => {
console.log('Redis: connection successful.')
})
client.on('error', e => {
console.log(`Redis connection error: ${e}`)
})
const smembers = promisify(client.smembers).bind(client)
const get = promisify(client.get).bind(client)
const set = promisify(client.set).bind(client)
const hmset = promisify(client.hmset).bind(client)
const hset = promisify(client.hset).bind(client)
const del = promisify(client.del).bind(client)
const hdel = promisify(client.hdel).bind(client)
const sadd = promisify(client.sadd).bind(client)
const hgetall = promisify(client.hgetall).bind(client)
const srem = promisify(client.srem).bind(client)
const keys = promisify(client.keys).bind(client)
const incr = promisify(client.incr).bind(client)
const hget = promisify(client.hget).bind(client)
const lrange = promisify(client.lrange).bind(client)
const rpush = promisify(client.rpush).bind(client)
const hincrby = promisify(client.hincrby).bind(client)
const ttl = promisify(client.ttl).bind(client)
const expire = promisify(client.expire).bind(client)
export {
smembers, get, set, hmset, del, sadd, hgetall, srem, hset, hdel, keys, incr, ttl, expire, hget, lrange, hincrby, rpush
}