首页 > 数据库 >Go--连接redis

Go--连接redis

时间:2023-04-23 16:37:45浏览次数:41  
标签:nil err -- fmt redis rd Println Go

直接看代码

package main

import (
    "errors"
    "fmt"
    "github.com/go-redis/redis"
    "time"
)

//先下载三方依赖包,以下两个都可以,这里使用的是第一个
//go get -u github.com/go-redis/redis
//go get -u github.com/garyburd/redigo/redis

func ConnRedis() {
    rd := redis.NewClient(&redis.Options{
        Addr:     "10.x.x.x:9736", //单机连接
        Password: "",                    //密码
        DB:       0,                     //数据库
    })

    //集群模式连接,相当于命令行的 -c 参数,有域名的话直接填域名
    /*rd := redis.NewClusterClient(&redis.ClusterOptions{
        Addrs: []string{"10.x.x.x:9736", "10.x.x.x:9736"},
    })/**/

    //哨兵模式连接
    /*rd := redis.NewFailoverClient(&redis.FailoverOptions{
        MasterName: "name",
        SentinelAddrs: []string{"10.x.x.x:9736","10.x.x.x:9736"},
    })/**/

    defer rd.Close() //记得关闭连接

    result, err := rd.Ping().Result()
    if err != nil {
        fmt.Println("ping err:", err)
        return
    }
    fmt.Println(result)

    //新建一个key-value,第三个参数为过期时间(0为不过期)
    err = rd.Set("k1", "v1", 3*time.Second).Err()
    if err != nil {
        fmt.Println("set err:", err)
        return
    }

    //获取key-value
    val, err := rd.Get("k1").Result()
    if err != nil {
        //如果返回的错误是key不存在
        if errors.Is(err, redis.Nil) { //go-redis 库提供了一个 redis.Nil 错误来表示 Key 不存在的错误,以此区别处理 redis.Nil 和其他不为 nil 的错误
            fmt.Println("key error:", nil)
            return
        }
        //其他错误
        fmt.Println(err)
        return
    } else { //打印value
        fmt.Println("k1 == ", val)
    }

    //程序等待5秒钟
    time.Sleep(5 * time.Second)

    v2, err := rd.Get("k1").Result()
    if err != nil {
        //如果返回的错误是key不存在
        if errors.Is(err, redis.Nil) {
            fmt.Println("key error:", nil)
            return
        }
        //其他错误
        fmt.Println(err)
        return
    } else {
        fmt.Println("k1 == ", v2)
    }
}

func main() {
    ConnRedis()
}

 

标签:nil,err,--,fmt,redis,rd,Println,Go
From: https://www.cnblogs.com/Xinenhui/p/17346897.html

相关文章

  • PHP 常用数组函数汇集,详细解释描述
    PHPArray函数函数描述PHParray()创建数组。3array_change_key_case()返回其键均为大写或小写的数组。4array_chunk()把一个数组分割为新的数组块。4array_combine()通过合并两个数组来创建一个新数组。5array_count_values()用于统计数组中所有值出现的次数。4array_diff()返回两......
  • php exit、return、break、continue之间的区别,详细介绍
    相信大家在php开发中有几个常用的停止程序和循环的关键字的误区( exit、return、break、continue)exit退出所有脚本,是个函数return语言结构的用法---作用:终止函数的执行和从函数中返回一个值break结束当前for,foreach,while,do..while或者switch结构的执行(break可以接受一......
  • 授权实现 封装权限信息
    限制访问资源所需权限​SpringSecurity为我们提供了基于注解的权限控制方案,这也是我们项目中主要采用的方式。我们可以使用注解去指定访问对应的资源所需的权限。​但是要使用它我们需要先开启相关配置我们前面在写UserDetailsServiceImpl的时候说过,在查询出用户后还要获取......
  • php递归遍历文件目录
    美日汇:www.hnzyxok.com手机端:www.hnzyxok.com/i递归遍历文件目录(大体的思路就是:传入一个文件名后输出遍历所有内容,等发现文件还是个文件夹的时候接着递归调用当前的遍历方法,如果不是文件夹就输出文件名)functiondakai($mulu){$mydir=dir($mulu);echo"<ul>\n";while($file......
  • Leetcode 53. 最大子数组和 Python题解
    来源:力扣(LeetCode)链接:https://leetcode.cn/problems/maximum-subarray著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。1.动态规划解题思路:对于当前元素nums[i]来说,最大的连续子数组可以为:nums[0:i]中的最大连续子数组加上nums[i]nums[i],此时nums[......
  • php实现网站生成桌面快捷方式
    PHP生成桌面快捷方式就是这么的简单,大家生成的时候改下你要生成的网站即可dianji.html代码:<ahref="a.php?url=www.hnzyxok.com&name=美日汇">生成左面快捷方式</a>shengcheng.php代码:<?php//网站生存左面快捷方式---功能$url=$_GET['url'];$filename=urldecode($_GET['n......
  • ASP.NET Core Web API 流式返回,逐字显示
    Websocket、SSE(Server-SentEvents)和长轮询(LongPolling)都是用于网页和服务端通信的技术。Websocket是一种全双工通信协议,能够实现客户端和服务端之间的实时通信。它基于TCP协议,并且允许服务器主动向客户端推送数据,同时也允许客户端向服务器发送数据。SSE是一种单向通信协议,允......
  • Go 输出两个slice切片的差集
    goslice切片差集funcmain(){leyangjun1:=[]string{10,9,8}leyangjun2:=[]string{4,5,6,7,8}retDiff:=DifferenceSet(leyangjun1,leyangjun2)fmt.Println(retDiff)}funcDifferenceSet(a[]uint32,b[]uint32)[]uint32{ varc[]uint32 tem......
  • Python常见的10个安全漏洞及修复方法
    关注我了解更多Python技术知识,带你一路“狂飙”到底!上岸大厂不是梦!编写安全的代码很困难,当你学习一门编程语言、一个模块或框架时,你会学习其使用方法。在考虑安全性时,你需要考虑如何避免代码被滥用,Python也不例外,即使在标准库中,也存在着许多糟糕的实例。然而,许多Python开发人员......
  • GoLang 版本号大小对比
    go版本号大小对比,比如:1.0.0 <1.0.1   思路:按照 .(点符号)分割,分割后将其转成整型,然后再就行对比。//版本号对比使用【版本号=第一位*10000+第二位*100+第三位】//一般版本号是3位,如果大于三位就需要在此进行扩展funcFormatAppVersion(versionNostring)int{......