(9)go-micro微服务Redis配置

本文涉及的产品
注册配置 MSE Nacos/ZooKeeper,118元/月
云原生网关 MSE Higress,422元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: (9)go-micro微服务Redis配置

一 go-redis介绍

Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。


Redis: 基于键值的存储服务系统,支持多种数据类型,性能高,功能丰富


二 go-redis安装

go get github.com/go-redis/redis


三 redis初始化连接

  • 在redis目录下新建一个redis.go文件
  • 写入以下代码:
package redis
import (
   "account/common/micro"
   "fmt"
   "github.com/go-redis/redis"
)
// Rdb 声明一个全局的rdb变量
var Rdb *redis.Client
// Init 初始化连接
func Init() (err error) {
   Rdb = redis.NewClient(&redis.Options{
      Addr: fmt.Sprintf("%s:%d",
         micro.ConsulInfo.Redis.Host,
         micro.ConsulInfo.Redis.Port,
      ),
      DB:       int(micro.ConsulInfo.Redis.Db), // use default DB
      PoolSize: int(micro.ConsulInfo.Redis.PoolSize),
   })
   _, err = Rdb.Ping().Result()
   return err
}
func Close() {
   _ = Rdb.Close()
}
  • 在main.go文件中写下:
// 7.初始化Redis连接
if err := redis.Init(); err != nil {
   logger.Error(err)
   return
}
defer redis.Close()

四 存储mail邮件

  • 在mail目录下新建mail.go文件,输入代码:
func GetMail(email string) (interface{}, error) {
   mail, err := redis.Rdb.Get(email).Result()
   if err != nil {
      logger.Error(err)
      return "", err
   }
   return mail, nil
}
func SetMail(email string, code string) {
   redis.Rdb.Set(email+"mail", code, time.Minute*10)
}
func DelMail(email string) {
   redis.Rdb.Del(email + "mail")
}
func CheckMail(email string, code string) (bool, error) {
   redisCode, err := GetMail(email + "mail")
   if fmt.Sprint(redisCode) == code {
      return true, nil
   } else {
      logger.Error(err)
      return false, err
   }
}

五 存储token

  • 在token目录下新建jwt.go文件,输入代码:


func GetToken(userName string) (interface{}, error) {
   token, err := redis.Rdb.Do("Get", userName+"token").Result()
   if err != nil {
      return "", err
   }
   return token, nil
}
func SetToken(userName string, token string) {
   redis.Rdb.Set(userName+"token", token, time.Minute*30)
}
func DelToken(userName string) {
   redis.Rdb.Del(userName + "token")
}
func CheckToken(userName string, token string) (bool, error) {
   redisToken, err := GetToken(userName + "token")
   var mc *MyClaims
   mc, err = ParseToken(fmt.Sprint(redisToken))
   if err != nil {
      return false, err
   }
   if mc.UserName == userName {
      return true, nil
   } else {
      return false, errors.New("登录信息错误")
   }
}

六 最后

  • 至此,go-micro微服务Redis配置开发工作就正式完成。
  • 接下来就开始发送邮件的代码编写了,希望大家关注博主和关注专栏,第一时间获取最新内容,每篇博客都干货满满。
相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
1月前
|
Go API Docker
热门go与微服务15
热门go与微服务15
31 2
|
1月前
|
算法 安全 Java
微服务(四)-config配置中心的配置加解密
微服务(四)-config配置中心的配置加解密
|
1月前
|
消息中间件 监控 开发工具
微服务(三)-实现自动刷新配置(不重启项目情况下)
微服务(三)-实现自动刷新配置(不重启项目情况下)
|
1天前
|
Cloud Native Go API
Go语言在微服务架构中的创新应用与实践
本文深入探讨了Go语言在构建高效、可扩展的微服务架构中的应用。Go语言以其轻量级协程(goroutine)和强大的并发处理能力,成为微服务开发的首选语言之一。通过实际案例分析,本文展示了如何利用Go语言的特性优化微服务的设计与实现,提高系统的响应速度和稳定性。文章还讨论了Go语言在微服务生态中的角色,以及面临的挑战和未来发展趋势。
|
2天前
|
运维 Go 开发者
Go语言在微服务架构中的应用与优势
本文深入探讨了Go语言在构建微服务架构中的独特优势和实际应用。通过分析Go语言的核心特性,如简洁的语法、高效的并发处理能力以及强大的标准库支持,我们揭示了为何Go成为开发高性能微服务的首选语言。文章还详细介绍了Go语言在微服务架构中的几个关键应用场景,包括服务间通信、容器化部署和自动化运维等,旨在为读者提供实用的技术指导和启发。
|
3天前
|
存储 NoSQL Redis
Redis 配置
10月更文挑战第14天
8 1
|
6天前
|
负载均衡 Go API
探索Go语言在微服务架构中的应用与优势
在这篇技术性文章中,我们将深入探讨Go语言(又称为Golang)在构建微服务架构时的独特优势。文章将通过对比分析Go语言与其他主流编程语言,展示Go在并发处理、性能优化、以及开发效率上的优势。同时,我们将通过一个实际的微服务案例,详细说明如何利用Go语言构建高效、可扩展的微服务系统。
|
10天前
|
安全 Go 云计算
探索Go语言在微服务架构中的应用与优势
在本文中,我们将深入探讨Go语言(又称为Golang)在构建微服务架构中的独特优势。文章将分析Go语言的并发模型、简洁的语法以及高效的编译速度,以及这些特性如何使其成为微服务架构的理想选择。我们将通过一个简单的微服务示例,展示Go语言在实际开发中的表现,并讨论其在性能和可维护性方面的优势。
|
29天前
|
关系型数据库 MySQL Go
go抽取mysql配置到yaml配置文件
go抽取mysql配置到yaml配置文件
|
7天前
|
消息中间件 监控 Go
Go语言在微服务架构中的优势与实践
【10月更文挑战第10天】Go语言在微服务架构中的优势与实践