当前位置:网站首页>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开发全套学习资料》送给大家,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担。添加下方名片,即可获取全套学习资料哦
边栏推荐
- Let‘s Encrypt 使用
- 响应式布局经典范例——巨幅背景大标题
- 10分钟带你入门chrome(谷歌)浏览器插件开发
- Rabbit and Falcon are all covered, Go lang1.18 introductory and refined tutorial, from Bai Ding to Hongru, the whole platform (Sublime 4) Go lang development environment to build EP00
- 【无标题】
- Alibaba Cloud SMS Sending
- 浅析什么是伪类和伪元素?伪类和伪元素的区别解析
- 命令行加载特效 【cli-spinner.js】 实用教程
- 行业 SaaS 微服务稳定性保障实战
- AUC的两种计算方式
猜你喜欢
随机推荐
文章列表的显示 以及创建文章 还有文章详情的基本
STP普通生成树安全特性— bpduguard特性 + bpdufilter特性 + guard root 特性 III loopguard技术( 详解+配置)
MySQL的主从复制
110道 MySQL面试题及答案 (持续更新)
Rabbit and Falcon are all covered, Go lang1.18 introductory and refined tutorial, from Bai Ding to Hongru, the whole platform (Sublime 4) Go lang development environment to build EP00
qt使用mysql数据库(自学笔记)
慢 SQL 分析与优化
手把手教你如何自制目标检测框架(从理论到实现)
【LeetCode】622. Design Circular Queue
QImage的指针问题
oracle ASM磁盘空间的查看
【LeetCode】101. Symmetric Binary Tree
关于Unity自定义Inspector面板的一些自定义编辑器扩展
window的供选数据流
MySQL——几种常见的嵌套查询
mysql 事务原理详解
The window of the chosen data flow
判断根节点是否等于子节点之和
cnpm安装步骤
Industry SaaS Microservice Stability Guarantee Actual Combat