golang 根据keys获取的key列表批量删除
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了golang 根据keys获取的key列表批量删除相关的知识,希望对你有一定的参考价值。
golang新手求教,golang中利用redigo 模糊查询key 获取key列表,然后删除这些key怎么写
keys获取返回是[]interface 结构怎么能转换成DEL想要的输入参数
import (
"fmt"
"github.com/garyburd/redigo/redis"
)
func main()
conn, err := redis.Dial("tcp", "<a href="EUBtznjR1PHndnWnzrj03PW01P1fL" target="_blank" class="baidu-highlight">127.0.0.1</a>:6379")
if err != nil
panic(err)
defer conn.Close()
conn.Do("SET", "app1", "test1")
conn.Do("SET", "app2", "test2")
val, err := redis.Strings(conn.Do("KEYS", "app*"))
fmt.Println(val, err)
conn.Send("MULTI")
for i, _ := range val
conn.Send("DEL", val[i])
fmt.Println(conn.Do("EXEC"))
Go是Google开发的一种编译型,可平行化,并具有垃圾回收功能的编程语言。
罗布·派克(Rob Pike),罗伯特·格瑞史莫(Robert Griesemer),及肯·汤普逊于2007年9月开始设计Go语言,稍后Ian Lance Taylor, Russ Cox加入项目中。
Go语言是基于Inferno操作系统所开发的。[4]Go语言于2009年11月正式宣布推出,成为开放源代码项目,并在Linux及Mac OS X平台上进行了实现,后追加Windows系统下的实现。 参考技术A package main
import (
"fmt"
"github.com/garyburd/redigo/redis"
)
func main()
conn, err := redis.Dial("tcp", "127.0.0.1:6379")
if err != nil
panic(err)
defer conn.Close()
conn.Do("SET", "app1", "test1")
conn.Do("SET", "app2", "test2")
val, err := redis.Strings(conn.Do("KEYS", "app*"))
fmt.Println(val, err)
conn.Send("MULTI")
for i, _ := range val
conn.Send("DEL", val[i])
fmt.Println(conn.Do("EXEC"))
追问
这样子是循环来删除了,我开始也是这么做的,但是要是keys获取的到list很大,循环删除就有点费劲,能不能有啥方法直接把keys获取的返回值,转换成del的输入参数,一次性删除.
参考技术B 具体如下:package main
import (
"fmt"
"github.com/garyburd/redigo/redis"
)
func main()
conn, err := redis.Dial("tcp", "127.0.0.1:6379")
if err != nil
panic(err)
defer conn.Close()
conn.Do("SET", "app1", "test1")
conn.Do("SET", "app2", "test2")
val, err := redis.Strings(conn.Do("KEYS", "app*"))
fmt.Println(val, err)
conn.Send("MULTI")
for i, _ := range val
conn.Send("DEL", val[i])
fmt.Println(conn.Do("EXEC"))
redis 删除指定前缀的key
参考技术A 获取Redis所有Key的方法:1. 终端
获取所有Key命令:redis-cli keys ‘*’ ;
获取指定前缀的key:redis-cli KEYS “edu:*”
如果需要导出,可以redis-cli keys ‘*’ > /data/redis_key.txt
删除指定前缀的Key redis-cli KEYS “edu:*” | xargs redis-cli DEL
2. PHP获取Redis所有Key
获取Redis所有Key:$keys = $redis->keys(‘*’);
获取指定前缀的Key:$keys = $redis->keys(‘edu*’);
删除指定前缀的Key :$redis->delete($redis->keys(‘image*’));
相关命令参考
Redis KEYS http://doc.redisfans.com/key/keys.html
以上是关于golang 根据keys获取的key列表批量删除的主要内容,如果未能解决你的问题,请参考以下文章