github.com/isyscore/isc-gobase@v1.5.3-0.20231218061332-cbc7451899e9/extend/redis/README.md (about)

     1  ## redis
     2  对go-redis进行封装,用于简化配置使用
     3  
     4  ### 快速使用
     5  
     6  #### 单机
     7  ```yaml
     8  base:
     9    redis:
    10      enable: true
    11      standalone:
    12        addr: localhost:16379
    13  ```
    14  
    15  #### 哨兵
    16  ```yaml
    17  base:
    18    redis:
    19      enable: true
    20      sentinel:
    21        master: mymaster
    22        addrs:
    23          - localhost:26379
    24          - localhost:26380
    25          - localhost:26381
    26  ```
    27  
    28  #### 集群
    29  ```yaml
    30  base:
    31    redis:
    32      enable: true
    33      cluster:
    34        addrs:  # 多个节点地址
    35          - localhost:6381
    36          - localhost:6382
    37          - localhost:6383
    38          - localhost:6384
    39          - localhost:6385
    40          - localhost:6386
    41        max-redirects: 3
    42  ```
    43  
    44  #### 代码
    45  只提供一个封装方法,其他的均是go-redis的api
    46  
    47  ```go
    48  import (
    49      "testing"
    50      "github.com/isyscore/isc-gobase/extend/redis"
    51  )
    52  
    53  func TestRedis(t *testing.T) {
    54      rdb, _ := redis.NewClient()
    55      
    56      // ...
    57  }
    58  ```
    59  
    60  ### redis所有配置
    61  ```yaml
    62  base:
    63    redis:
    64      # 是否启用redis,默认关闭
    65      enable: bool
    66      password: string
    67      username: string
    68      # 单节点模式
    69      standalone:
    70        addr: string # 数据库节点
    71        database: int
    72        network: string # 网络类型,tcp或者unix,默认tcp
    73        read-only: bool # 开启从节点的只读功能
    74      # (主从高可用)哨兵模式
    75      sentinel: 
    76        master: string # 哨兵的集群名字
    77        addrs:  # 哨兵节点地址
    78          - string
    79          - string
    80        database: int # 数据库节点
    81        sentinel-user: string # 哨兵用户
    82        sentinel-password: string # 哨兵密码
    83        slave-only: bool # 将所有命令路由到从属只读节点。
    84      # 集群模式
    85      cluster: 
    86        addrs:  # 多个节点地址
    87          - string
    88          - string
    89        max-redirects: int # 最大重定向次数,默认3次
    90        read-only: bool # 开启从节点的只读功能
    91        route-by-latency: bool # 允许将只读命令路由到最近的主节点或从节点,它会自动启用 ReadOnly
    92        route-randomly: bool # 允许将只读命令路由到随机的主节点或从节点,它会自动启用 ReadOnly
    93      
    94      # 命令执行失败配置
    95      max-retries: int # 命令执行失败时候,最大重试次数,默认3次,-1(不是0)则不重试
    96      min-retry-backoff: int #(单位毫秒) 命令执行失败时候,每次重试的最小回退时间,默认8毫秒,-1则禁止回退
    97      max-retry-backoff: int # (单位毫秒)命令执行失败时候,每次重试的最大回退时间,默认512毫秒,-1则禁止回退
    98      
    99      # 超时配置
   100      dial-timeout: int # (单位毫秒)超时:创建新链接的拨号超时时间,默认15秒
   101      read-timeout: int # (单位毫秒)超时:读超时,默认3秒,使用-1,使用-1则表示无超时,0的话是表示默认3秒
   102      write-timeout: int # (单位毫秒)超时:写超时,默认是读超时3秒,使用-1,使用-1则表示无超时,0的话是表示默认3秒
   103  
   104      # 连接池相关配置
   105      pool-fifo: bool # 连接池类型:fifo:true;lifo:false;和lifo相比,fifo开销更高
   106      pool-size: int # 最大连接池大小:默认每个cpu核是10个连接,cpu核数可以根据函数runtime.GOMAXPROCS来配置,默认是runtime.NumCpu
   107      min-idle-conns: int # 最小空闲连接数
   108      max-conn-age: int #(单位毫秒) 连接存活时长,默认不关闭
   109      pool-timeout: int #(单位毫秒)获取链接池中的链接都在忙,则等待对应的时间,默认读超时+1秒
   110      idle-timeout: int #(单位毫秒)空闲链接时间,超时则关闭,注意:该时间要小于服务端的超时时间,否则会出现拿到的链接失效问题,默认5分钟,-1表示禁用超时检查
   111      idle-check-frequency: int #(单位毫秒)空闲链接核查频率,默认1分钟。-1禁止空闲链接核查,即使配置了IdleTime也不行
   112  ```
   113  
   114  说明:<br/>
   115  支持redis在不同模式下进行运行,配置也可以同时配置不过这里有优先级:<br/>
   116   > 哨兵模式 > 集群模式 > 单机模式
   117