温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

使用go怎么对redis的有序集合进行操作

发布时间:2020-12-23 14:58:06 来源:亿速云 阅读:223 作者:Leah 栏目:开发技术

使用go怎么对redis的有序集合进行操作?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

package main import (  "fmt"  "github.com/garyburd/redigo/redis" ) func main() {  // 连接redis数据库,指定数据库的IP和端口  conn, err := redis.Dial("tcp", "36.99.16.197:6379")  if err != nil {  fmt.Println("Connect to redis error", err)  return  } else {  fmt.Println("Connect to redis ok.")  }  // 函数退出时关闭连接  defer conn.Close()  // 执行一个有序zset插入  _, err = conn.Do("ZADD", "mykey", "INCR", 1, "robot1")  if err != nil {  fmt.Println("redis set failed:", err)  }  // 再执行一个有序zset插入  _, err = conn.Do("ZADD", "mykey", "INCR", 1, "robot2")  if err != nil {  fmt.Println("redis set failed:", err)  }  // 读取指定zset  user_map, err := redis.StringMap(conn.Do("ZRANGE", "mykey", 0, 10, "withscores"))  if err != nil {  fmt.Println("redis get failed:", err)  } else {  fmt.Printf("Get mykey: %v \n", user_map)  }  for user := range user_map {  fmt.Printf("user name: %v %v\n", user, user_map[user])  } }

输出:

Connect to redis ok. Get mykey: map[robot1:1 robot2:1] user name: robot1 1 user name: robot2 1

补充:Redis中zset的golang实现

zset

初衷是在不用Redis的前提下实现排行榜

项目地址https://github.com/liyiheng/zset

Installation

go get -u github.com/liyiheng/zset

Usage

Removed RWLock in the SortedSet.

Just implement it yourself if you need.

s := zset.New() // add data s.Set(66, 1001, "test1") s.Set(77, 1002, "test2") s.Set(88, 1003, "test3") s.Set(100, 1004, "liyiheng") s.Set(99, 1005, "test4") s.Set(44, 1006, "test5") // update data s.Set(44, 1001, "test1") // get rank by id rank, score, extra := s.GetRank(1004, false) // get data by rank id, score, extra := s.GetDataByRank(0, true) // get data by id dat, ok := s.GetData(1001) // delete data by id s.Delete(1001)

Benchmark

go test -test.bench=".*" BenchmarkSortedSet_Add-4   1000000  4121 ns/op BenchmarkSortedSet_GetRank-4  500000  3592 ns/op BenchmarkSortedSet_GetDataByRank-4 2000000  667 ns/op PASS ok zset 11.365s

关于使用go怎么对redis的有序集合进行操作问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI