从Node.js应用程序与Redis服务器合作的最流行的库之一是node-redis ,可在github.com/NodeRedis/n…
在你的项目中安装该库。
npm install redis
提示:如果项目是全新的,而且你还没有
package.json文件,别忘了先运行npm init -y。
连接到Redis实例
一旦库被安装,在你的项目中需要使用
const redis = require('redis')
或
import redis from 'redis'
一旦你有了redis 对象,就用以下方法创建一个新的客户端
const client = redis.createClient({
url: 'redis://YOUR REDIS INSTANCE URL'
})
并使用(在一个异步函数内)进行连接。
await client.connect()
一旦你有了客户端,我们就可以执行所有我们知道Redis可以做的事情。
要关闭连接,请调用。
client.quit()
存储和检索键值
使用set() ,将一个键值对存储到Redis。
client.set("<key>", "<value>")
例子。
client.set("name", "Flavio")
client.set("age", 37)
如果你在一个干净的Redis服务器上运行KEYS * 在redis-cli ,你会看到出现了两个键。

你可以使用get() 获得存储在键中的值。
const value = await client.get("name")
使用以下方法删除一个键/值字符串
client.del("names")
使用列表工作
在 Redis 中,我们可以使用 Redis 模块中介绍的
LPUSHRPUSHLTRIMLRANGE
命令来处理列表,我们在 Redis 模块中介绍过。它们直接映射为client 对象方法。
创建一个列表,使用
client.lPush('names', 'Flavio')
将一个新项目推到列表的底部。
client.rPush('names', 'Roger')
或者在列表的顶部。
client.lPush('names', 'Syd')
使用列表中的所有项目列出。
const result = await client.lRange('names', 0, -1)
//result is [ 'Roger', 'Flavio', 'Syd' ]
从列表中删除项目
client.rPop('names')
删除一个列表
client.del('names')
使用集合工作
在 Redis 中,我们使用以下方法来处理集合
SADDSPOPSMEMBERS.
和其他 Redis 命令,这些命令直接映射为client 对象方法。
创建一个集合,使用
client.sAdd('names', 'Flavio')
向集合中添加更多的项目。
client.sAdd('names', 'Roger')
你可以一次添加多个。
client.sAdd('names', 'Roger', 'Syd')
也可以通过传递一个数组。
const names = ['Flavio', 'Roger', 'Syd']
client.sAdd('names', names)
使用:列出一个集合中的所有项目。
const names = await client.sMembers('names')
从一个集合中随机丢弃一个项目:使用。
client.sPop('names')
添加第二个参数来删除多个随机项目。
client.sPop('names', 3)
删除一个集合,使用
client.del('names')
使用哈希值工作
在Redis中,我们使用一组命令来处理哈希值,其中包括
HMSETHGETALLHSETHINCRBY.
以及我们在Redis模块中介绍的其他命令,它们直接映射为client 对象方法。
使用以下命令创建一个哈希值
client.hSet('person:1', 'name', 'Flavio', 'age', 37)
要获得一个用户的所有属性,使用HGETALL。
const items = client.hGetAll('person:1')
你可以使用HSET更新哈希属性。
client.hSet('person:1', 'age', 38)
你可以用HINCRBY来增加一个存储在散列中的值。
client.hIncrBy('person:1', 'age', 1)
删除一个哈希值,使用
client.del('person:1')
订阅
订阅是Redis的一个了不起的功能,使我们能够在Node.js中做一些真正花哨的事情。
一个发布者在一个通道上发送一个消息。多个订阅者会收到它。
订阅一个通道的方法是
await subscriber.subscribe('dogs', (message) => {
console.log(message);
})
发布到一个频道,使用client.publish('<channel>', '<message>')
client.publish('dogs', 'Roger')
请注意,你不能在同一个client 实例中发布和订阅。
要在同一个应用程序中这样做,需要创建两个客户端。
const subscriber = redis.createClient({ ... })
const publisher = redis.createClient({ ... })
await subscriber.subscribe('dogs', (message) => {
console.log(channel, message);
})
publisher.publish('dogs', 'Roger')