安利两个超好用的的go redis框架

2024-03-05 19:04

本文主要是介绍安利两个超好用的的go redis框架,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

redigo

github地址

go安装go get github.com/garyburd/redigo/redis

在这里插入图片描述

该仓库换了新的仓库,建议都使用新仓库。如下:

go get github.com/gomodule/redigo/redis

该框架以近似原生的方式使用redis,命令及参数都作为函数参数传递,功能强大。

redigo 库中的 Conn 接口是操作 Redis 的主要接口:

  1. 创建会话

在github仓库的redis目录下conn.go是客户端连接服务的方法:

在这里插入图片描述

// 常用的ip与端口连接
Dial(network, address string, options ...DialOption)
// 地址url连接
DialURL(rawurl string, options ...DialOption) (Conn, error)
// 携带上下文连接的方法
DialURLContext(ctx context.Context, rawurl string, options ...DialOption) (Conn, error)// 新建连接
NewConn(netConn net.Conn, readTimeout, writeTimeout time.Duration) Conn
  1. 客户端实例
// Conn represents a connection to a Redis server.
type Conn interface {// Close closes the connection.Close() error// Err returns a non-nil value when the connection is not usable.Err() error// Do sends a command to the server and returns the received reply.// This function will use the timeout which was set when the connection is createdDo(commandName string, args ...interface{}) (reply interface{}, err error)// Send writes the command to the client's output buffer.Send(commandName string, args ...interface{}) error// Flush flushes the output buffer to the Redis server.Flush() error// Receive receives a single reply from the Redis serverReceive() (reply interface{}, err error)
}

客户端实例都是Conn类型。

import ("fmt""github.com/gomodule/redigo/redis"
)type redisClient struct {redis.Conn
}var RedisConn redisClientfunc init() {c, err := redis.Dial("tcp", "127.0.0.1:6379")if err != nil {fmt.Println("conn redis failed,", err)return}RedisConn = redisClient{c}fmt.Println("redis conn success")RedisConn.Do("auth", "123456")fmt.Println("redis auth success")
}func (c *redisClient) Close() {c.Close()
}

redis的基本操作都是通过Do方法完成。

redis-cli的基本命令如下是COMMAND KEY_NAME args...,如下:

在这里插入图片描述
在这里插入图片描述

更多命令参考

对于字符串最主要的命令就是set,del,get,expire

在这里插入图片描述
hash表最主要的命令是HMSET ket value或者hset都可,HDEL key field1,HGET key field,HGETALL key

另外还有列表,set,有序数组。

Do方法以近乎命令行的方式操作redis,如下:

RedisConn.Do("set", "test", "hello", "ex", 10)
reply, err := RedisConn.Do("get", "test")
if err != nil {fmt.Println(err)return
}
fmt.Println(reply)
c.Do("set", "key", "value")
c.Do("get", "key")
c.Do("del", "key")
c.Do("hset", "hash", "key", "value")
c.Do("hget", "hash", "key")
c.Do("hdel", "hash", "key")
c.Do("lpush", "list", "value")
c.Do("lrange", "list", 0, 10)
c.Do("lpoop", "list")

使用起来就和原生redis一样将命令及参数依次传递即可。这也是官方推荐的第三方框架。

go-redis

redis-go官方第三方方框架

go get github.com/redis/go-redis/v9

go-redis框架对redis命令封装了方法,可以使用方法来调用redis命令,例如:

rdb := redis.NewClient(&redis.Options{Addr:     "localhost:6379",Password: "123456", // no password setDB:       0,        // use default DB
})rdb.Set(ctx, "key2", "value2", 0)
rdb.Get(ctx, "key2")
rdb.Del(ctx, "key2")//
rdb.HMSet(ctx, "hash", map[string]interface{}{"field1": "value1","field2": "value2",
})
rdb.HGet(ctx, "hash", "field1")
rdb.HGetAll(ctx, "hash")
rdb.HDel(ctx, "hash", "field1")//
rdb.SAdd(ctx, "set", "value1", "value2")
rdb.SPop(ctx, "set")
rdb.SRem(ctx, "set", "value1")//
rdb.LPush(ctx, "list", "value1", "value2")
rdb.LPop(ctx, "list")
rdb.LRem(ctx, "list", 0, "value1")

