Go-Redis的使用方法

一、导入包

"github.com/go-redis/redis/v8"   //版本可以更改的

二、初始化链接

var (rdb *redis.Client
)
// 初始化连接
func initClient() (err error) {rdb = redis.NewClient(&redis.Options{Addr:     "localhost:6379",Password: "",  // no password setDB:       0,   // use default DBPoolSize: 100, // 连接池大小})ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)defer cancel()_, err = rdb.Ping(ctx).Result()return err
}

三、相关增删查改操作

优先初始化

ctx := context.Background()err:=initClient()if err!=nil{panic(err)return}

1、get和set的用法

(1)set

 err=rdb.Set(ctx,"name","Go",0).Err()if err!=nil{panic(err)return}

(2)get

val2, err := rdb.Get(ctx, "name").Result()if err == redis.Nil {fmt.Println("name does not exist")} else if err != nil {panic(err)} else {fmt.Println("name=", val2)}

2、zset用法

func TestZset(){err:=initClient()if err != nil {fmt.Printf("initClient(), err:%v\n", err)return}ctx := context.Background()zsetkey:="lang_rank"languages := []*redis.Z{&redis.Z{Score: 90.0, Member: "Golang"},&redis.Z{Score: 98.0, Member: "Java"},&redis.Z{Score: 95.0, Member: "Python"},&redis.Z{Score: 97.0, Member: "JavaScript"},&redis.Z{Score: 99.0, Member: "C/C++"},}num,err:=rdb.ZAdd(ctx,zsetkey,languages...).Result()if err != nil {fmt.Printf("zadd failed, err:%v\n", err)return}fmt.Printf("zadd %d success.\n", num)// 把Golang的分数加10newScore, err := rdb.ZIncrBy(ctx,zsetkey, 10.0, "Golang").Result()if err != nil {fmt.Printf("zincrby failed, err:%v\n", err)return}fmt.Printf("Golang's score is %f now.\n", newScore)// 取分数最高的3个ret, err := rdb.ZRevRangeWithScores(ctx,zsetkey, 0, 2).Result()if err != nil {fmt.Printf("zrevrange failed, err:%v\n", err)return}for _, z := range ret {fmt.Println(z.Member, z.Score)}// 取95~100分的op := redis.ZRangeBy{Min: "95",Max: "100",}ret, err = rdb.ZRangeByScoreWithScores(ctx,zsetkey, &op).Result()if err != nil {fmt.Printf("zrangebyscore failed, err:%v\n", err)return}for _, z := range ret {fmt.Println(z.Member, z.Score)}
}

3、根据前缀获取key

vals, err := rdb.Keys(ctx, "prefix*").Result()

4、执行自定义命令

res, err := rdb.Do(ctx, "set", "key", "value").Result()

4、Pipeline

pipe := rdb.Pipeline()incr := pipe.Incr("pipeline_counter")
pipe.Expire("pipeline_counter", time.Hour)_, err := pipe.Exec()
fmt.Println(incr.Val(), err)

如果看完对自己有所帮助,请点赞支持

Go-Redis的使用方法相关推荐

  1. Redis Cluster搭建方法简介22211111

    Redis Cluster搭建方法简介 (2013-05-29 17:08:57) 转载▼ Redis Cluster即Redis的分布式版本,将是Redis继支持Lua脚本之后的又一重磅功能,官方声 ...

  2. k8s安装sqlite3_kubernetes环境部署单节点redis数据库的方法

    kubernetes部署redis数据库(单节点) redis简介 Redis 是我们常用的非关系型数据库,在项目开发.测试.部署到生成环境时,经常需要部署一套 Redis 来对数据进行缓存.这里介绍 ...

  3. docker 本地部署 mysql_Docker 部署Mysql 服务和Redis 服务的方法

    Docker 部署Mysql 服务的方法 1. 拉取Mysql 5.6最新版本镜像 sudo docker pull mysql:5.6 2. 查看Mysql 镜像 sudo docker image ...

  4. php使用异步redis,PHP Swoole异步Redis客户端实现方法示例

    本文实例讲述了PHP Swoole异步Redis客户端实现方法.分享给大家供大家参考,具体如下: 使用版本:1.8.0及以上 使用条件: 1.开启async-redis php --ri swoole ...

  5. linux安装redis插件,Linux平台安装redis及redis扩展的方法

    本文实例讲述了Linux平台安装redis及redis扩展的方法.分享给大家供大家参考,具体如下: 本教程使用的文档版本为 2.8.17,下载并安装: $ wget http://download.r ...

  6. redis怎么连接mysql数据库_Golang连接Redis数据库的方法

    Golang连接Redis数据库 golang连接数据库,这里博主推荐使用go-redis这个库,理由很简单(连接数据库的操作类似在数据库里面输入命令) go-redis的安装方式 go get -v ...

  7. Redis - increment 递增方法 | 处理防重复和并发问题

    Redis - increment 递增方法 | 处理防重复和并发问题 一.使用场景 1.有时因为网路原因,在保存或其他操作时会发生重复提交问题 2.针对秒杀.抢购.多个用户同时下单的情况(不过red ...

  8. python 交互redis 的ZADD方法异常: AttributeError: ‘int‘ object has no attribute ‘items‘

    2019.8.15更新 代理池异常的原因,是因为在db.py中zadd方法没有修改完全. def max(self, proxy):"""将代理设置为MAX_SCORE: ...

  9. 对redis的keys方法替换

    对redis的keys方法替换 最近公司需要做redis服务的迁移,一些旧项目用的还是以前的jedisAPI.发现有个项目用的keys方法模糊查询,而这在生产环境是绝对禁止的.keys命令的时间复杂度 ...

  10. redis mysql 原子计数器_使用redis的increment()方法实现计数器功能案例

    一直知道redis可以用来实现计数器功能,但是之前没有实际使用过,昨天碰到一个需求:用户扫码当天达到20次即提示:当日扫码次数达到上限! 当时就想到使用redis的递增方法increment()来实现 ...

最新文章

  1. BMP图形文件分析类(c#)
  2. Java的finally执行顺序_Java return和finally执行顺序
  3. 【svn老玩家翻车了,git玩的不够6】git恢复本地误删的文件
  4. protect 继承_C++ protected继承和private继承是不是没用的废物?
  5. 为什么选择ASP.NET Core
  6. java单例模式代码vol_单例模式--java代码实现
  7. 牛客网2018多校第一场J题
  8. OSPF基础内容与网络类型实验
  9. wince6.0 OK6410 启动NandFlash路径下的程序快捷键
  10. 欧姆龙PLC存储区划分小结
  11. idea maven 本地仓库配置报错
  12. unity3d 连接mysql_我学院:Unity3D连接MySql数据库的方法
  13. R语言 创建空的数据框
  14. 深度优先搜索—走迷宫
  15. 编程5分钟,命名2小时!聊聊命名规则!
  16. 2020NBA选秀大会结果出炉,开启.fans球星域名抢注!
  17. C语言用指针法输入12个整数,然后按每行4个数输出(刷题)
  18. 做网站用html好还是vue好,中大型项目用react还是vue?
  19. 【Grafana 了解、学习和使用】
  20. 作业一:按系列罗列Linux的发行版,并描述不同发行版之间的联系与区别。

热门文章

  1. gdc服务器故障输入信号超出范围,进入游戏显示输入信号超出范围!来个大神解救我啊!急急急...
  2. 《锋利的JQuery》读书要点笔记3——事件和动画
  3. ABAP-Generate dynpro动态屏幕
  4. MIT机械狗方案电机连接测试程序
  5. 独家揭秘:快速排名快速暴利的黑 帽seo
  6. sklearn中的线性回归大家族
  7. pdf在线压缩免费网站?
  8. 如何读论文?复现代码?
  9. mybatis WARN No appenders could be found for logger的解决方法
  10. 如何用栈实现深度优先算法-C语言解决迷宫问题