RedisPool (redis_pool_xyz v0.3.2)
View SourceRedisPool 是一个基于 NimblePool 的 Redis 连接池库。
此模块提供了使用宏的方式创建 Redis 连接池,并提供了简单直观的 API 来执行 Redis 命令。 主要特点包括:
- 基于 NimblePool 的高效连接池管理
- 简单的配置和使用方式
- 支持单个命令和管道命令执行
- 详细的错误处理和报告
- 支持连接健康检查和自动恢复
基本用法
首先,定义一个使用 RedisPool 的模块:
defmodule MyApp.Redis do use RedisPool, otp_app: :my_app end配置 Redis 连接参数(在配置文件或运行时):
# 在 config/config.exs 中 config :my_app, MyApp.Redis, url: "redis://:password@localhost:6379/0", pool_size: 10将 Redis 模块添加到应用程序的监督树中:
# 在应用程序的 Supervisor 中 children = [ MyApp.Redis ] Supervisor.start_link(children, strategy: :one_for_one)使用定义的模块执行 Redis 命令:
# 执行单个命令 {:ok, "OK"} = MyApp.Redis.command(["SET", "key", "value"]) {:ok, "value"} = MyApp.Redis.command(["GET", "key"]) # 执行管道命令 {:ok, ["OK", "OK"]} = MyApp.Redis.pipeline([ ["SET", "key1", "value1"], ["SET", "key2", "value2"] ])
错误处理
所有命令执行都会返回 {:ok, result} 或 {:error, error} 元组。
错误结构提供了详细的错误信息,包括错误类型、消息和原因,便于调试和处理。
Summary
Types
@type child_spec_t() :: Supervisor.child_spec()
子进程规范类型
@type config_t() :: keyword()
应用配置选项类型
@type otp_app_t() :: atom()
OTP应用名类型