需要那种数据类型就调用那个方法即可。

两个框架各有优势,喜欢那个就选择那个喏。

这篇关于安利两个超好用的的go redis框架的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/777509

相关文章

Redis中Stream详解及应用小结

《Redis中Stream详解及应用小结》RedisStreams是Redis5.0引入的新功能,提供了一种类似于传统消息队列的机制,但具有更高的灵活性和可扩展性,本文给大家介绍Redis中Strea... 目录1. Redis Stream 概述2. Redis Stream 的基本操作2.1. XADD

深入理解Go语言中二维切片的使用

《深入理解Go语言中二维切片的使用》本文深入讲解了Go语言中二维切片的概念与应用,用于表示矩阵、表格等二维数据结构,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧... 目录引言二维切片的基本概念定义创建二维切片二维切片的操作访问元素修改元素遍历二维切片二维切片的动态调整追加行动态

Knife4j+Axios+Redis前后端分离架构下的 API 管理与会话方案(最新推荐)

《Knife4j+Axios+Redis前后端分离架构下的API管理与会话方案(最新推荐)》本文主要介绍了Swagger与Knife4j的配置要点、前后端对接方法以及分布式Session实现原理,... 目录一、Swagger 与 Knife4j 的深度理解及配置要点Knife4j 配置关键要点1.Spri

go中的时间处理过程

《go中的时间处理过程》:本文主要介绍go中的时间处理过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1 获取当前时间2 获取当前时间戳3 获取当前时间的字符串格式4 相互转化4.1 时间戳转时间字符串 (int64 > string)4.2 时间字符串转时间

Go语言中make和new的区别及说明

《Go语言中make和new的区别及说明》:本文主要介绍Go语言中make和new的区别及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1 概述2 new 函数2.1 功能2.2 语法2.3 初始化案例3 make 函数3.1 功能3.2 语法3.3 初始化

C# 比较两个list 之间元素差异的常用方法

《C#比较两个list之间元素差异的常用方法》:本文主要介绍C#比较两个list之间元素差异,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. 使用Except方法2. 使用Except的逆操作3. 使用LINQ的Join,GroupJoin

Redis出现中文乱码的问题及解决

《Redis出现中文乱码的问题及解决》:本文主要介绍Redis出现中文乱码的问题及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. 问题的产生2China编程. 问题的解决redihttp://www.chinasem.cns数据进制问题的解决中文乱码问题解决总结

Go语言中nil判断的注意事项(最新推荐)

《Go语言中nil判断的注意事项(最新推荐)》本文给大家介绍Go语言中nil判断的注意事项,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1.接口变量的特殊行为2.nil的合法类型3.nil值的实用行为4.自定义类型与nil5.反射判断nil6.函数返回的

Go语言数据库编程GORM 的基本使用详解

《Go语言数据库编程GORM的基本使用详解》GORM是Go语言流行的ORM框架,封装database/sql,支持自动迁移、关联、事务等,提供CRUD、条件查询、钩子函数、日志等功能,简化数据库操作... 目录一、安装与初始化1. 安装 GORM 及数据库驱动2. 建立数据库连接二、定义模型结构体三、自动迁

Spring 框架之Springfox使用详解

《Spring框架之Springfox使用详解》Springfox是Spring框架的API文档工具,集成Swagger规范,自动生成文档并支持多语言/版本,模块化设计便于扩展,但存在版本兼容性、性... 目录核心功能工作原理模块化设计使用示例注意事项优缺点优点缺点总结适用场景建议总结Springfox 是