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

相关文章

Go标准库常见错误分析和解决办法

《Go标准库常见错误分析和解决办法》Go语言的标准库为开发者提供了丰富且高效的工具,涵盖了从网络编程到文件操作等各个方面,然而,标准库虽好,使用不当却可能适得其反,正所谓工欲善其事,必先利其器,本文将... 目录1. 使用了错误的time.Duration2. time.After导致的内存泄漏3. jsO

go中空接口的具体使用

《go中空接口的具体使用》空接口是一种特殊的接口类型,它不包含任何方法,本文主要介绍了go中空接口的具体使用,具有一定的参考价值,感兴趣的可以了解一下... 目录接口-空接口1. 什么是空接口?2. 如何使用空接口?第一,第二,第三,3. 空接口几个要注意的坑坑1:坑2:坑3:接口-空接口1. 什么是空接

Python Dash框架在数据可视化仪表板中的应用与实践记录

《PythonDash框架在数据可视化仪表板中的应用与实践记录》Python的PlotlyDash库提供了一种简便且强大的方式来构建和展示互动式数据仪表板,本篇文章将深入探讨如何使用Dash设计一... 目录python Dash框架在数据可视化仪表板中的应用与实践1. 什么是Plotly Dash?1.1

基于Flask框架添加多个AI模型的API并进行交互

《基于Flask框架添加多个AI模型的API并进行交互》:本文主要介绍如何基于Flask框架开发AI模型API管理系统,允许用户添加、删除不同AI模型的API密钥,感兴趣的可以了解下... 目录1. 概述2. 后端代码说明2.1 依赖库导入2.2 应用初始化2.3 API 存储字典2.4 路由函数2.5 应

Python GUI框架中的PyQt详解

《PythonGUI框架中的PyQt详解》PyQt是Python语言中最强大且广泛应用的GUI框架之一,基于Qt库的Python绑定实现,本文将深入解析PyQt的核心模块,并通过代码示例展示其应用场... 目录一、PyQt核心模块概览二、核心模块详解与示例1. QtCore - 核心基础模块2. QtWid

Redis 中的热点键和数据倾斜示例详解

《Redis中的热点键和数据倾斜示例详解》热点键是指在Redis中被频繁访问的特定键,这些键由于其高访问频率,可能导致Redis服务器的性能问题,尤其是在高并发场景下,本文给大家介绍Redis中的热... 目录Redis 中的热点键和数据倾斜热点键(Hot Key)定义特点应对策略示例数据倾斜(Data S

利用Go语言开发文件操作工具轻松处理所有文件

《利用Go语言开发文件操作工具轻松处理所有文件》在后端开发中,文件操作是一个非常常见但又容易出错的场景,本文小编要向大家介绍一个强大的Go语言文件操作工具库,它能帮你轻松处理各种文件操作场景... 目录为什么需要这个工具?核心功能详解1. 文件/目录存javascript在性检查2. 批量创建目录3. 文件

C语言实现两个变量值交换的三种方式

《C语言实现两个变量值交换的三种方式》两个变量值的交换是编程中最常见的问题之一,以下将介绍三种变量的交换方式,其中第一种方式是最常用也是最实用的,后两种方式一般只在特殊限制下使用,需要的朋友可以参考下... 目录1.使用临时变量(推荐)2.相加和相减的方式(值较大时可能丢失数据)3.按位异或运算1.使用临时

redis+lua实现分布式限流的示例

《redis+lua实现分布式限流的示例》本文主要介绍了redis+lua实现分布式限流的示例,可以实现复杂的限流逻辑,如滑动窗口限流,并且避免了多步操作导致的并发问题,具有一定的参考价值,感兴趣的可... 目录为什么使用Redis+Lua实现分布式限流使用ZSET也可以实现限流,为什么选择lua的方式实现

Redis中管道操作pipeline的实现

《Redis中管道操作pipeline的实现》RedisPipeline是一种优化客户端与服务器通信的技术,通过批量发送和接收命令减少网络往返次数,提高命令执行效率,本文就来介绍一下Redis中管道操... 目录什么是pipeline场景一:我要向Redis新增大批量的数据分批处理事务( MULTI/EXE