/
command_hyperloglog.go
42 lines (38 loc) · 1.09 KB
/
command_hyperloglog.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
package redis
import "context"
// PFAdd 将指定元素添加到HyperLogLog
func (r *Client) PFAdd(ctx context.Context, key any, els ...any) (val int64, err error) {
err = r.brk.DoWithAcceptable(func() error {
conn, err := getRedis(r)
if err != nil {
return err
}
val, err = conn.PFAdd(getCtx(ctx), r.k(key), els...).Result()
return err
}, acceptable)
return
}
// PFCount 返回HyperlogLog观察到的集合的近似基数。
func (r *Client) PFCount(ctx context.Context, keys ...any) (val int64, err error) {
err = r.brk.DoWithAcceptable(func() error {
conn, err := getRedis(r)
if err != nil {
return err
}
val, err = conn.PFCount(getCtx(ctx), r.ks(keys...)...).Result()
return err
}, acceptable)
return
}
// PFMerge N个不同的HyperLogLog合并为一个。
func (r *Client) PFMerge(ctx context.Context, dest any, keys ...any) (val string, err error) {
err = r.brk.DoWithAcceptable(func() error {
conn, err := getRedis(r)
if err != nil {
return err
}
val, err = conn.PFMerge(getCtx(ctx), r.k(dest), r.ks(keys...)...).Result()
return err
}, acceptable)
return
}