简介
fastify-ioredis 是一个 Fastify 插件,它提供了使用 ioredis 客户端在 Fastify 应用中处理 Redis 相关的所有事项的快速和简便的方法。ioredis 是一个高性能的 Redis 客户端,在某些情况下比官方的客户端更快。
安装
在项目根目录下使用 npm 安装 fastify-ioredis:
npm install --save fastify-ioredis
使用
在你的 Fastify 应用程序中引入 fastify-ioredis:
const fastify = require('fastify')() const fastifyIoRedis = require('fastify-ioredis') fastify.register(fastifyIoRedis, { url: 'redis://localhost:6379' }) // 继续编写路由和其他代码
注意,这里传入的参数中 url 字段指定了 Redis 服务器的 URL 地址。你可以根据需要更改此 URL。
现在,我们可以在任何 Fastify 路由处理程序中使用 Redis 客户端了:
fastify.get('/foo', async (req, res) => { const redis = req.fastify.redis await redis.set('foo', 'bar') const value = await redis.get('foo') res.send({ value }) })
在上面的代码中, req.fastify.redis
是注册 fastify-ioredis 时自动添加到请求对象中的。你可以使用 await
关键字来调用 Redis 命令。
使用 Promise 风格的 API
如果你喜欢 Promise 风格的 API,你可以在注册 fastify-ioredis 时传递 ioredis
选项:
-- -------------------- ---- ------- ----- ------- - -------------------- ----- -------------- - -------------------------- ----- ----- - ------------------ -------------------------------- - -------- -------------- ---- ------------------------ -- -- -----------
现在你就可以像下面这样使用 ioredis 的 Promise 风格的 API 了:
fastify.get('/foo', async (req, res) => { const redis = req.fastify.redis await redis.set('foo', 'bar') const value = await redis.get('foo') res.send({ value }) })
使用 Lua 脚本
fastify-ioredis 还提供了执行 Redis Lua 脚本的方法。这使得你可以在 Redis 服务器上运行比单个操作更复杂的事务,同时仍然保持高性能。
在下面的例子中,我们将 Lua 脚本存储在 app.lua 文件中,它将从 Redis 中获取名为 foo 的键和值,并将值乘以 2:
local val = redis.call('get', 'foo') val = tonumber(val) * 2 redis.call('set', 'foo', val)
我们将使用 Redis 脚本执行器的 scriptLoad
方法在 Fastify 应用程序注册时加载此脚本,并获取其 SHA1 摘要:
-- -------------------- ---- ------- ----- ---- - --------------- ----- -- - ------------- ----- ------- - -------------------- ----- -------------- - -------------------------- ----- ----- - ------------------ ----- ---------- - -------------------- ---------- ----- ------ - --------------------------- ------- -------------------------------- - -------- ------ ---- ------------------------ -- -------------------------- ----- -- -- - ----- ----- - ------------- -- -- ---------------- ---- -- ----- ---- - ----- ------------------------ -------------------- ----- -- -- -----------
现在,我们可以在 Fastify 路由处理程序中使用 fastify-ioredis 提供的 evalsha
方法调用此脚本:
fastify.get('/foo', async (req, res) => { const redis = req.fastify.redis const result = await redis.evalsha(sha1, 1, 'foo') res.send({ result }) })
在上面的代码中, redis.evalsha
接受脚本的 SHA1 摘要作为第一个参数,它的后面是传递给脚本的参数。在我们的例子中,我们只传递了一个参数 foo
。
结论
fastify-ioredis 可以使在 Fastify 应用中使用 Redis 变得非常简单。快速和方便,且性能极高。它的 API 也非常简洁明了,即使你是一个新手,也可以轻松上手。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6005601781e8991b448de3a9