RedisPool (redis_pool_xyz v0.3.2)

View Source

RedisPool 是一个基于 NimblePool 的 Redis 连接池库。

此模块提供了使用宏的方式创建 Redis 连接池,并提供了简单直观的 API 来执行 Redis 命令。 主要特点包括:

  • 基于 NimblePool 的高效连接池管理
  • 简单的配置和使用方式
  • 支持单个命令和管道命令执行
  • 详细的错误处理和报告
  • 支持连接健康检查和自动恢复

基本用法

  1. 首先,定义一个使用 RedisPool 的模块:

     defmodule MyApp.Redis do
       use RedisPool, otp_app: :my_app
     end
  2. 配置 Redis 连接参数(在配置文件或运行时):

     # 在 config/config.exs 中
     config :my_app, MyApp.Redis,
       url: "redis://:password@localhost:6379/0",
       pool_size: 10
  3. 将 Redis 模块添加到应用程序的监督树中:

     # 在应用程序的 Supervisor 中
     children = [
       MyApp.Redis
     ]
    
     Supervisor.start_link(children, strategy: :one_for_one)
  4. 使用定义的模块执行 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

子进程规范类型

应用配置选项类型

OTP应用名类型

Types

child_spec_t()

@type child_spec_t() :: Supervisor.child_spec()

子进程规范类型

config_t()

@type config_t() :: keyword()

应用配置选项类型

otp_app_t()

@type otp_app_t() :: atom()

OTP应用名类型