Skip to content

Commit 9f63caf

Browse files
committed
Add Support for TOPK.INCRBY
1 parent c01a718 commit 9f63caf

File tree

3 files changed

+30
-1
lines changed

3 files changed

+30
-1
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ func main() {
102102
| :--- | ----: |
103103
| [TOPK.RESERVE](https://oss.redislabs.com/redisbloom/TopK_Commands/#topkreserve) | [TopkReserve](https://godoc.org/github.com/RedisBloom/redisbloom-go#Client.TopkReserve) |
104104
| [TOPK.ADD](https://oss.redislabs.com/redisbloom/TopK_Commands/#topkadd) | [TopkAdd](https://godoc.org/github.com/RedisBloom/redisbloom-go#Client.TopkAdd) |
105-
| [TOPK.INCRBY](https://oss.redislabs.com/redisbloom/TopK_Commands/#topkincrby) | N/A |
105+
| [TOPK.INCRBY](https://oss.redislabs.com/redisbloom/TopK_Commands/#topkincrby) | [TopkIncrby](https://godoc.org/github.com/RedisBloom/redisbloom-go#Client.TopkIncrby) |
106106
| [TOPK.QUERY](https://oss.redislabs.com/redisbloom/TopK_Commands/#topkquery) | [TopkQuery](https://godoc.org/github.com/RedisBloom/redisbloom-go#Client.TopkQuery) |
107107
| [TOPK.COUNT](https://oss.redislabs.com/redisbloom/TopK_Commands/#topkcount) | [TopkCount](https://godoc.org/github.com/RedisBloom/redisbloom-go#Client.TopkCount) |
108108
| [TOPK.LIST](https://oss.redislabs.com/redisbloom/TopK_Commands/#topklist) | [TopkList](https://godoc.org/github.com/RedisBloom/redisbloom-go#Client.TopkList) |

client.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -204,3 +204,15 @@ func (client *Client) TopkInfo(key string) (map[string]string, error) {
204204
}
205205
return m, err
206206
}
207+
208+
// Increase the score of an item in the data structure by increment.
209+
func (client *Client) TopkIncrby(key string, itemIncrements map[string]int64) ([]string, error) {
210+
conn := client.Pool.Get()
211+
defer conn.Close()
212+
args := redis.Args{key}
213+
for k, v := range itemIncrements {
214+
args = args.Add(k, v)
215+
}
216+
reply, err := conn.Do("TOPK.INCRBY", args...)
217+
return redis.Strings(reply, err)
218+
}

client_test.go

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -190,3 +190,20 @@ func TestClient_TopkInfo(t *testing.T) {
190190
info, err = client.TopkInfo("notexists")
191191
assert.NotNil(t, err)
192192
}
193+
194+
func TestClient_TopkIncrby(t *testing.T) {
195+
client.FlushAll()
196+
key := "test_topk_incrby"
197+
ret, err := client.TopkReserve(key, 50, 2000, 7, 0.925)
198+
assert.Nil(t, err)
199+
assert.Equal(t, "OK", ret)
200+
201+
rets, err := client.TopkAdd(key, []string{"foo", "bar", "42"})
202+
assert.Nil(t, err)
203+
assert.NotNil(t, rets)
204+
205+
rets, err = client.TopkIncrby(key, map[string]int64{"foo": 3, "bar": 2, "42": 30})
206+
assert.Nil(t, err)
207+
assert.Equal(t, 3, len(rets))
208+
assert.Equal(t, "", rets[2])
209+
}

0 commit comments

Comments
 (0)