go-redis

这篇具有很好参考价值的文章主要介绍了go-redis。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

安装redis(docker)

sudo docker pull redis
sudo docker images  

在官网下载redis.conf配置文件

redis官网:http://www.redis.cn/download.html
go-redis,golang,redis,开发语言
将下载后的压缩包解压得到redis.conf文件,放到自己的目录,我的是/home/yi/Project/redis/redis.conf
同时在redis目录下创建data文件夹用于存放redis数据
go-redis,golang,redis,开发语言

redis.conf 主流配置

bind 127.0.0.1 #注释掉这部分,使redis可以外部访问
daemonize no#用守护线程的方式启动
requirepass 你的密码#给redis设置密码
appendonly yes#redis持久化  默认是no
tcp-keepalive 300 #防止出现远程主机强迫关闭了一个现有的连接的错误 默认是300
protected-mode no #可以让别的域名访问

启动redis实例

sudo docker run -p 6379:6379 --name redis -v /home/yi/Project/redis/redis.conf:/etc/redis/redis.conf  -v /home/yi/Project/redis/data:/data -d redis redis-server /etc/redis/redis.conf --appendonly yes

需要通过-v容器卷的方式将redis.conf与redis/data目录映射到redis实例中。
redis-server /etc/redis/redis.conf:这个是关键配置,让redis不是无配置启动,而是按照这个redis.conf的配置启动

查看是否启动成功

sudo docker ps  
sudo docker logs redis

进入容器运行redis命令行:

docker exec -it redis redis-cli
ping 

收到pong则为成功.

go-redis

redis官网: https://redis.io/docs/clients/go/

安装包

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

基本查询

client := redis.NewClient(&redis.Options{
		Addr:     "10.3.89.117:6379",
		Password: "", //no password
		DB:       0,  //use default DB
	})
	//Set方法
	err := client.Set(context.Background(), "test2", "t2", 0).Err()
	if err != nil {
		panic(err)
	}
	//Get方法
	val, err := client.Get(context.Background(), "test2").Result()
	if err != nil {
		panic(err)
	}
	fmt.Println("val:", val)
	//原生语句
	val2, err := client.Do(context.Background(), "get", "test").Result()
	println(val2.(string))

map插入哈希

session := map[string]string{"name": "John", "surname": "Smith", "company": "Redis", "age": "29"}
for k, v := range session {
    err := client.HSet(ctx, "user-session:123", k, v).Err()
    if err != nil {
        panic(err)
    }
}

userSession := client.HGetAll(ctx, "user-session:123").Val()
fmt.Println(userSession)

发布订阅机制

由channel、发布者、多个订阅者组成,发布者、订阅者都为redis客户端。
发布者在指定channel发布消息后,订阅者会通过channel接受发布的消息,类似于组播。
go-redis,golang,redis,开发语言
图自:https://juejin.cn/post/7202521955366879288#heading-3

	//subscribe
	go func() {
		sub := client.Subscribe(context.Background(), "channel1")
		for msg := range sub.Channel() {
			fmt.Println("Subscribe:", msg.Channel, msg.Payload) //Subscribe:channel1 hellox 
		}
	}()
	time.Sleep(time.Second)
	//publish
	go func() {
		for i := 0; i < 10; i++ {
			client.Publish(context.Background(), "channel1", "hello"+strconv.Itoa(i))
		}
	}()
	time.Sleep(time.Second * 5)

事务

需要注意在调用exec函数后事务才会被执行,res.Result() /Val()等查询结果需要在exec函数之后执行。文章来源地址https://www.toymoban.com/news/detail-522957.html

go func() {
		//开启事务
		txPipeline := client.TxPipeline()
		//Do something
		res1 := txPipeline.SMembers(context.Background(), "set1")

		res2 := txPipeline.Get(context.Background(), "test")

		txPipeline.Set(context.Background(), "test", "99", 0)
		//执行事务
		_, err := txPipeline.Exec(context.Background())
		if err != nil {
			panic(err)
		}
		
		fmt.Println(res1.Result())
		fmt.Println(res2.Val())
		fmt.Println("tx end!")
	}()

