当前位置:网站首页>golang入门笔记—redis
golang入门笔记—redis
2022-04-22 14:44:00 【游戏编程】
golang连接和初始化redis
package mainimport ( "context" "fmt" "time" "github.com/go-redis/redis/v8")var redisdb *redis.Clientfunc initRedis() (err error) { redisdb = redis.NewClient(&redis.Options{ Addr: "127.0.0.1:6379", Password: "", DB: 0, }) ctx, calfunc := context.WithTimeout(context.Background(), 10*time.Second) _, err = redisdb.Ping(ctx).Result() calfunc() return}func main() { err := initRedis() if err != nil { fmt.Println("connect redis failed,err:", err) }}
执行redis 的set和get
func main() { err := initRedis() if err != nil { fmt.Println("connect redis failed,err:", err) } ctx, canl := context.WithTimeout(context.Background(), 10*time.Second) err = redisdb.Set(ctx, "score", 100, 10*time.Second).Err() //将score设置为100,超时时间为10秒 defer canl() cmder := redisdb.Get(ctx, "score") //得到score的值 fmt.Println(cmder.Val()) //获取值 fmt.Println(cmder.Err()) //获取错误 cmder2, err := redisdb.Get(ctx, "score").Result()//获取值 if err != nil { // 如果返回的错误是key不存在 if errors.Is(err, redis.Nil) {//redis自带nil来表示key不存在的错误 return defaultValue, nil } // 出其他错了 return "", err } fmt.Println(cmder2)}
redis的Do方法
// doDemo rdb.Do 方法使用示例func doDemo() { ctx, cancel := context.WithTimeout(context.Background(), 500*time.Millisecond) defer cancel() // 直接执行命令获取错误 err := rdb.Do(ctx, "set", "key", 10, "EX", 3600).Err() fmt.Println(err) // 执行命令获取结果 val, err := rdb.Do(ctx, "get", "key").Result() fmt.Println(val, err)}
//zest
func main() { err := initRedis() if err != nil { fmt.Println("connect redis failed,err:", err) } //zest key := "rank" items := []*redis.Z{ //redis.Z为众多redis数据结构中的一种 &redis.Z{Score: 99, Member: "PHP"}, &redis.Z{Score: 96, Member: "Golang"}, &redis.Z{Score: 97, Member: "Python"}, &redis.Z{Score: 99, Member: "Java"}, } ctx, canl := context.WithTimeout(context.Background(), 10*time.Hour) defer canl() //把这些元素都追加到key redisdb.ZAdd(ctx, key, items...) newScore, err := redisdb.ZIncrBy(ctx, key, 10, "Golang").Result() //给golang加10分 if err != nil { fmt.Println("zincrby failed,err:", err) return } fmt.Println("Golang's score is ", newScore) // 取分数最高的3个 ret := redisdb.ZRevRangeWithScores(ctx, key, 0, 2).Val() for _, z := range ret { fmt.Println(z.Member, z.Score) } // 取95~100分的 op := &redis.ZRangeBy{ Min: "95", Max: "100", } ret, err = redisdb.ZRangeByScoreWithScores(ctx, key, op).Result() if err != nil { fmt.Printf("zrangebyscore failed, err:%v\n", err) return } for _, z := range ret { fmt.Println(z.Member, z.Score) }}
zrange rank 0 4//score从小到大输出[0:4]zrange rank 0 4 withscore//连分数也输出zrevrange rank 0 4 //score从小到大输出[0:4]
游戏编程 ️,一个游戏开发收藏夹~
如果图片长时间未显示,请使用Chrome内核浏览器。
版权声明
本文为[游戏编程]所创,转载请带上原文链接,感谢
https://www.233tw.com/go/118676
边栏推荐
- Difference between NPM install -- save and NPM install -- save dev
- 企业选择私有化部署的IM即时通讯软件,全力保护信息安全!
- VDO virtual data optimization
- ArcGIS面缝隙检查
- ArcGIS face gap inspection
- Application of Beidou GPS satellite time synchronization device (satellite clock) in radio and television system
- 4/21 昆明赛补题+数学
- 【ELT.ZIP】OpenHarmony啃论文俱乐部——综述视角解读压缩编码
- datagrip连接Mysql报错[08001] Public Key Retrieval is not allowed.
- Crossplane - 比 Terraform 更先进的云基础架构管理平台?
猜你喜欢

asp.net framework配置swagger并支持上传文件

C#安装opencv

@Resource与构造函数踩坑
Android 9,2022-2022字节跳动Android面试真题解析
Android 92022-2022 byte beating Android interview real question analysis

dxg:TableView. The FormatConditions table is highlighted by criteria

Amazon Aurora 的读写能力扩展之 ShardingSphere-Proxy 篇

【ELT.ZIP】OpenHarmony啃论文俱乐部——细数生活中的压缩点滴

Sonar of code coverage

SQL Server 数据库之常量
随机推荐
企业选择私有化部署的IM即时通讯软件,全力保护信息安全!
Error unable to access jarfile solution
android 国际区号注册手机号编码 以及常用城市列表,安卓内存优化面试
[ELT. Zip] openharmony paper Club - you shouldn't miss these small landscapes
我为什么要反对DBA参与业务(出报表/改数据)
[ELT. Zip] openharmony paper club -- one article penetrates the forefront of Multimedia
How to configure slo
3. Fiddler certificate installation and fetching hettps settings
Wireguard series (1): what is v * *?
Arcengine 自定义工具鼠标样式设置
运行npm install命令的时候会发生什么?
RIP简介
GIS and Mathematics
快速整明白Redis中的字典到底是个啥
postMassage留个坑
在南京开股票账户安全吗?有危险吗?
Arcengine点,线,面,文本渲染
每周问答精选:PolarDB-X完全兼容MySQL吗?
性能飙升66%的秘密:AMD 2.5万元768MB 3D缓存霄龙首次开盖
自动化测试的生命周期是什么?