本文整理汇总了Golang中github.com/garyburd/redigo/redis.MultiBulk函数的典型用法代码示例。如果您正苦于以下问题:Golang MultiBulk函数的具体用法?Golang MultiBulk怎么用?Golang MultiBulk使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了MultiBulk函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。
示例1: DeleteScanMatch
// DeleteKeys will remove a group of keys in bulk
func (r *RedisClusterStorageManager) DeleteScanMatch(pattern string) bool {
if GetRelevantClusterReference(r.IsCache) == nil {
log.Info("Connection dropped, connecting..")
r.Connect()
return r.DeleteScanMatch(pattern)
}
log.Debug("Deleting: ", pattern)
// here we'll store our iterator value
iter := "0"
// this will store the keys of each iteration
var keys []string
for {
// we scan with our iter offset, starting at 0
arr, err := redis.MultiBulk(GetRelevantClusterReference(r.IsCache).Do("SCAN", iter, "MATCH", pattern))
if err != nil {
log.Error("SCAN Token Get Failure: ", err)
return false
}
// now we get the iter and the keys from the multi-bulk reply
iter, _ = redis.String(arr[0], nil)
theseKeys, _ := redis.Strings(arr[1], nil)
keys = append(keys, theseKeys...)
// check if we need to stop...
if iter == "0" {
break
}
}
if len(keys) > 0 {
for _, v := range keys {
name := "" + v
log.Info("Deleting: ", name)
_, err := GetRelevantClusterReference(r.IsCache).Do("DEL", name)
if err != nil {
log.Error("Error trying to delete key: ", v, " - ", err)
}
}
log.Info("Deleted: ", len(keys), " records")
} else {
log.Debug("RedisClusterStorageManager called DEL - Nothing to delete")
}
return true
}
开发者ID:TykTechnologies,项目名称:tyk,代码行数:51,代码来源:redis_cluster_handler.go
示例2: TestHashM
func TestHashM(t *testing.T) {
startTestApp()
c := getTestConn()
defer c.Close()
key := []byte("b")
if ok, err := redis.String(c.Do("hmset", key, 1, 1, 2, 2, 3, 3)); err != nil {
t.Fatal(err)
} else if ok != OK {
t.Fatal(ok)
}
if n, err := redis.Int(c.Do("hlen", key)); err != nil {
t.Fatal(err)
} else if n != 3 {
t.Fatal(n)
}
if v, err := redis.MultiBulk(c.Do("hmget", key, 1, 2, 3, 4)); err != nil {
t.Fatal(err)
} else {
if err := testHashArray(v, 1, 2, 3, 0); err != nil {
t.Fatal(err)
}
}
if n, err := redis.Int(c.Do("hdel", key, 1, 2, 3, 4)); err != nil {
t.Fatal(err)
} else if n != 3 {
t.Fatal(n)
}
if n, err := redis.Int(c.Do("hlen", key)); err != nil {
t.Fatal(err)
} else if n != 0 {
t.Fatal(n)
}
if v, err := redis.MultiBulk(c.Do("hmget", key, 1, 2, 3, 4)); err != nil {
t.Fatal(err)
} else {
if err := testHashArray(v, 0, 0, 0, 0); err != nil {
t.Fatal(err)
}
}
if n, err := redis.Int(c.Do("hlen", key)); err != nil {
t.Fatal(err)
} else if n != 0 {
t.Fatal(n)
}
}
开发者ID:nodephp,项目名称:ledisdb,代码行数:53,代码来源:cmd_hash_test.go
示例3: TestHashGetAll
func TestHashGetAll(t *testing.T) {
startTestApp()
c := getTestConn()
defer c.Close()
key := []byte("d")
if ok, err := redis.String(c.Do("hmset", key, 1, 1, 2, 2, 3, 3)); err != nil {
t.Fatal(err)
} else if ok != OK {
t.Fatal(ok)
}
if v, err := redis.MultiBulk(c.Do("hgetall", key)); err != nil {
t.Fatal(err)
} else {
if err := testHashArray(v, 1, 1, 2, 2, 3, 3); err != nil {
t.Fatal(err)
}
}
if v, err := redis.MultiBulk(c.Do("hkeys", key)); err != nil {
t.Fatal(err)
} else {
if err := testHashArray(v, 1, 2, 3); err != nil {
t.Fatal(err)
}
}
if v, err := redis.MultiBulk(c.Do("hvals", key)); err != nil {
t.Fatal(err)
} else {
if err := testHashArray(v, 1, 2, 3); err != nil {
t.Fatal(err)
}
}
if n, err := redis.Int(c.Do("hclear", key)); err != nil {
t.Fatal(err)
} else if n != 3 {
t.Fatal(n)
}
if n, err := redis.Int(c.Do("hlen", key)); err != nil {
t.Fatal(err)
} else if n != 0 {
t.Fatal(n)
}
}
开发者ID:nodephp,项目名称:ledisdb,代码行数:50,代码来源:cmd_hash_test.go
示例4: TestKVM
func TestKVM(t *testing.T) {
c := getTestConn()
defer c.Close()
if ok, err := redis.String(c.Do("mset", "a", "1", "b", "2")); err != nil {
t.Fatal(err)
} else if ok != OK {
t.Fatal(ok)
}
if v, err := redis.MultiBulk(c.Do("mget", "a", "b", "c")); err != nil {
t.Fatal(err)
} else if len(v) != 3 {
t.Fatal(len(v))
} else {
if vv, ok := v[0].([]byte); !ok || string(vv) != "1" {
t.Fatal("not 1")
}
if vv, ok := v[1].([]byte); !ok || string(vv) != "2" {
t.Fatal("not 2")
}
if v[2] != nil {
t.Fatal("must nil")
}
}
}
开发者ID:rchunping,项目名称:ledisdb,代码行数:28,代码来源:cmd_kv_test.go
示例5: testListRange
func testListRange(key []byte, start int64, stop int64, checkValues ...int) error {
c := getTestConn()
defer c.Close()
vs, err := redis.MultiBulk(c.Do("lrange", key, start, stop))
if err != nil {
return err
}
if len(vs) != len(checkValues) {
return fmt.Errorf("invalid return number %d != %d", len(vs), len(checkValues))
}
var n int
for i, v := range vs {
if d, ok := v.([]byte); ok {
n, err = strconv.Atoi(string(d))
if err != nil {
return err
} else if n != checkValues[i] {
return fmt.Errorf("invalid data %d: %d != %d", i, n, checkValues[i])
}
} else {
return fmt.Errorf("invalid data %v %T", v, v)
}
}
return nil
}
开发者ID:nodephp,项目名称:ledisdb,代码行数:29,代码来源:cmd_list_test.go
示例6: popMessage
func popMessage(conn redis.Conn, key string) (*Message, error) {
reply, err := redis.MultiBulk(conn.Do("BLPOP", key, DEFAULTTIMEOUT))
if err != nil {
return nil, err
}
return parseMessage(reply)
}
开发者ID:pombredanne,项目名称:beam,代码行数:7,代码来源:utils.go
示例7: GetFields
func (this *RedisClient) GetFields(PK interface{}, fields []string) (map[string]string, error) {
key := fmt.Sprintf("PK:%v", PK)
//var value string
var comm []interface{}
comm = append(comm, key)
for _, v := range fields {
comm = append(comm, v)
}
//fmt.Printf("Comm : %v \n",comm)
conn := this.pool.Get()
defer conn.Close()
reply, err := redis.MultiBulk(conn.Do("HMGET", comm...))
if err != nil {
return nil, err
}
//var list = make([]string, 0)
var res = make(map[string]string)
for index, v := range reply {
s, err := redis.String(v, nil)
if err != nil {
return nil, err
}
s = strings.Trim(s, "\"")
res[fields[index]] = s
// list = append(list, s)
}
//fmt.Printf("\n ALL REDIS RESULT :: %v\n", res)
return res, nil
}
开发者ID:adamzhz,项目名称:FalconEngine,代码行数:31,代码来源:RedisClient.go
示例8: sendRedisMigrateCmd
// return: success_count, remain_count, error
// slotsmgrt host port timeout slotnum count
func (m *migrater) sendRedisMigrateCmd(c redis.Conn, slotId int, toAddr string) (bool, error) {
addrParts := strings.Split(toAddr, ":")
if len(addrParts) != 2 {
return false, ErrInvalidAddr
}
//use scan and migrate
reply, err := redis.MultiBulk(c.Do("scan", 0))
if err != nil {
return false, err
}
var next string
var keys []interface{}
if _, err := redis.Scan(reply, &next, &keys); err != nil {
return false, err
}
for _, key := range keys {
if _, err := c.Do("migrate", addrParts[0], addrParts[1], key, slotId, MIGRATE_TIMEOUT); err != nil {
//todo, try del if key exists
return false, err
}
}
return next != "0", nil
}
开发者ID:jameswei,项目名称:xcodis,代码行数:30,代码来源:migrate_helper.go
示例9: Start
func (j *Job) Start() error {
Debugf("Starting job: %d", j.Id)
client := j.client
// Send job arguments
if len(j.Args) > 0 {
args := append([]interface{}{fmt.Sprintf("%s/args", j.key())}, asInterfaceSlice(j.Args)...)
if _, err := client.send("RPUSH", args...); err != nil {
return err
}
}
// Send environment vars
if len(j.Env) > 0 {
env := append([]interface{}{fmt.Sprintf("%s/env", j.key())}, asInterfaceSlice(splitEnv(j.Env))...)
if _, err := client.send("HMSET", env...); err != nil {
return err
}
}
j.exitFailure, j.exitSuccess = make(chan bool), make(chan bool)
// Start waiting for exit
go func() {
Debugf("Waiting for job: %d", j.Id)
reply, err := redis.MultiBulk(client.send("BLPOP", fmt.Sprintf("%s/wait", j.key()), DEFAULTTIMEOUT))
Debugf("Job complete: %d", j.Id)
if err != nil {
j.exitError = err
j.exitFailure <- true
return
}
status := reply[1].([]byte)
// Status will be empty for success
if len(status) == 0 {
j.exitSuccess <- true
return
}
buffer := bytes.NewBuffer(status)
code, err := strconv.Atoi(buffer.String())
if err != nil {
j.exitError = err
j.exitFailure <- true
return
}
j.ExitStatus = code
j.exitFailure <- true
}()
// Send start job
if _, err := client.send("RPUSH", fmt.Sprintf("/jobs/start"), j.Id); err != nil {
return err
}
return nil
}
开发者ID:philips,项目名称:beam,代码行数:58,代码来源:client.go
示例10: GetDistribution
func GetDistribution(distribution string) ([]interface{}, error) {
rdb := redisServer.GetConnection()
rdb.Send("MULTI")
rdb.Send("GET", fmt.Sprintf("%s.%s", distribution, "_T"))
rdb.Send("ZRANGE", distribution, 0, -1, "WITHSCORES")
data, err := redis.MultiBulk(rdb.Do("EXEC"))
return data, err
}
开发者ID:gitDiscovered,项目名称:forgettable,代码行数:9,代码来源:redis_utils.go
示例11: GetNMostProbable
func GetNMostProbable(distribution string, N int) ([]interface{}, error) {
rdb := redisServer.GetConnection()
rdb.Send("MULTI")
rdb.Send("ZREVRANGEBYSCORE", distribution, "+INF", "-INF", "WITHSCORES", "LIMIT", 0, N)
rdb.Send("GET", fmt.Sprintf("%s.%s", distribution, "_Z"))
rdb.Send("GET", fmt.Sprintf("%s.%s", distribution, "_T"))
data, err := redis.MultiBulk(rdb.Do("EXEC"))
return data, err
}
开发者ID:gitDiscovered,项目名称:forgettable,代码行数:10,代码来源:redis_utils.go
示例12: GetField
func GetField(distribution, field string) ([]interface{}, error) {
rdb := redisServer.GetConnection()
rdb.Send("MULTI")
rdb.Send("ZSCORE", distribution, field)
rdb.Send("GET", fmt.Sprintf("%s.%s", distribution, "_Z"))
rdb.Send("GET", fmt.Sprintf("%s.%s", distribution, "_T"))
data, err := redis.MultiBulk(rdb.Do("EXEC"))
return data, err
}
开发者ID:rmboyle,项目名称:forgettable,代码行数:10,代码来源:redis_utils.go
示例13: GetFields
func (this *RedisClient) GetFields(PK interface{}, fields []string) (map[string]string, error) {
key := fmt.Sprintf("PK:%v", PK)
//var value string
var comm []interface{}
comm = append(comm, key)
for _, v := range fields {
comm = append(comm, v)
}
//fmt.Printf("Comm : %v \n",comm)
conn := this.pool.Get()
defer conn.Close()
reply, err := redis.MultiBulk(conn.Do("HMGET", comm...))
if err != nil {
return nil, err
}
//var list = make([]string, 0)
var res = make(map[string]string)
for index, v := range reply {
s, err := redis.String(v, nil)
if err != nil {
return nil, err
}
s = strings.Trim(s, "\"")
res[fields[index]] = s
// list = append(list, s)
}
//fmt.Printf("\n ALL REDIS RESULT :: %v\n", res)
return res, nil
/*
res, err := redis.Values(conn.Do("HMGET", comm...))
if err != nil {
this.logger.Error("REDIS ERROR : %v ", err)
return nil,err
}
fmt.Printf("\n ALL REDIS RESULT :: %v\n", res)
values :=make([]string,len(fields))
if _, err := redis.Scan(res, values...); err != nil {
// handle error
return nil,err
}
fmt.Printf("REDISE STRING :: ")
for _,v:=range values{
fmt.Printf(" %v ",v)
}
fmt.Printf("\n")
*/
return nil, err
}
开发者ID:jimmy1911,项目名称:FalconEngine,代码行数:52,代码来源:RedisClient.go
示例14: Scan
func Scan(cursor int) (results ScanResults, err error) {
client := pool.Get()
data, err := redis.MultiBulk(client.Do("SCAN", cursor, "COUNT", "1000"))
if err != nil {
return results, err
}
results.Iterator, _ = redis.Int(data[0], nil)
results.Keys, _ = redis.Strings(data[1], nil)
return results, err
}
开发者ID:tjsage,项目名称:redisTools,代码行数:13,代码来源:redis.go
示例15: GetField
func GetField(distribution string, fields ...string) ([]interface{}, error) {
rdb := redisServer.GetConnection()
defer rdb.Close()
rdb.Send("MULTI")
for _, field := range fields {
rdb.Send("ZSCORE", distribution, field)
}
rdb.Send("ZCARD", distribution)
rdb.Send("GET", fmt.Sprintf("%s.%s", distribution, "_Z"))
rdb.Send("GET", fmt.Sprintf("%s.%s", distribution, "_T"))
data, err := redis.MultiBulk(rdb.Do("EXEC"))
return data, err
}
开发者ID:mynameisfiber,项目名称:forgettable,代码行数:14,代码来源:redis_utils.go
示例16: TestRedisCluster
func TestRedisCluster(t *testing.T) {
N := 500
group1 := NewRedisShardGroup(1, NewRedisShard(1, "127.0.0.1", 6379), NewRedisShard(2, "127.0.0.1", 6379))
group2 := NewRedisShardGroup(2, NewRedisShard(3, "127.0.0.1", 6379), NewRedisShard(4, "127.0.0.1", 6379))
group3 := NewRedisShardGroup(3, NewRedisShard(5, "127.0.0.1", 6379), NewRedisShard(6, "127.0.0.1", 6379))
group4 := NewRedisShardGroup(4, NewRedisShard(8, "127.0.0.1", 6379), NewRedisShard(7, "127.0.0.1", 6379))
rc := NewRedisCluster(group1, group2, group3, group4)
if rc == nil {
t.Fatalf("Could not create redis cluster")
}
if rc.Status != CLUSTER_READY {
t.Fatalf("Could not connect to servers")
}
for i := 0; i < N; i++ {
log.Printf("Setting element %d", i)
_, err := rc.Do(MessageFromString(fmt.Sprintf("SET TEST_%d %d", i, i)))
if err != nil {
t.Fatalf("Could not set value TEST_%d: %s", i, err)
}
}
pipeline := rc.Pipeline()
for i := 0; i < N; i++ {
_, err := pipeline.Send(MessageFromString(fmt.Sprintf("GET TEST_%d", i)))
if err != nil {
t.Fatalf("Could not send to pipeline: %s: %s", fmt.Sprintf("TEST_%d", i), err)
}
}
result, err := pipeline.Execute()
mb, err := redis.MultiBulk(result.Bytes(), nil)
for i, value := range mb {
if err != nil || value != i {
t.Fatalf("Did not get proper result back for TEST_%d: %d: %s", i, value, err)
}
}
for i := 0; i < N; i++ {
_, err := rc.Do(MessageFromString(fmt.Sprintf("DEL TEST_%d", i)))
if err != nil {
t.Fatalf("Could not delete key TEST_%d: %s", i, err)
}
}
}
开发者ID:mynameisfiber,项目名称:cider-go,代码行数:48,代码来源:rediscluster_test.go
示例17: addMultiBulkCounts
func (d *Distribution) addMultiBulkCounts(data interface{}) error {
distData, _ := redis.MultiBulk(data, nil)
for i := 0; i < len(distData); i += 2 {
k, err := redis.String(distData[i], nil)
if err != nil || k == "" {
log.Printf("Could not read %s from distribution %s: %s", distData[i], d.Name, err)
}
v, err := redis.Int(distData[i+1], nil)
if err != nil {
log.Printf("Could not read %s from distribution %s: %s", distData[i+1], d.Name, err)
}
d.Data[k] = &Value{Count: v}
}
return nil
}
开发者ID:rgv151,项目名称:forgettable,代码行数:16,代码来源:distribution.go
示例18: readLog
func readLog() {
c, err := redis.Dial("tcp", ":6379")
if err != nil {
log.Println("Redis Connect Error : ", err)
return
}
defer c.Close()
c.Do("SELECT", 10)
for {
result, _ := redis.MultiBulk(c.Do("BRPOP", "IRC_HISTORY", 0))
if result != nil {
msg <- string(result[1].([]byte))
}
}
}
开发者ID:quadr,项目名称:JubeatCrawler,代码行数:16,代码来源:irc_bot.go
示例19: Flush
// Flush deletes all cached data.
func (r *RedisCache) Flush() (err error) {
if r.occupyMode {
_, err = r.do("FLUSHDB")
return
}
keys, err := redigo.MultiBulk(r.do("HKEYS", r.key(GC_HASH_KEY)))
if err != nil {
return
}
fmt.Println(keys)
conn := r.pool.Get()
defer conn.Close()
_, err = conn.Do("DEL", keys...)
return
}
开发者ID:echo-contrib,项目名称:cache,代码行数:21,代码来源:redis.go
示例20: Next
func (c Client) Next() *Job {
log.Println("Fetching job from", c.spec.Queue)
multiBulk, _ := redis.MultiBulk((*c.conn).Do("BLPOP", c.spec.Queue, 0))
for len(multiBulk) > 0 {
var jobData []byte
multiBulk, _ = redis.Scan(multiBulk, &jobData)
// The first element returned is the queue name.
if string(jobData) == c.spec.Queue {
continue
}
job := new(Job)
log.Println("job", string(jobData))
json.Unmarshal(jobData, &job)
return job
}
return nil
}
开发者ID:perplexes,项目名称:resque-client.go,代码行数:20,代码来源:resque.go
注:本文中的github.com/garyburd/redigo/redis.MultiBulk函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论