Skip to main content

Node.js 连接操作 Redis

一、简单示例

初始化项目:

npm init -y

安装 node-redis

npm i redis --save

新建 index.js

const redis = require('redis')

// 创建客户端
const redisClient = redis.createClient(6379, '127.0.0.1')

// 监听错误信息
redisClient.on('err', err => {
console.error(err)
})

// 连接
redisClient.connect().then(() => {
// 操作键值对
redisClient.set('name', 'dorki').then(val => {
console.log(val)
})
redisClient.get('name').then(val => {
console.log(val)
})
})

// 断开连接
redisClient.quit()

运行:

node index.js

效果如下:

二、Node.js 连接操作 Redis

注意 node-redis v4 跟之前的版本有所区别:

1、连接

const redis = require('redis')

// 创建客户端
const redisClient = redis.createClient(6379, '127.0.0.1')

// 监听错误信息
redisClient.on('err', err => {
console.error(err)
})

// 连接
redisClient.connect()

await 改写如下:

const redis = require('redis');

(async function () {
// 创建客户端
const redisClient = redis.createClient(6379, '127.0.0.1')

// 连接
await redisClient.connect()
.then(() => console.log('Redis connect success.'))
.catch(console.error)
})()

2、写入数据

v4 的写法在 client.connect 连接成功后再执行 set 操作:

// ...

// 连接
redisClient.connect().then(() => {
redisClient.set('name', 'dorki').then(val => {
console.log(val)
})
})

await 改写如下:

// ...

(async function () {
// ...

// 连接
await redisClient.connect()
.then(() => console.log('Redis connect success.'))
.catch(console.error)

// 写入数据
await redisClient.set('name', 'dorki') // 返回值为 OK
})()

3、读取数据

v4 的写法在 client.connect 连接成功后再执行 get 操作:

// ...

// 连接
redisClient.connect().then(() => {
redisClient.get('name').then(val => {
console.log(val) // 查找到则返回对应的值,查找不到则返回 null
})
})

await 改写如下:

// ...

(async function () {
// ...

// 连接
await redisClient.connect()
.then(() => console.log('Redis connect success.'))
.catch(console.error)

// 读取数据
const name = await redisClient.get('name')
console.log('name', name)
})()

4、删除数据

v4 的写法在 client.connect 连接成功后再执行 del 操作:

// ...

// 连接
redisClient.connect().then(() => {
redisClient.del('name').then(val => {
console.log(val) // 删除成功返回 1,删除失败返回 0
})
})

await 改写如下:

// ...

(async function () {
// ...

// 连接
await redisClient.connect()
.then(() => console.log('Redis connect success.'))
.catch(console.error)

// 删除数据
await redisClient.del('name') // 返回值为 0 或 1
})()

5、断开连接

v4 的写法在 client.connect 连接成功后再执行 quit 操作:

// ...

// 连接
redisClient.connect().then(() => {
redisClient.quit()
})

await 改写如下:

// ...

(async function () {
// ...

// 连接
await redisClient.connect()
.then(() => console.log('Redis connect success.'))
.catch(console.error)

// 断开连接
redisClient.quit()
})()

三、Express 操作 Redis 存储 Session

Express 中可以使用 connect-redis 中间件来快速将 Session 数据存入 Redis,不需要额外封装设置和读取 Redis 数据的函数。

点击查看在项目中使用的示例