首页 > 数据库 >go 使用redis

go 使用redis

时间:2023-01-17 18:01:39浏览次数:33  
标签:Dial return err 使用 redis func time go redigo

 

 

 

import (

    redigo "github.com/gomodule/redigo/redis"

)

 

 

func NewPool() *redigo.Pool {
    //return &redigo.Pool{
    //    MaxIdle: 3,
    //    IdleTimeout: 240 * time.Second,
    //    // Dial or DialContext must be set. When both are set, DialContext takes precedence over Dial.
    //    Dial: func () (redigo.Conn, error) { return redigo.Dial("tcp", "localhost",
    //        redigo.DialPassword("123"),
    //        ) },
    //}

    // timeout := time.Duration(20)

    addr := fmt.Sprintf("%s:%s", "127.0.0.1", "6379")

    redisPool := &redigo.Pool{
        MaxIdle:         10,
        MaxActive:       50,
        IdleTimeout:     240 * time.Second,
        Wait:            true,
        MaxConnLifetime: 60 * time.Second,
        Dial: func() (redigo.Conn, error) {
            con, err := redigo.Dial("tcp", addr,
                redigo.DialPassword(""),
                redigo.DialDatabase(0))

            _, err = con.Do("PING")
            return con, err
        },
        TestOnBorrow: func(c redigo.Conn, t time.Time) error {
            if time.Since(t) < time.Minute {
                return nil
            }
            _, err := c.Do("PING")
            if err != nil {
                fmt.Println(err)
            }
            return err
        },
    }

    return redisPool
}

 

 

 

 

 

 

func main() {
    pool := NewPool()
    conn := pool.Get()
    defer conn.Close()

    s, err := conn.Do("LPUSH", "r_list", "tik tok")

    log.Println(s)

    if err == nil {
        log.Println("this is ok")
    } else {
        log.Println("this is failed")
    }
}

 

标签:Dial,return,err,使用,redis,func,time,go,redigo
From: https://www.cnblogs.com/angdh/p/17058432.html

相关文章

  • Springboot整合策略模式概念->使用场景->优缺点->企业级实战
    一、前言策略模式可能是在工作中使用最多的,也是在面试中最常提到的,代码重构和优化的必备!小编之前也是一直说,其实没有真正的实战;最近有了机会实战了一下,来分享一下使用心得......
  • Spring Boot整合MQTT 使用账号密码
     依赖,根据需要放入<dependency><groupId>org.eclipse.paho</groupId><artifactId>org.eclipse.paho.client.mqttv3</artifactId>......
  • golang无缓冲channel避坑点
    输出结果顺序:默认情况下,channel接收和发送数据都是阻塞的,除非另一端已经准备好。......
  • django4.1版本小demo
    1.安装anoconda,创建虚拟python3.9环境2.安装django,pipinstalldjango-i清华源安装较快3.新建一个django项目django-adminstartprojectdemo14.创建单个或者多......
  • 在使用C# efcore时,发现一个关于对象导航属性神奇的现象
    如果你在导航属性默认了一个新的对象,那么在efcore生成的SqL中生成一条新的插入数据到导航属性的表中举例: publicclassAsset{publicintAssetId{get;set;}......
  • MeterSphere 接口测试深度数据驱动使用来喽
       众所周知,MeterSphere接口自动化中,用户可以添加CSV文件可以做数据驱动测试,不熟悉的小伙伴点这里​​【接口自动化做数据驱动(ddt)测试】​​。除了CSV文件以外,日常......
  • 【NAS使用心得】使用Synology Photos管理照片
    整理方式1.本地没有整理或只按年份整理的:时间线模式下直接上传,让软件自己按照片创建时间生成文件夹;有按年份生成相册需求的,可以用“选择照片以创建相册”功能,找到年份文件......
  • thymeleaf下使用
    1.引入依赖<dependency><groupId>org.thymeleaf.extras</groupId><artifactId>thymeleaf-extras-springsecurity5</artifactId></dependency><dependency><g......
  • 注解使用
    1.@Secured角色判断1.1开启注解App启动类中加入注解@EnableGlobalMethodSecurity(securedEnabled=true,prePostEnabled=true)1.2controller层下@PostMapping......
  • os模块的使用方法详解
    os模块os模块负责程序与操作系统的交互,提供了访问操作系统底层的接口;即os模块提供了非常丰富的方法用来处理文件和目录。使用的时候需要导入该模块:importos常用方法如......