Redis(四)实战:redigo的安装和连接使用

简介: Conn接口是使用Redis数据库的主要接口。通过调用redis.Dial()来创建连接。创建连接完成操作后,必须调用连接关闭方法Conn.Close()。

前言


学习本文需要一些redis知识,请学习前面文章

详细可见个人博客:https://linzyblog.netlify.app/

一、Redigo


1、Redigo概述


Redigo是Redis数据库的Go客户端。用于实现Redis数据库的基本操作,支持Redis的所有命令。

Redigo 官方地址:点击跳转


2、安装


直接在在terminal里输入指令


go get github.com/gomodule/redigo/redis


二、Redigo使用


1、普通连接


Conn接口是使用Redis数据库的主要接口。通过调用redis.Dial()来创建连接。创建连接完成操作后,必须调用连接关闭方法Conn.Close()。


func main() {
  //创建Redis连接
  c, err := redis.Dial("tcp", "127.0.0.1:6379")
  if err != nil {
    log.Fatal(err)
  }
  //使用延迟函数,在函数结束前调用连接关闭
  defer c.Close()
}


若是Redis设置了密码:


func main() {
  //创建Redis连接
  c, err := redis.Dial("tcp", "127.0.0.1:6379",
    redis.DialUsername("username"),
    redis.DialPassword("password"),
  )
  if err != nil {
    log.Fatal(err)
  }
  //使用延迟函数,在函数结束前调用连接关闭
  defer c.Close()
}


2、创建Redis连接池(推荐)


func Setup() error {
  RedisConn = &redis.Pool{
    //最大空闲连接数
    MaxIdle: 30,
    //在给定时间内,允许分配的最大连接数(当为零时,没有限制)
    MaxActive: 30,
    //在给定时间内,保持空闲状态的时间,若到达时间限制则关闭连接(当为零时,没有限制)
    IdleTimeout: 200,
    //提供创建和配置应用程序连接的一个函数
    Dial: func() (redis.Conn, error) {
      c, err := redis.Dial("tcp", "127.0.0.1:6379")
      if err != nil {
        return nil, err
      }
      //如果redis设置了用户密码,使用auth指令
      if _, err := c.Do("AUTH", password); err != nil {
        c.Close()
        return nil, err
      }
      return c, err
    },
    TestOnBorrow: func(c redis.Conn, t time.Time) error {
      _, err := c.Do("PING")
      return err
    },
  }
  return nil
}


设置 RedisConn 为 redis.Pool(连接池)并配置了它的一些参数:


  • Dial:提供创建和配置应用程序连接的一个函数。


  • TestOnBorrow:可选的应用程序检查连接是否健康功能。


  • MaxIdle:最大空闲连接数。


  • MaxActive:在给定时间内,允许分配的最大连接数(当为零时,没有限制)。


  • IdleTimeout:在给定时间内,保持空闲状态的时间,若到达时间限制则关闭连接(当为零时,没有限制)。


3、简单Redis指令操作


//Do 方法将命令参数转换为批量字符串以传输到Redis服务器,交给Redis处理
//redis.String将Do操作后的返回值转换为String格式输出
s1, err := redis.String(c.Do("SET", "linzy", "18"))
if err != nil {
  log.Fatal(err)
}
fmt.Println(s1)
s2, err := redis.String(c.Do("GET", "linzy"))
if err != nil {
  log.Fatal(err)
}
fmt.Println(s2)
s3, err := redis.String(c.Do("GET", "linzydashuaige"))
if err != nil {
  log.Fatal(err)
}
fmt.Println(s3)


8eaf570ada9d4af8ab5c34db7d62eba0.png


可以参考我上一篇文《Redis五大基础数据类型》,自己动手测试吧。

