前言
在前后端分离的时代,前端工程师不再是胶水代码的写手,而是负责整个应用的开发维护,因此对于如何使用一些常用的工具也显得尤为重要。在日常开发中,我们经常会使用到 Redis 这个非常优秀的缓存中间件,而 ioredis 这个 Redis 客户端包也被广泛应用于日常开发中,think-ioredis 就是在 ioredis 包上的再次封装,旨在为开发者打造更为便捷的 Redis 缓存访问 API。
安装
想要使用 think-ioredis,我们需要先安装 redis-server ,因为这个包只是 Redis 客户端。在我们的应用中将 Redis 作为服务端长期稳定地运行是非常重要的,因为 Redis 缓存的目的恰恰是解决一些读高、写低的性能问题。具体安装步骤可以参考[官方文档][1]。
安装 think-ioredis 包
然后我们就可以使用 npm 安装 think-ioredis 包了:
npm install think-ioredis -S
简单使用示例
你熟练掌握了 ioredis 的基础使用方法后,相信你也能轻松上手 think-ioredis 了:
const redis = require('think-ioredis'); redis.set('foo', 'bar').then(() => { return redis.get('foo') }).then(value => { console.log('foo value:', value) });
深度使用
构建 Redis 连接池
正如数据库连接池一样,Redis 连接池同样可以通过修改参数来优化性能。这也是 think-ioredis 这个包比裸用 ioredis 更为优秀的地方,它提供了非常方便的配置参数和 API。
-- -------------------- ---- ------- ----- ----- - ------------------------- ---------------------- ----- ------------ ----- ----- ------- -- --- -- --------- ------- ----------------- ----- ---------- --------- ----------------- ----- -- - ----- ----------- - ----------- -- --------------------- ------------------- --- ------------ - -- ---- --------- ---- --- ----- ------ ---- ---------- ------ ----- - - ---
API 参数详解:
- host: [String] Redis 地址(默认值:'127.0.0.1')
- port: [Number] Redis 端口(默认值:6379)
- family: [Number] IP 如何被解析,IPv4 或 IPv6(默认值:4)
- db: [Number] Redis 数据库的索引(默认值:0)
- password: [String] Redis 数据库的密码(默认值:无)
- enableReadyCheck: [Boolean] 当连接建立成功后发送一个
PING
命令以保证连接是否存活。如果启用,Redis 服务器无响应将会导致客户端断开连接(默认值:true) - keyPrefix: [String] 添加到每个 Redis key 前缀,以防止键名冲突(默认值:'')
- retryStrategy: [Function] 当无法连接到 Redis 时,重试连接的策略函数(默认值:function(times) {return Math.min(times * 50, 2000);})
- reconnectOnError: [Function] 当连接因为某些错误而断开时,是否继续重新连接。如果返回 False,则客户端不会尝试重新连接。如果返回一个 Error,则将其传递给回调。否则,“错误”仅是连接失败 event。(默认值:function() {return true;})
- maxRetriesPerRequest: [Number] 无法连接 Redis 时,重试请求的最大次数(默认值:20)
- autoResubscribe: [Boolean] 是否自动重新发布订阅事件(默认值:true)
- lazyConnect: [Boolean] 在 Redis 具体操作之前是否在连接 Redis (默认值:false)
- connectionName: [String] 设置连接名称
通过上述方式,我们可以构建出适合于每个应用各自的 Redis 连接池。
Session 存储
think-ioredis 还提供了面向 Cache 的 Session 存储方法:
-- -------------------- ---- ------- ----- ------ - ------------------------- ----- ----- - -------------------------- --- ------ -- ----- --- -------------- - ----- ------- ------------- - ----- ------- - ----- ---------- - ----------------------- ----- ----------- - ----------------------------- -- ----------- -- ------------ - ----- ------ - --------------------- -- ---------------------- - ----- -- ----- ----- -------------- - ---------------------------------------- -- ------- ----- -- ----- -------- - --------------------------------- --- - ----- ----- -------- -------------- ------------ ----------------- ---------------- - ------ -- ----- ------ -------- -------------------- ------- ---------------- - ----- ----- - --------------------- ---- -------- ----- - - - -
Cache 存储
当然,think-ioredis 还是一个缓存库,我们可以很方便地通过它实现对象缓存:
-- -------------------- ---- ------- ----- ----- - ----------------------- ----- ---------- - --------------------------------- ------- ------ ----------- ------ - ----- ------- ----- ------------ ------- -- --------- --- --- - - --- ------------------- - ----- -------- -------- ---- - --- -- ---- -- -- ------------ ----------- ------- ------- --- ----- ------------- - -------------------- ----- ----------------------- --------- ----- -- - ----- ------------------------
总结
think-ioredis 这个 Redis 客户端包是 ioredis 的更高封装,它提供了常用 API 以及一些方便扩展的接口,方便我们在使用 Redis 缓存中间件的过程中做更多的定制化操作。虽然我们可以灵活地使用 ioredis 这个包操作 Redis,但是在一些常用场景下,think-ioredis 可以帮助我们自动化一些低级事件的处理,降低使用 ioredis 所带来的一些繁琐操作。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/600555fe81e8991b448d3000