当前位置: 首页 > news >正文

Go 语言访问 Redis 笔记

文章目录

  • Mac 下载 Redis
  • Mac Redix 数据库打开
    • 服务端
    • 客户端
  • 导包
  • 连接数据库
  • 操作字符串
  • 操作 Hash
  • 设置过期时间
  • 队列操作
  • 连接池
  • 并发操作
  • 管道化操作
  • 事务操作

Mac 下载 Redis

Mac安装Redis,原来就是这么简单

Mac Redix 数据库打开

  • brew services start redis

服务端

  • redis-server

客户端

  • redis-cli

导包

package mainimport ("fmt""github.com/gomodule/redigo/redis"
)

连接数据库

func main() {c, err := redis.Dial("tcp", "localhost:6379")if err != nil {fmt.Println("conn redis failed,err:%v", err)return}defer c.Close()
}

操作字符串

// 获取字符串
func getString(c redis.Conn) {res, err := redis.String(c.Do("Get", "username"))if err != nil {fmt.Println(err)return}fmt.Println(res)
}// 设置字符串
func setString(c redis.Conn) {_, err := c.Do("Set", "username", "jack")if err != nil {fmt.Println(err)return}
}// 批量设置字符串
func setStrings(c redis.Conn) {_, err := c.Do("MSet", "username", "jack", "phone", "188888888")if err != nil {fmt.Println("MSet error:", err)return}
}// 批量获取字符串
func getStrings(c redis.Conn) {res2, err := redis.Strings(c.Do("MGet", "username", "phone"))if err != nil {fmt.Println("MGet error:", err)return}fmt.Println(res2)
}

操作 Hash

// redis Hash 操作 设置
func setHash(c redis.Conn) {_, err := c.Do("HSet", "names", "jim", "barry")if err != nil {fmt.Println("hset error: ", err)return}
}// redis Hash 操作 获取
func getHash(c redis.Conn) {res3, err := redis.String(c.Do("HGet", "names", "jim"))if err != nil {fmt.Println("hget error: ", err)return}fmt.Println(res3)
}

设置过期时间

// redis 设置过期时间
func setExpire(c redis.Conn) {_, err := c.Do("expire", "names", "10")if err != nil {fmt.Println("expire err: ", err)}
}

队列操作

// redis 队列
func queueOpr(c redis.Conn) {//入队列_, err := c.Do("lpush", "Queue", "jim", "barry", 9)if err != nil {fmt.Println("lpush error:", err)return}//出队列for true {r, err := redis.String(c.Do("lpop", "Queue"))if err != nil {fmt.Println("lpop error: ", err)return}fmt.Println(r)}//获取队列长度res4, err := redis.Int(c.Do("llen", "Queue"))if err != nil {fmt.Println("llen error: ", err)return}fmt.Println(res4)
}

连接池

// 使用 Pool 初始化连接池
var pool *redis.Poolfunc init() {pool = &redis.Pool{MaxActive:   1024,MaxIdle:     16,IdleTimeout: 300,Dial: func() (redis.Conn, error) {return redis.Dial("tcp", "localhost:6379")},}
}func main() {c := pool.Get()defer c.Close()_, err := c.Do("Set", "username", "jack")if err != nil {fmt.Println(err)return}r, err := redis.String(c.Do("Get", "username"))if err != nil {fmt.Println(err)return}fmt.Println(r)
}

并发操作

//redis并发实例
func main() {conn, err := redis.Dial("tcp", "localhost:6379")if err != nil {fmt.Println("connect redis error:", err)return}defer conn.Close()conn.Send("HSET", "students", "name", "jim", "age", "19")conn.Send("HSET", "students", "score", "100")conn.Send("HSET", "students", "age")conn.Flush()res1, err := conn.Receive()fmt.Printf("Receive res1:%v \n", res1)res2, err := conn.Receive()fmt.Printf("Receive res2:%v \n", res2)res3, err := conn.Receive()fmt.Printf("Receive res3:%v \n", res3)
}

管道化操作

//redis管道化操作
func main() {c, err := redis.Dial("tcp", "localhost:6379")if err != nil {fmt.Println("conn redis failed,err:", err)return}defer c.Close()c.Send("SET", "username1", "jim")c.Send("SET", "username2", "jack")c.Flush()v, err := c.Receive()fmt.Printf("v:%v,err:%v\n", v, err)v, err = c.Receive()fmt.Printf("v:%v,err:%v\n", v, err)v, err = c.Receive()fmt.Printf("v:%v,err:%v\n", v, err)
}

事务操作

// redis事务操作
func main() {conn, err := redis.Dial("tcp", "localhost:6379")if err != nil {fmt.Println("connect redis error:", err)return}defer conn.Close()conn.Send("MULTI")conn.Send("INCR", "Foo")conn.Send("INCR", "bar")r, err := conn.Do("EXEC")fmt.Println(r)
}
  • 有几个 redis 库,但一般用 “github.com/go-redis/redis/v8” --wilinzz
http://www.lryc.cn/news/209414.html

相关文章:

  • 【MySQL数据库重点】第二节:MySQL基础知识(基本操作)
  • 计算机网络--第一次作业
  • 网络协议--TCP的成块数据流
  • 鼎鑫鸿鄴引入“能源互联网+”理念 打造共赢
  • Qt下实现支持多线程的单例模式
  • 基于Java的宠物商店管理系统设计与实现(源码+lw+部署文档+讲解等)
  • ArcGIS中批量mxd高版本转低版本
  • 三篇论文:速览GPT在网络安全最新论文中的应用案例
  • 美术如何创建 skybox 贴图资源?
  • 【Linux 用户,用户组管理】
  • VS2022 C# 读取 excel 2023年
  • C# | Chaikin算法 —— 计算折线对应的平滑曲线坐标点
  • day44
  • python常用操作汇总
  • 赴日IT培训 日本IT行业为啥吃香?
  • 2016年亚太杯APMCM数学建模大赛A题基于光学信息数据的温度及关键元素含量预测求解全过程文档及程序
  • 一文讲明:企业知识库的作用和搭建方法
  • 技术的新浪潮:从SOCKS5代理到跨界电商的未来
  • Android intent的一些小使用
  • Android 关闭 SELinux 释放权限限制
  • 国际腾讯云自主拼装直播 URL教程!!!
  • AQS 为什么要使用双向链表?
  • Golang 自定义函数库(个人笔记)
  • openlayers 地图组件封装
  • 【算法设计与分析】—— 分治算法
  • Unable to find GatewayFilterFactory with name TokenRelay
  • 竞赛 深度学习大数据物流平台 python
  • git基础及原理相关解析
  • 【Python机器学习】零基础掌握isotonic_regression等渗回归
  • 支持宏的文本编辑器提高生产力