当前位置:网站首页>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开发全套学习资料》送给大家,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担。添加下方名片,即可获取全套学习资料哦
边栏推荐
- milvus
- Redis cluster concept and construction
- STP普通生成树安全特性— bpduguard特性 + bpdufilter特性 + guard root 特性 III loopguard技术( 详解+配置)
- 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
- 索引(三)
- The window of the chosen data flow
- MySQL——几种常见的嵌套查询
- milvus
- gpnmb+ gpnmb-AT2 cell idling mapping Epithelial cell idling mapping
- SQL每日一练(牛客新题库)——第5天:高级查询
猜你喜欢
随机推荐
PostgreSQL的架构
CSP-S2019 Day2
mysql 事务原理详解
Machine learning (formula derivation and code implementation)--sklearn machine learning library
ClickHouse 数据插入、更新与删除操作 SQL
基于二次型性能指标的燃料电池过氧比RBF-PID控制
Scala parallel collections, parallel concurrency, thread safety issues, ThreadLocal
Automated test browser driver download version
【LeetCode】622. Design Circular Queue
多媒体数据处理实验4:LSH索引
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
基于百度AI和QT的景物识别系统
Redis实现分布式锁
redis实现分布式锁的原理
自动化测试浏览器驱动下载版本对应关系
深度学习之 10 卷积神经网络1
dflow入门5——Big step & Big parameter
10 minutes to get you started chrome (Google) browser plug-in development
批量将PNG格式转化为JPG格式
长短期记忆网络 LSTM