到了这里,关于go-redis的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Golang 通过开源库 go-redis 操作 NoSQL 缓存服务器

    前置条件: 1、导入库: import ( \\\"github.com/go-redis/redis/v8\\\" ) 2、搭建哨兵模式集群 具体可以百度、谷歌搜索,网上现成配置教程太多了,不行还可以搜教程视频,跟着视频博主一步一个慢动作,慢慢整。 本文只介绍通过 “主从架构 / 哨兵模式” 访问的形式,这是因为,单个

    2024年01月23日
    浏览(38)
  • 【Golang】VScode配置Go语言环境

    安装VScode请参考我的上一篇博客:VScode安装_㫪548的博客-CSDN博客 接下来我们直接进入正题: Go语言(又称Golang)是一种开源的编程语言,由Google开发并于2009年首次发布。Go语言具有简洁、高效、可靠和易于阅读的特点,被设计用于解决大型项目的开发需求。它结合了静态类型

    2024年02月03日
    浏览(55)
  • 【GoLang】MAC安装Go语言环境

    小试牛刀 首先安装VScode软件 或者pycharm mac安装brew软件  brew install go 报了一个错误 不提供这个支持  重新brew install go 之后又重新brew reinstall go 使用go version 可以看到go 的版本 使用go env  可以看到go安装后的配置 配置一个环境变量 vim ~/.zshrc,  

    2024年02月15日
    浏览(45)
  • Go语言(Golang)数据库编程

    要想连接到 SQL 数据库,首先需要加载目标数据库的驱动,驱动里面包含着于该数据库交互的逻辑。 sql.Open() 数据库驱动的名称 数据源名称 得到一个指向 sql.DB 这个 struct 的指针 sql.DB 是用来操作数据库的,它代表了0个或者多个底层连接的池,这些连接由sql 包来维护,sql 包会

    2024年02月03日
    浏览(68)
  • 【Golang】Golang进阶系列教程--Go 语言切片是如何扩容的?

    在 Go 语言中,有一个很常用的数据结构,那就是切片(Slice)。 切片是一个拥有相同类型元素的可变长度的序列,它是基于数组类型做的一层封装。它非常灵活,支持自动扩容。 切片是一种引用类型,它有三个属性:指针,长度和容量。 底层源码定义如下: 指针: 指向

    2024年02月14日
    浏览(43)
  • 【Golang】Golang进阶系列教程--Go 语言 map 如何顺序读取?

    Go 语言中的 map 是一种非常强大的数据结构,它允许我们快速地存储和检索键值对。 然而,当我们遍历 map 时,会有一个有趣的现象,那就是输出的键值对顺序是不确定的。 先看一段代码示例: 当我们多执行几次这段代码时,就会发现,输出的顺序是不同的。 首先,Go 语言

    2024年02月14日
    浏览(47)
  • 【Golang】Golang进阶系列教程--Go 语言数组和切片的区别

    在 Go 语言中,数组和切片看起来很像,但其实它们又有很多的不同之处,这篇文章就来说说它们到底有哪些不同。 数组和切片是两个常用的数据结构。它们都可以用于存储一组相同类型的元素,但在底层实现和使用方式上存在一些重要的区别。 Go 中数组的长度是不可改变的

    2024年02月15日
    浏览(46)
  • 【Golang】三分钟让你快速了解Go语言&为什么我们需要Go语言?

    博主简介: 努力学习的大一在校计算机专业学生,热爱学习和创作。目前在学习和分享:数据结构、Go,Java等相关知识。 博主主页: @是瑶瑶子啦 所属专栏: Go语言核心编程 近期目标: 写好专栏的每一篇文章 Go 语言从 2009 年 9 月 21 日开始作为谷歌公司 20% 兼职项目,即相关

    2023年04月21日
    浏览(48)
  • Golang区块链钱包_go语言钱包

    Golang区块链钱包的特点 Golang区块链钱包具有以下几个特点: 1. 高性能 Golang是一种编译型语言,具有快速的执行速度和较低的内存消耗。这使得Golang区块链钱包在处理大规模交易数据时表现出色,能够满足高性能的需求。 2. 并发支持 Golang内置了轻量级线程——goroutine,以及

    2024年04月15日
    浏览(47)
  • 【GoLang】哪些大公司正在使用Go语言

    前言: 随着计算机科学和软件开发的快速发展,编程语言的选择变得愈加关键。 在这个多元化的编程语境中,Go语言(简称Golang)以其简洁、高效、并发处理能力等特性逐渐受到业界关注。 越来越多的大型科技公司纷纷采用Go语言作为其软件开发的首选语言,这种趋势反映了

    2024年02月04日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包