記一次golang讀取redis緩衝,統計日活的過程

來源:互聯網
上載者:User

21天精品區塊鏈課程免費學習,深入實戰行家帶路,助力開發人員輕鬆玩轉區塊鏈!>>>   

最近有一個需求是從redis緩衝中讀取日活,redis緩衝中儲存著每天每個遊戲的日活與局數,類型是hashset,key是$game_id:$log_date,value是玩家ID以及對應的局數,結構如下:

表示在2018-07-18日,game_id=1的遊戲的日活與對應局數如下:

user_id 局數
1 2
2 3
3 4
4 5

雖然能夠知道所有的game_id,但是有些遊戲可能沒有日活,,一個一個game_id去取日活效率不是很高,所以可以執行redis的keys命令來擷取有日活的所有key:

然後遍曆每個key,調用hgetall命令來擷取每個key對應的日活與局數資訊,就可以得出每個遊戲的日活與局數,對應到golang的代碼如下:

import ("testing""github.com/garyburd/redigo/redis")func TestRedis(t *testing.T){// 串連rediscon,err := redis.Dial("tcp", "127.0.0.1:6379")if err != nil {t.Errorf("串連redis出錯:err:%v\n", err)}defer con.Close()// 查詢所有的keyscacheName := "*:20180718"keys,err := redis.Strings(con.Do("keys", cacheName))for _,key := range keys {activeInfo,err := redis.IntMap(con.Do("hgetall", key))if err != nil {t.Errorf("查詢單個key的日活資訊出錯:err:%v\n", err)}t.Logf("key-%v, activeInfo-%+v\n", key, activeInfo)}}

對應的輸出如下:

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.