首页 > 数据库 >(9)go-micro微服务Redis配置

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

时间:2023-01-13 11:23:59浏览次数:64  
标签:return string err Redis redis micro token go

目录

一 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配置开发工作就正式完成。

  • 接下来就开始发送邮件的代码编写了,希望大家关注博主和关注专栏,第一时间获取最新内容,每篇博客都干货满满。

欢迎大家加入 夏沫の梦的学习交流群 进行学习交流经验,点击 夏沫の梦学习交流

标签:return,string,err,Redis,redis,micro,token,go
From: https://www.cnblogs.com/qi66/p/17049054.html

相关文章

  • go 语言 for循环的一个坑
    1、案例1packagemainimport"fmt"typeCardstruct{ idint}funcmain(){ list:=make([]*Card,0) card:=&Card{} forindex:=1;index<10;index......
  • Redis-独立功能-监视器
    监视器通过执行MONITOR命令,客户端可以将自己变为一个监视器,实时地接收并打印出服务器当前处理的命令请求的相关信息。每当一个客户端向服务器发送一条命令请求时,服务器除......
  • 【Mongodb结合springboot 01】
    一、简介1、什么是MongoDBc++语言编写的,是一个基于分布式文件存储的开源数据库系统;为web应用提供可扩展的高性能数据存储解决方案;MongoDB将数据存储为一个文档,数据结构......
  • 【学习日志】MongoDB为什么选择B树,而MySQL选择B+树实现索引
    先说B树和B+树的区别B树:非叶子节点也存储数据B+树:只有叶子节点存储数据,且所有叶子节点通过指针相连接。为什么MongoDB选择B树而,MySQL选择B+树呢?两种数据结构的区别摆在......
  • python-连接redis
    python-连接redis1、python-连接redis安装连接redis客户端工具pip3installredis编写python-redis连接使用"""redis===============Host:127.0.0.1PORT:6......
  • Redis-独立功能-二进制位数组
    二进制位数组Redis提供了SETBIT、GETBIT、BITCOUNT、BITOP四个命令用于处理二进制位数组。SETBIT命令用于为位数组指定偏移量上的二进制位设置值,GETBIT命令则用于获取位......
  • python-连接redis池
    python-连接redis池1.python-连接redis池编写redis池,进行连接redis服务防止连接每次请求连接池"""redis===============Host:127.0.0.1PORT:6379Password:Aq......
  • redis删除数据
    3.查看所有key值:keys*4.删除指定索引的值:delkey5.清空整个Redis服务器的数据:flushall6.清空当前库中的所有key:flushdb......
  • 各种redis的介绍:ServiceStack.Redis,StackExchange.Redis,CSRedis
    1.ServiceStack.Redis是商业版,免费版有限制;ServiceStack.Redis每小时6000次限制,ServiceStack4.0开始已经成为商业产品,不再完全免费,好在是开源的.2.StackExchange.Redi......
  • MongoDB 数据类型
    MongoDB数据类型MongoDB将json格式的字符串转化为bson格式的数据进行存储,目的是节省存储空间,但同时不会改变json的样式。BSONisabinaryserializationformat......