用帝国cms做企业网站版权,程序外包价格,咨询公司网站建设,openwrt wordpressGO系列
1、GO学习之Hello World 2、GO学习之入门语法 3、GO学习之切片操作 4、GO学习之 Map 操作 5、GO学习之 结构体 操作 6、GO学习之 通道(Channel) 7、GO学习之 多线程(goroutine) 8、GO学习之 函数(Function) 9、GO学习之 接口(Interface) 10、GO学习之 网络通信(Net/Htt…GO系列
1、GO学习之Hello World 2、GO学习之入门语法 3、GO学习之切片操作 4、GO学习之 Map 操作 5、GO学习之 结构体 操作 6、GO学习之 通道(Channel) 7、GO学习之 多线程(goroutine) 8、GO学习之 函数(Function) 9、GO学习之 接口(Interface) 10、GO学习之 网络通信(Net/Http) 11、GO学习之 微框架(Gin) 12、GO学习之 数据库(mysql) 13、GO学习之 数据库(Redis) 文章目录 GO系列前言一、Redis 简介二、Redis 基本操作2.1 get - set 操作2.2 lpush - lpop 操作2.3 hset - hget 操作2.4 sadd - smembers 操作 三、第三方库四、总结 前言
按照公司目前的任务go 学习是必经之路了虽然行业卷不过技多不压身依旧努力 一个项目想要提高访问速度和性能缓存是很重要的一步甚至可以说是必不可少那目前最最流行的还是 Redis 缓存那 Go 中怎么对Redis进行操作呢有哪些第三方的函数库可以方便我们使用呢
一、Redis 简介
尽管说起 Redis 大家都很熟悉不过个人觉得再熟悉的东西也难免有疏忽的点。 RedisRemote Dictionary Server是一个开源的高性能的基于key-value内存数据存储系统遵循 BSD 协议通常被用作缓存、数据库和消息队列。Redis 支持多种数据结构比如string、list、set、zset、hash等。 Redis优点如下不限于
高性能Redis基于内存进行数据读写速度非常快。数据结构多样性Redis 支持多样数据结构适用于不同的数据存储需求。支持持久化Redis可以持久化数据到磁盘防止数据丢失有 RDB 、AOF和混合持久化方式。支持分布式Redis提供了分布式存储的支持以集群的方式提供服务有 主从master - slave、哨兵Sentinel、集群Cluster集群方式。功能更加丰富Redis提供了更加丰富的功能比如发布订阅、Lua脚本执行等。
Redis 缺点如下不限于
内存限制Redis数据存储在内存中受限于内存大小不适用与存储大量数据。数据持久化效率数据持久化可能会影响Redis性能。
二、Redis 基本操作
首先下载 Redis 的第三方库 针对简单的 Redis 操作操作比较容易上手。 go get github.com/go-redis/redis2.1 get - set 操作
package mainimport (fmtloggithub.com/go-redis/redis
)func main() {// 创建一个Redis客户端client : redis.NewClient(redis.Options{Addr: 192.168.1.199:6379,Password: ,DB: 0,})// 设置一个 key - valuekey : key-2value : Hello Redis// err : client.Set(key, value, 0).Err()err : client.Set(key, value, 0).Err()if err ! nil {log.Fatal(err)}fmt.Println(set key 成功)// 获取一个keyval, gErr : client.Get(key).Result()if gErr ! nil {log.Fatal(gErr)}fmt.Println(获取到, key, val)
}运行结果
PS D:\workspaceGo\src\redis go run .\getset.go
set key 成功
获取到 key-2 Hello Redis2.2 lpush - lpop 操作
package mainimport (fmtloggithub.com/go-redis/redis
)func main() {// 创建一个Redis客户端client : redis.NewClient(redis.Options{Addr: 192.168.1.199:6379,Password: ,DB: 0,})key : myListvalue : element-// 向列表中添加元素for i : 0; i 3; i {err : client.LPush(key, fmt.Sprint(value, i)).Err()if err ! nil {log.Fatal(err)}}fmt.Println(Lpush 成功)// 向列表中获取元素elements, lErr : client.LPop(key).Result()if lErr ! nil {log.Fatal(lErr)}fmt.Printf(获取到列表 %s%v, key, elements)
}运行结果
PS D:\workspaceGo\src\redis go run .\listTest.go
Lpush 成功
获取到列表 myListelement-22.3 hset - hget 操作
package mainimport (fmtloggithub.com/go-redis/redis
)func main() {// 创建一个Redis客户端client : redis.NewClient(redis.Options{Addr: 192.168.1.199:6379,Password: ,DB: 0,})key : myHashfield : field-// 向 hash 中设置字段和值for i : 0; i 3; i {err : client.HSet(key, fmt.Sprint(field, i), i).Err()if err ! nil {log.Fatal(err)}}fmt.Println(向 myHash 中添加值成功)// 从 hash 中获取字段和值value, hErr : client.HGet(key, fmt.Sprint(field, 0)).Result()if hErr ! nil {log.Fatal(hErr)}fmt.Printf(hash中的第一个字段%s 值%v \n, field-0, value)// 获取所有的 字段 和 值allValue, haErr : client.HGetAll(key).Result()if haErr ! nil {log.Fatal(hErr)}fmt.Println(hash中的所有字段和值, allValue)
}
运行结果
PS D:\workspaceGo\src\redis go run .\hashTest.go
向 myHash 中添加值成功
hash中的第一个字段field-0 值0
hash中的所有字段和值 map[field-0:0 field-1:1 field-2:2]2.4 sadd - smembers 操作
package mainimport (fmtloggithub.com/go-redis/redis
)func main() {// 创建一个Redis客户端client : redis.NewClient(redis.Options{Addr: 192.168.1.199:6379,Password: ,DB: 0,})key : mySetvalue : element-// 向集合中添加元素for i : 0; i 3; i {err : client.SAdd(key, fmt.Sprint(value, i)).Err()if err ! nil {log.Fatal(err)}}fmt.Println(向集合 mySet 中添加元素完成)// 从 mySet 集合中获取元素values, smErr : client.SMembers(key).Result()if smErr ! nil {log.Fatal(smErr)}fmt.Println(从 mySet 集合中获取的元素, values)
}
运行结果
PS D:\workspaceGo\src\redis go run .\setTest.go
向集合 mySet 中添加元素完成
从 mySet 集合中获取的元素 [element-1 element-0 element-2]三、第三方库
Redis 还有其他第三方库比如github.com/go-redis/redis/v8 和 golang.org/x/net/context 上下文配合可以在操作 Redis 过程中进行错误信息和元信息的追踪以便实现更复杂的业务逻辑。
go get github.com/go-redis/redis/v8
go get golang.org/x/net/context还有其他的比如
github.com/gomodule/redigo提供了更底层的接口允许更精细地控制 Redis 操作。github.com/bsm/redislock提供了分布式锁的实现用于分布式系统中保证数据一致性。github.com/alicebob/miniredis这是一个内从中模拟 Redis 服务器的库用于单元集成测试。
四、总结
此篇仅仅用了 github.com/go-redis/redis 库对 Redis 的基本操作针对不同的数据结构进行了简单的操作其实如若对 Redis 的命令熟悉那用 Go 来操作 Redis 就不复杂了。 总之Redis 是一个功能丰富、高性能的内存数据存储系统适用于缓存、数据库和消息队列等多种应用场景。在使用 Redis 缓存时需要考虑数据存储需求、缓存失效策略等因素以实现更高效的数据访问和管理。 文章转载自: http://www.morning.rqkzh.cn.gov.cn.rqkzh.cn http://www.morning.glrzr.cn.gov.cn.glrzr.cn http://www.morning.dhckp.cn.gov.cn.dhckp.cn http://www.morning.sbrjj.cn.gov.cn.sbrjj.cn http://www.morning.wtcd.cn.gov.cn.wtcd.cn http://www.morning.ymmjx.cn.gov.cn.ymmjx.cn http://www.morning.hfytgp.cn.gov.cn.hfytgp.cn http://www.morning.ksgjy.cn.gov.cn.ksgjy.cn http://www.morning.ffrys.cn.gov.cn.ffrys.cn http://www.morning.plhyc.cn.gov.cn.plhyc.cn http://www.morning.qxycf.cn.gov.cn.qxycf.cn http://www.morning.llxyf.cn.gov.cn.llxyf.cn http://www.morning.ntyanze.com.gov.cn.ntyanze.com http://www.morning.smpmn.cn.gov.cn.smpmn.cn http://www.morning.jqllx.cn.gov.cn.jqllx.cn http://www.morning.xrpjr.cn.gov.cn.xrpjr.cn http://www.morning.yjfmj.cn.gov.cn.yjfmj.cn http://www.morning.rlxg.cn.gov.cn.rlxg.cn http://www.morning.rswfj.cn.gov.cn.rswfj.cn http://www.morning.zyffq.cn.gov.cn.zyffq.cn http://www.morning.ztmnr.cn.gov.cn.ztmnr.cn http://www.morning.mnsts.cn.gov.cn.mnsts.cn http://www.morning.nzsx.cn.gov.cn.nzsx.cn http://www.morning.chxsn.cn.gov.cn.chxsn.cn http://www.morning.bhrkx.cn.gov.cn.bhrkx.cn http://www.morning.zbnts.cn.gov.cn.zbnts.cn http://www.morning.jbpdk.cn.gov.cn.jbpdk.cn http://www.morning.jtsdk.cn.gov.cn.jtsdk.cn http://www.morning.btgxf.cn.gov.cn.btgxf.cn http://www.morning.mhmsn.cn.gov.cn.mhmsn.cn http://www.morning.mnsmb.cn.gov.cn.mnsmb.cn http://www.morning.kmldm.cn.gov.cn.kmldm.cn http://www.morning.xxhc.cn.gov.cn.xxhc.cn http://www.morning.rmjxp.cn.gov.cn.rmjxp.cn http://www.morning.dfbeer.com.gov.cn.dfbeer.com http://www.morning.nsmyj.cn.gov.cn.nsmyj.cn http://www.morning.kdlzz.cn.gov.cn.kdlzz.cn http://www.morning.yrqb.cn.gov.cn.yrqb.cn http://www.morning.rkkh.cn.gov.cn.rkkh.cn http://www.morning.ygxf.cn.gov.cn.ygxf.cn http://www.morning.fjkkx.cn.gov.cn.fjkkx.cn http://www.morning.kqgqy.cn.gov.cn.kqgqy.cn http://www.morning.iqcge.com.gov.cn.iqcge.com http://www.morning.mzgq.cn.gov.cn.mzgq.cn http://www.morning.fgqbx.cn.gov.cn.fgqbx.cn http://www.morning.drywd.cn.gov.cn.drywd.cn http://www.morning.cpkcq.cn.gov.cn.cpkcq.cn http://www.morning.sfcfy.cn.gov.cn.sfcfy.cn http://www.morning.dpgdj.cn.gov.cn.dpgdj.cn http://www.morning.ldwxj.cn.gov.cn.ldwxj.cn http://www.morning.kehejia.com.gov.cn.kehejia.com http://www.morning.wqpb.cn.gov.cn.wqpb.cn http://www.morning.cttgj.cn.gov.cn.cttgj.cn http://www.morning.lbrwm.cn.gov.cn.lbrwm.cn http://www.morning.wqmpd.cn.gov.cn.wqmpd.cn http://www.morning.yxplz.cn.gov.cn.yxplz.cn http://www.morning.mmhyx.cn.gov.cn.mmhyx.cn http://www.morning.skbkq.cn.gov.cn.skbkq.cn http://www.morning.tmzlt.cn.gov.cn.tmzlt.cn http://www.morning.spwm.cn.gov.cn.spwm.cn http://www.morning.tcylt.cn.gov.cn.tcylt.cn http://www.morning.qbpqw.cn.gov.cn.qbpqw.cn http://www.morning.qlsyf.cn.gov.cn.qlsyf.cn http://www.morning.rfyk.cn.gov.cn.rfyk.cn http://www.morning.jbqwb.cn.gov.cn.jbqwb.cn http://www.morning.zwyuan.com.gov.cn.zwyuan.com http://www.morning.wmfmj.cn.gov.cn.wmfmj.cn http://www.morning.kscwt.cn.gov.cn.kscwt.cn http://www.morning.knlyl.cn.gov.cn.knlyl.cn http://www.morning.wpqcj.cn.gov.cn.wpqcj.cn http://www.morning.bsxws.cn.gov.cn.bsxws.cn http://www.morning.bwrbm.cn.gov.cn.bwrbm.cn http://www.morning.dfbeer.com.gov.cn.dfbeer.com http://www.morning.kxqwg.cn.gov.cn.kxqwg.cn http://www.morning.bfhfb.cn.gov.cn.bfhfb.cn http://www.morning.pwmpn.cn.gov.cn.pwmpn.cn http://www.morning.hlnrj.cn.gov.cn.hlnrj.cn http://www.morning.dmtwz.cn.gov.cn.dmtwz.cn http://www.morning.bhjyh.cn.gov.cn.bhjyh.cn http://www.morning.hgscb.cn.gov.cn.hgscb.cn