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

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
注册配置 MSE Nacos/ZooKeeper,118元/月
任务调度 XXL-JOB 版免费试用,400 元额度,开发版规格
简介: (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
相关文章
|
4月前
|
JavaScript Java Go
探索Go语言在微服务架构中的优势
在微服务架构的浪潮中,Go语言以其简洁、高效和并发处理能力脱颖而出。本文将深入探讨Go语言在构建微服务时的性能优势,包括其在内存管理、网络编程、并发模型以及工具链支持方面的特点。通过对比其他流行语言,我们将揭示Go语言如何成为微服务架构中的一股清流。
166 53
|
11天前
|
Shell Go 开发工具
【环境】Rocky8使用gvm配置Go多版本管理的微服务开发环境(go-zero)
通过本文的介绍,我们详细讲解了如何在Rocky8上使用gvm来管理多个Go版本,并配置go-zero框架的开发环境。通过gvm的灵活管理,开发者可以轻松切换不同的Go版本,以适应不同项目的需求。同时,go-zero框架的使用进一步提升了微服务开发的效率和质量。希望本文能帮助开发者构建高效的Go语言开发环境,提高项目开发的灵活性和稳定性。
97 63
|
3月前
|
存储 网络协议 Nacos
高效搭建Nacos:实现微服务的服务注册与配置中心
Nacos(Dynamic Naming and Configuration Service)是阿里巴巴开源的一款动态服务发现、配置管理和服务管理平台。它旨在帮助开发者更轻松地构建、部署和管理分布式系统,特别是在微服务架构中。
661 81
高效搭建Nacos:实现微服务的服务注册与配置中心
|
2月前
|
存储 监控 NoSQL
NoSQL与Redis配置与优化
通过合理配置和优化Redis,可以显著提高其性能和可靠性。选择合适的数据结构、优化内存使用、合理设置持久化策略、使用Pipeline批量执行命令、以及采用分布式集群方案,都是提升Redis性能的重要手段。同时,定期监控和维护Redis实例,及时调整配置,能够确保系统的稳定运行。希望本文对您在Redis的配置与优化方面有所帮助。
81 23
|
2月前
|
存储 监控 NoSQL
NoSQL与Redis配置与优化
通过合理配置和优化Redis,可以显著提高其性能和可靠性。选择合适的数据结构、优化内存使用、合理设置持久化策略、使用Pipeline批量执行命令、以及采用分布式集群方案,都是提升Redis性能的重要手段。
62 7
|
4月前
|
Java 网络安全 Nacos
Nacos作为流行的微服务注册与配置中心,其稳定性与易用性广受好评
Nacos作为流行的微服务注册与配置中心,其稳定性与易用性广受好评。然而,“客户端不发送心跳检测”是使用中常见的问题之一。本文详细探讨了该问题的原因及解决方法,包括检查客户端配置、网络连接、日志、版本兼容性、心跳检测策略、服务实例注册状态、重启应用及环境变量等步骤,旨在帮助开发者快速定位并解决问题,确保服务正常运行。
81 5
|
4月前
|
监控 Go API
Go语言在微服务架构中的应用实践
在微服务架构的浪潮中,Go语言以其简洁、高效和并发处理能力脱颖而出,成为构建微服务的理想选择。本文将探讨Go语言在微服务架构中的应用实践,包括Go语言的特性如何适应微服务架构的需求,以及在实际开发中如何利用Go语言的特性来提高服务的性能和可维护性。我们将通过一个具体的案例分析,展示Go语言在微服务开发中的优势,并讨论在实际应用中可能遇到的挑战和解决方案。
|
4月前
|
Go 数据处理 API
Go语言在微服务架构中的应用与优势
本文摘要采用问答形式,以期提供更直接的信息获取方式。 Q1: 为什么选择Go语言进行微服务开发? A1: Go语言的并发模型、简洁的语法和高效的编译速度使其成为微服务架构的理想选择。 Q2: Go语言在微服务架构中有哪些优势? A2: 主要优势包括高性能、高并发处理能力、简洁的代码和强大的标准库。 Q3: 文章将如何展示Go语言在微服务中的应用? A3: 通过对比其他语言和展示Go语言在实际项目中的应用案例,来说明其在微服务架构中的优势。
|
4月前
|
网络安全 Nacos 开发者
Nacos作为流行的微服务注册与配置中心,“节点提示暂时不可用”是常见的问题之一
Nacos作为流行的微服务注册与配置中心,其稳定性和易用性备受青睐。然而,“节点提示暂时不可用”是常见的问题之一。本文将探讨该问题的原因及解决方案,帮助开发者快速定位并解决问题,确保服务的正常运行。通过检查服务实例状态、网络连接、Nacos配置、调整健康检查策略等步骤,可以有效解决这一问题。
62 4
|
4月前
|
Java 网络安全 Nacos
Nacos作为流行的微服务注册与配置中心,其稳定性和易用性备受青睐。
Nacos作为流行的微服务注册与配置中心,其稳定性和易用性备受青睐。然而,实际使用中常遇到“客户端不发送心跳检测”的问题。本文深入探讨该问题的原因及解决方案,帮助开发者快速定位并解决问题,确保服务正常运行。通过检查客户端配置、网络连接、日志、版本兼容性、心跳策略、注册状态、重启应用和环境变量等步骤,系统地排查和解决这一问题。
78 3