目录
相关文章
|
5月前
|
关系型数据库 应用服务中间件 nginx
Docker一键安装中间件(RocketMq、Nginx、MySql、Minio、Jenkins、Redis)
本系列脚本提供RocketMQ、Nginx、MySQL、MinIO、Jenkins和Redis的Docker一键安装与配置方案,适用于快速部署微服务基础环境。
|
2月前
|
NoSQL Java 网络安全
SpringBoot启动时连接Redis报错:ERR This instance has cluster support disabled - 如何解决?
通过以上步骤一般可以解决由于配置不匹配造成的连接错误。在调试问题时,一定要确保服务端和客户端的Redis配置保持同步一致。这能够确保SpringBoot应用顺利连接到正确配置的Redis服务,无论是单机模式还是集群模式。
318 5
|
3月前
|
存储 NoSQL 前端开发
Redis专题-实战篇一-基于Session和Redis实现登录业务
本项目基于SpringBoot实现黑马点评系统,涵盖Session与Redis两种登录方案。通过验证码登录、用户信息存储、拦截器校验等流程,解决集群环境下Session不共享问题,采用Redis替代Session实现数据共享与自动续期,提升系统可扩展性与安全性。
284 3
Redis专题-实战篇一-基于Session和Redis实现登录业务
|
2月前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
538 5
|
3月前
|
存储 缓存 NoSQL
Redis专题-实战篇二-商户查询缓存
本文介绍了缓存的基本概念、应用场景及实现方式,涵盖Redis缓存设计、缓存更新策略、缓存穿透问题及其解决方案。重点讲解了缓存空对象与布隆过滤器的使用,并通过代码示例演示了商铺查询的缓存优化实践。
224 1
Redis专题-实战篇二-商户查询缓存
|
8月前
|
NoSQL 数据可视化 关系型数据库
安装 Redis
本文主要介绍了Linux系统下Redis的安装步骤,包括卸载旧版本、下载新版本、编译安装以及配置启动等详细操作,并解释了Redis默认端口6379的由来。同时,文章还简要说明了Windows环境下Redis的下载与服务安装方法。最后,推荐了几款Redis可视化管理工具,如RedisView、QuickRedis、AnotherRedisDesktopManager和RedisPlus,提供了它们的功能特点及下载链接,方便用户根据需求选择合适的工具进行数据库管理。
628 1
|
6月前
|
缓存 监控 NoSQL
Redis 实操要点:Java 最新技术栈的实战解析
本文介绍了基于Spring Boot 3、Redis 7和Lettuce客户端的Redis高级应用实践。内容包括:1)现代Java项目集成Redis的配置方法;2)使用Redisson实现分布式可重入锁与公平锁;3)缓存模式解决方案,包括布隆过滤器防穿透和随机过期时间防雪崩;4)Redis数据结构的高级应用,如HyperLogLog统计UV和GeoHash处理地理位置。文章提供了详细的代码示例,涵盖Redis在分布式系统中的核心应用场景,特别适合需要处理高并发、分布式锁等问题的开发场景。
461 41
|
6月前
|
缓存 NoSQL 算法
高并发秒杀系统实战(Redis+Lua分布式锁防超卖与库存扣减优化)
秒杀系统面临瞬时高并发、资源竞争和数据一致性挑战。传统方案如数据库锁或应用层锁存在性能瓶颈或分布式问题,而基于Redis的分布式锁与Lua脚本原子操作成为高效解决方案。通过Redis的`SETNX`实现分布式锁,结合Lua脚本完成库存扣减,确保操作原子性并大幅提升性能(QPS从120提升至8,200)。此外,分段库存策略、多级限流及服务降级机制进一步优化系统稳定性。最佳实践包括分层防控、黄金扣减法则与容灾设计,强调根据业务特性灵活组合技术手段以应对高并发场景。
1903 7
|
6月前
|
机器学习/深度学习 存储 NoSQL
基于 Flink + Redis 的实时特征工程实战:电商场景动态分桶计数实现
本文介绍了基于 Flink 与 Redis 构建的电商场景下实时特征工程解决方案,重点实现动态分桶计数等复杂特征计算。通过流处理引擎 Flink 实时加工用户行为数据,结合 Redis 高性能存储,满足推荐系统毫秒级特征更新需求。技术架构涵盖状态管理、窗口计算、Redis 数据模型设计及特征服务集成,有效提升模型预测效果与系统吞吐能力。
709 2
|
7月前
|
消息中间件 NoSQL Linux
Redis的基本介绍和安装方式(包括Linux和Windows版本),以及常用命令的演示
Redis(Remote Dictionary Server)是一个高性能的开源键值存储数据库。它支持字符串、列表、散列、集合等多种数据类型,具有持久化、发布/订阅等高级功能。由于其出色的性能和广泛的使用场景,Redis在应用程序中常作为高速缓存、消息队列等用途。
939 16