安利两个超好用的的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

相关文章

Python如何计算两个不同类型列表的相似度

《Python如何计算两个不同类型列表的相似度》在编程中,经常需要比较两个列表的相似度,尤其是当这两个列表包含不同类型的元素时,下面小编就来讲讲如何使用Python计算两个不同类型列表的相似度吧... 目录摘要引言数字类型相似度欧几里得距离曼哈顿距离字符串类型相似度Levenshtein距离Jaccard相

redis群集简单部署过程

《redis群集简单部署过程》文章介绍了Redis,一个高性能的键值存储系统,其支持多种数据结构和命令,它还讨论了Redis的服务器端架构、数据存储和获取、协议和命令、高可用性方案、缓存机制以及监控和... 目录Redis介绍1. 基本概念2. 服务器端3. 存储和获取数据4. 协议和命令5. 高可用性6.

Go路由注册方法详解

《Go路由注册方法详解》Go语言中,http.NewServeMux()和http.HandleFunc()是两种不同的路由注册方式,前者创建独立的ServeMux实例,适合模块化和分层路由,灵活性高... 目录Go路由注册方法1. 路由注册的方式2. 路由器的独立性3. 灵活性4. 启动服务器的方式5.

Go语言中三种容器类型的数据结构详解

《Go语言中三种容器类型的数据结构详解》在Go语言中,有三种主要的容器类型用于存储和操作集合数据:本文主要介绍三者的使用与区别,感兴趣的小伙伴可以跟随小编一起学习一下... 目录基本概念1. 数组(Array)2. 切片(Slice)3. 映射(Map)对比总结注意事项基本概念在 Go 语言中,有三种主要

使用Navicat工具比对两个数据库所有表结构的差异案例详解

《使用Navicat工具比对两个数据库所有表结构的差异案例详解》:本文主要介绍如何使用Navicat工具对比两个数据库test_old和test_new,并生成相应的DDLSQL语句,以便将te... 目录概要案例一、如图两个数据库test_old和test_new进行比较:二、开始比较总结概要公司存在多

Redis的数据过期策略和数据淘汰策略

《Redis的数据过期策略和数据淘汰策略》本文主要介绍了Redis的数据过期策略和数据淘汰策略,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录一、数据过期策略1、惰性删除2、定期删除二、数据淘汰策略1、数据淘汰策略概念2、8种数据淘汰策略

修改若依框架Token的过期时间问题

《修改若依框架Token的过期时间问题》本文介绍了如何修改若依框架中Token的过期时间,通过修改`application.yml`文件中的配置来实现,默认单位为分钟,希望此经验对大家有所帮助,也欢迎... 目录修改若依框架Token的过期时间修改Token的过期时间关闭Token的过期时js间总结修改若依

Go Mongox轻松实现MongoDB的时间字段自动填充

《GoMongox轻松实现MongoDB的时间字段自动填充》这篇文章主要为大家详细介绍了Go语言如何使用mongox库,在插入和更新数据时自动填充时间字段,从而提升开发效率并减少重复代码,需要的可以... 目录前言时间字段填充规则Mongox 的安装使用 Mongox 进行插入操作使用 Mongox 进行更

Redis存储的列表分页和检索的实现方法

《Redis存储的列表分页和检索的实现方法》在Redis中,列表(List)是一种有序的数据结构,通常用于存储一系列元素,由于列表是有序的,可以通过索引来访问元素,因此可以很方便地实现分页和检索功能,... 目录一、Redis 列表的基本操作二、分页实现三、检索实现3.1 方法 1:客户端过滤3.2 方法

C#比较两个List集合内容是否相同的几种方法

《C#比较两个List集合内容是否相同的几种方法》本文详细介绍了在C#中比较两个List集合内容是否相同的方法,包括非自定义类和自定义类的元素比较,对于非自定义类,可以使用SequenceEqual、... 目录 一、非自定义类的元素比较1. 使用 SequenceEqual 方法(顺序和内容都相等)2.