主頁 > 知識庫 > 使用go操作redis的有序集合(zset)

使用go操作redis的有序集合(zset)

熱門標(biāo)簽:宿遷便宜外呼系統(tǒng)代理商 地圖標(biāo)注免費定制店 重慶慶云企業(yè)400電話到哪申請 鄭州智能語音電銷機器人價格 寧波語音外呼系統(tǒng)公司 仙桃400電話辦理 不封卡外呼系統(tǒng) 上海極信防封電銷卡價格 湛江crm外呼系統(tǒng)排名

我就廢話不多說了,大家還是直接看代碼吧~

package main
import (
 "fmt"
 "github.com/garyburd/redigo/redis"
)
func main() {
 // 連接redis數(shù)據(jù)庫,指定數(shù)據(jù)庫的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.")
 }
 // 函數(shù)退出時關(guān)閉連接
 defer conn.Close()
 // 執(zhí)行一個有序zset插入
 _, err = conn.Do("ZADD", "mykey", "INCR", 1, "robot1")
 if err != nil {
 fmt.Println("redis set failed:", err)
 }
 // 再執(zhí)行一個有序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實現(xiàn)

zset

初衷是在不用Redis的前提下實現(xiàn)排行榜

項目地址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

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。

您可能感興趣的文章:
  • SpringBoot集成Redisson實現(xiàn)延遲隊列的場景分析
  • springboot+websocket+redis搭建的實現(xiàn)
  • java、spring、springboot中整合Redis的詳細(xì)講解
  • 關(guān)于Springboot2.x集成lettuce連接redis集群報超時異常Command timed out after 6 second(s)
  • 如何自定義redis工具jar包供其他SpringBoot項目直接使用
  • 使用SpringBoot集成redis的方法
  • springboot連接Redis的教程詳解
  • SpringBoot和Redis實現(xiàn)Token權(quán)限認(rèn)證的實例講解
  • SpringBoot集成Redis實現(xiàn)消息隊列的方法
  • springboot基于Redis發(fā)布訂閱集群下WebSocket的解決方案
  • springboot2整合redis使用lettuce連接池的方法(解決lettuce連接池?zé)o效問題)
  • php使用redis的有序集合zset實現(xiàn)延遲隊列應(yīng)用示例
  • SpringBoot使用Redis的zset統(tǒng)計在線用戶信息

標(biāo)簽:電子產(chǎn)品 遼寧 西雙版納 安康 儋州 海南 青海 物業(yè)服務(wù)

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《使用go操作redis的有序集合(zset)》,本文關(guān)鍵詞  使用,操作,redis,的,有序,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《使用go操作redis的有序集合(zset)》相關(guān)的同類信息!
  • 本頁收集關(guān)于使用go操作redis的有序集合(zset)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章