go redis之redigo的使用
作者:General_zy 时间:2024-05-22 17:46:37
本文主要介绍了go redis之redigo的使用,分享给大家,具体如下:
安装
go-redis 三方库为我们封装了很多函数来执行 Redis 命令,而 redigo 三方库只有一个 Do 函数执行 Redis 命令,更接近使用 redis-cli 操作 Redis。
go-redis 支持连接哨兵及集群模式的Redis
go get github.com/gomodule/redigo
go get github.com/go-redis/redis/v8
链接Redis
func main() {
c, err := redis.Dial("tcp", "localhost:6379")
if err != nil {
fmt.Println("conn redis failed,", err)
return
}
fmt.Println("redis conn success")
defer c.Close()
}
String类型操作
func main() {
? ? c, err := redis.Dial("tcp", "localhost:6379")
? ? if err != nil {
? ? ? ? fmt.Println("conn redis failed,", err)
? ? ? ? return
? ? }
? ? defer c.Close()
? ? _, err = c.Do("Set", "abc", 100)
? ? if err != nil {
? ? ? ? fmt.Println(err)
? ? ? ? return
? ? }
? ? r, err := redis.Int(c.Do("Get", "abc"))
? ? if err != nil {
? ? ? ? fmt.Println("get abc failed,", err)
? ? ? ? return
? ? }
? ? fmt.Println(r)
}
func main() {
? ? c, err := redis.Dial("tcp", "localhost:6379")
? ? if err != nil {
? ? ? ? fmt.Println("conn redis failed,", err)
? ? ? ? return
? ? }
? ? defer c.Close()
? ? _, err = c.Do("MSet", "abc", 100, "efg", 300)
? ? if err != nil {
? ? ? ? fmt.Println(err)
? ? ? ? return
? ? }
? ? r, err := redis.Ints(c.Do("MGet", "abc", "efg"))
? ? if err != nil {
? ? ? ? fmt.Println("get abc failed,", err)
? ? ? ? return
? ? }
? ? for _, v := range r {
? ? ? ? fmt.Println(v)
? ? }
}
设置过期时间
func main() {
? ? c, err := redis.Dial("tcp", "localhost:6379")
? ? if err != nil {
? ? ? ? fmt.Println("conn redis failed,", err)
? ? ? ? return
? ? }
? ? defer c.Close()
? ? _, err = c.Do("expire", "abc", 10)
? ? if err != nil {
? ? ? ? fmt.Println(err)
? ? ? ? return
? ? }
}
----------------------------
或者这样也行
do, err := client.Do("set", "name", "1111","EX",5)
List操作
func main() {
? ? c, err := redis.Dial("tcp", "localhost:6379")
? ? if err != nil {
? ? ? ? fmt.Println("conn redis failed,", err)
? ? ? ? return
? ? }
? ? defer c.Close()
? ? _, err = c.Do("lpush", "book_list", "abc", "ceg", 300)
? ? if err != nil {
? ? ? ? fmt.Println(err)
? ? ? ? return
? ? }
? ? r, err := redis.String(c.Do("lpop", "book_list"))
? ? if err != nil {
? ? ? ? fmt.Println("get abc failed,", err)
? ? ? ? return
? ? }
? ? fmt.Println(r)
}
Hash表
func main() {
? ? c, err := redis.Dial("tcp", "localhost:6379")
? ? if err != nil {
? ? ? ? fmt.Println("conn redis failed,", err)
? ? ? ? return
? ? }
? ? defer c.Close()
? ? _, err = c.Do("HSet", "books", "abc", 100)
? ? if err != nil {
? ? ? ? fmt.Println(err)
? ? ? ? return
? ? }
? ? r, err := redis.Int(c.Do("HGet", "books", "abc"))
? ? if err != nil {
? ? ? ? fmt.Println("get abc failed,", err)
? ? ? ? return
? ? }
? ? fmt.Println(r)
}
Redis连接池
var pool *redis.Pool ?//创建redis连接池
func init(){
? ? pool = &redis.Pool{ ? ? //实例化一个连接池
? ? ? ? MaxIdle:16, ? ?//最初的连接数量
? ? ? ? // MaxActive:1000000, ? ?//最大连接数量
? ? ? ? MaxActive:0, ? ?//连接池最大连接数量,不确定可以用0(0表示自动定义),按需分配
? ? ? ? IdleTimeout:300, ? ?//连接关闭时间 300秒 (300秒不使用自动关闭) ? ?
? ? ? ? Dial: func() (redis.Conn ,error){ ? ? //要连接的redis数据库
? ? ? ? ? ? return redis.Dial("tcp","localhost:6379")
? ? ? ? },
? ? }
}
func main(){
? ? c := pool.Get() //从连接池,取一个链接
? ? defer c.Close() //函数运行结束 ,把连接放回连接池
? ? ? ? _,err := c.Do("Set","abc",200)
? ? ? ? if err != nil {
? ? ? ? ? ? fmt.Println(err)
? ? ? ? ? ? return
? ? ? ? }
? ? ? ? r,err := redis.Int(c.Do("Get","abc"))
? ? ? ? if err != nil {
? ? ? ? ? ? fmt.Println("get abc faild :",err)
? ? ? ? ? ? return
? ? ? ? }
? ? ? ? fmt.Println(r)
? ? ? ? pool.Close() //关闭连接池
}
来源:https://blog.csdn.net/General_zy/article/details/124831998
标签:go,redis,redigo
0
投稿
猜你喜欢
网页设计标准尺寸参考
2007-12-29 20:42:00
Python通过Manager方式实现多个无关联进程共享数据的实现
2021-12-27 04:03:17
比较简单的异步加载JS文件的代码
2009-07-06 13:13:00
python网络编程学习笔记(二):socket建立网络客户端
2023-08-18 13:57:44
解决Building wheel for wrapt (setup.py) ... error的问题
2023-09-25 22:24:17
vue实现引入本地json的方法分析
2023-07-02 16:32:14
JS 显示当前日期+星期(静态)
2007-09-11 13:29:00
git使用.gitignore设置不生效或不起作用问题的解决方法
2021-06-09 17:17:07
Python3结合Dlib实现人脸识别和剪切
2023-01-10 01:28:48
js 可选链操作符的使用
2023-08-18 16:04:57
总结用Pdb库调试Python的方式及常用的命令
2023-03-11 02:09:53
OpenCV如何去除图片中的阴影的实现
2023-07-08 22:49:29
CSS实现DIV完美垂直居中(支持多浏览器)
2007-08-13 09:21:00
对用户进行电话访谈的一点感想
2009-12-28 13:05:00
远程登陆SQL Server 2014数据库的方法
2024-01-28 03:39:01
链接与文本标签们
2008-04-04 18:07:00
python实现linux下抓包并存库功能
2022-12-23 20:22:06
基于Python制作一个图片色卡提取器
2023-06-15 14:25:26
python使用xlrd实现检索excel中某列含有指定字符串记录的方法
2021-04-23 12:41:26
python开发之str.format()用法实例分析
2022-01-15 22:10:23