当前位置:网站首页>Go操作Redis数据库
Go操作Redis数据库
2022-08-03 09:18:00 【m0_67394230】
Redis数据库介绍
Redis支持诸如字符串(strings)、哈希(hashes)、列表(lists)、集合(sets)、带范围查询的排序集合(sorted sets)、位图(bitmaps)、hyperloglogs。
Redis应用场
- 缓存系统,减轻主数据库(MySQL)的压力。
- 计数场景,比如微博、抖音中的关注数和粉丝数。
- 热门排行榜,需要排序的场景特别适合使用ZSET。
- 利用LIST可以实现队列的功能。
go-redis库
区别于另一个比较常用的Go语言redis client库:redigo,我们这里采用https://github.com/go-redis/redis连接Redis数据库并进行操作,因为go-redis支持连接哨兵及集群模式的Redis。
go get -u github.com/go-redis/redis
如果使用的是Goland集成工具的话,就直接github.com/go-redis/redis右击导入就行了

- 右击选择依赖导入即可,超级方便。
- 然后就可进行连接操作了
redis连接
package main
import (
"fmt"
"github.com/go-redis/redis"
)
// redis
// 定义一个全局变量
var redisdb *redis.Client
func initRedis()(err error){
redisdb = redis.NewClient(&redis.Options{
Addr: "127.0.0.1:6379", // 指定
Password: "",
DB:0, // redis一共16个库,指定其中一个库即可
})
_,err = redisdb.Ping().Result()
return
}
func main() {
err := initRedis()
if err != nil {
fmt.Printf("connect redis failed! err : %v
",err)
return
}
fmt.Println("redis连接成功!")
}
- 超级方便的哈。
现在我们来进行基本的使用吧,原来我们说过,一共五种数据类型:string,hash,list,set,sortset。
// 存普通string类型,10分钟过期
redisdb.Set("test:name","科科儿子",time.Minute*10)
// 存hash数据
redisdb.HSet("test:class","521",42)
// 存list数据
redisdb.RPush("test:list",1) // 向右边添加元素
redisdb.LPush("test:list",2) // 向左边添加元素
// 存set数据
redisdb.SAdd("test:set","apple")
redisdb.SAdd("test:set","pear")

可以看出来哈,都存进去了,
还有一个zset哦,这个有点麻烦,所以我们单独讲讲
// zset 添加
func zset() {
key := “rank”
items := []redis.Z{
redis.Z{Score: 90,Member:“PHP”},
redis.Z{Score: 93,Member:“JAVA”},
redis.Z{Score: 96,Member:“C++”},
redis.Z{Score: 92,Member:“PYTHON”},
redis.Z{Score: 100,Member:“GOLANG”},
}
// 添加元素到redis中
_,err := redisdb.ZAdd(key, items…).Result()
if err != nil {
fmt.Printf("redis zadd failed! err:%v
",err)
return
}
fmt.Println(“数据传输成功!!!”)
}也是说白了也就这样,啊哈哈哈哈哈哈
go还是香的呀,所有的命令都是原生的,原来是啥就是啥,不像Java,上面ops啥的,老长老长了。
zset还可以进行一些细节的操作
加减操作

- 添加操作,可以看到,这个给go添加了10份后,就超过了C了哈,
- 你问我减法是上面?
- 你不会加个负数呀,不就是减法了,啊哈哈哈哈哈哈
按名次取值操作
- 可以看出哈,我们取出了前三哈
按分数范围取值

- 可以看出是按照93-100分内进行取值的哈。还是很方便的哦!
根据前缀获取key

- 超级方便哈!!!!
先自我介绍一下,小编13年上师交大毕业,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在。深知大多数初中级java工程师,想要升技能,往往是需要自己摸索成长或是报班学习,但对于培训机构动则近万元的学费,着实压力不小。自己不成体系的自学效率很低又漫长,而且容易碰到天花板技术停止不前。因此我收集了一份《java开发全套学习资料》送给大家,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担。添加下方名片,即可获取全套学习资料哦
边栏推荐
- 10分钟带你入门chrome(谷歌)浏览器插件开发
- 梯度消失和梯度爆炸
- Path Prefixes (倍增!树上の二分)
- Exception: Dataset not found.解决办法
- Exception: Dataset not found. Solution
- Machine learning (formula derivation and code implementation)--sklearn machine learning library
- 基于百度AI和QT的景物识别系统
- 手把手教你如何自制目标检测框架(从理论到实现)
- Network LSTM both short-term and long-term memory
- Unity编辑器扩展批量修改图片名称
猜你喜欢
随机推荐
Does setting the following sysctl settings require a system reboot?
LINGO 18.0软件安装包下载及安装教程
验证浮点数输入
bihash总结
chrome F12 network 保留之前请求信息
【无标题】
MySQL-TCL语言-transaction control language事务控制语言
Flink Yarn Per Job - Submit application
redis实现分布式锁的原理
dflow入门4——recurse&reuse&conditional
Laya中关于摄像机跟随人物移动或者点击人物碰撞器触发事件的Demo
MySQL 免安装版的下载与配置教程
qt使用mysql数据库(自学笔记)
cert-manager使用
Redis和MySQL如何保持数据一致性
MYSQL 修改时区的几种方法
浅析什么是伪类和伪元素?伪类和伪元素的区别解析
STP生成树选举结果查看及验证
110道 MySQL面试题及答案 (持续更新)
Flink Yarn Per Job - 启动AM









