Go语言:go-redis客户端遍历扫描scan所有键值key的用法示例

Scan的第三个参数count是每次返回多少个key,服务端的返回数会尽量接近这个值,但不是100%保证,后面的输出也能看得出虽然设的是20条/次,但有一轮返回了21条,官网有详细说明。

package main

import (
        "fmt"
        "github.com/go-redis/redis"
        "strconv"
)

func main() {
        client := redis.NewClient(&redis.Options{
                Addr:     "127.0.0.1:6380",
                Password: "", // no password set
                DB:       0,  // use default DB
        })

        for i := 0; i < 106; i++ {
                client.Set("key"+strconv.Itoa(i), "value"+strconv.Itoa(i), 0)
        }

        var cursor uint64
        var n int
        for {
                var keys []string
                var err error
                //*扫描所有key,每次20条
                keys, cursor, err = client.Scan(cursor, "*", 20).Result()
                if err != nil {
                        panic(err)
                }
                n += len(keys)

                fmt.Printf("\nfound %d keys\n", n)
                var value string
                for _, key := range keys {
                        value, err = client.Get(key).Result()
                        fmt.Printf("%v %v\n", key, value)
                }
                if cursor == 0 {
                        break
                }
        }
}

输出:


found 20 keys
key78 value78
key72 value72
key63 value63
key42 value42
key16 value16
key21 value21
key94 value94
key56 value56
key61 value61
key48 value48
key60 value60
key75 value75
key11 value11
key103 value103
key83 value83
key82 value82
key23 value23
key17 value17
key8 value8
key39 value39

found 40 keys
key28 value28
key45 value45
key37 value37
key4 value4
key31 value31
key52 value52
key95 value95
key18 value18
key44 value44
key84 value84
key14 value14
key43 value43
key49 value49
key105 value105
key92 value92
key36 value36
key98 value98
key24 value24
key3 value3
key97 value97

found 61 keys
key54 value54
key79 value79
key81 value81
key53 value53
key57 value57
key30 value30
key26 value26
key74 value74
key73 value73
key66 value66
key29 value29
key13 value13
key102 value102
key15 value15
key91 value91
key2 value2
key87 value87
key9 value9
key85 value85
key34 value34
key7 value7

found 81 keys
key70 value70
key77 value77
key27 value27
key104 value104
key55 value55
key5 value5
key0 value0
key35 value35
key41 value41
key64 value64
key51 value51
key76 value76
key10 value10
key62 value62
key68 value68
key65 value65
key88 value88
key38 value38
key46 value46
key93 value93

found 101 keys
key100 value100
key58 value58
key59 value59
key67 value67
key50 value50
key80 value80
key20 value20
key1 value1
key12 value12
key89 value89
key19 value19
key99 value99
key96 value96
key32 value32
key47 value47
key22 value22
key25 value25
key101 value101
key6 value6
key69 value69

found 106 keys
key40 value40
key90 value90
key86 value86
key33 value33
key71 value71

猜你喜欢

转载自blog.csdn.net/pengpengzhou/article/details/108364302