本文整理匯總了Golang中github.com/fzzy/radix/redis.Client類的典型用法代碼示例。如果您正苦於以下問題:Golang Client類的具體用法?Golang Client怎麽用?Golang Client使用的例子?那麽, 這裏精選的類代碼示例或許可以為您提供幫助。
在下文中一共展示了Client類的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: authenticateByPassword
func authenticateByPassword(c *redis.Client, password string) error {
if r := c.Cmd("AUTH", password); r.Err != nil {
logger.Errorf("Faild to authenticate. %s", r.Err)
return r.Err
}
return nil
}
示例2: SpawnAsteroid
func (u *Universe) SpawnAsteroid(redis_client *redis.Client) {
if rand.Float32() < 0.1 {
live_asteroids := redis_client.Cmd("KEYS", "asteroid-*")
num_asteroids := 1000
if len(live_asteroids.Elems) < num_asteroids {
temp_asteroid := &asteroid.Asteroid{gameobject.GameObject{
Id: rand.Intn(500000),
X: rand.Float64(),
Y: rand.Float64(),
Velx: rand.Float64() * 100,
Vely: rand.Float64() * 100},
100}
u.Asteroids = append(u.Asteroids, temp_asteroid)
asteroid_json, _ := json.Marshal(temp_asteroid)
redis_client.Cmd("SET", fmt.Sprintf("asteroid-%v", temp_asteroid.Id), asteroid_json)
}
// temp_bullet := &bullet.Bullet{gameobject.GameObject{
// Id: rand.Intn(500000),
// X: rand.Float64(),
// Y: rand.Float64(),
// Velx: rand.Float64() * 100,
// Vely: rand.Float64() * 100},
// 100}
// u.Bullets = append(u.Bullets,temp_bullet)
// redis_client.Cmd("SET", fmt.Sprintf("bullet-%v", temp_bullet.Id), temp_bullet)
}
}
示例3: fetchPercentageOfMemory
func fetchPercentageOfMemory(c *redis.Client, stat map[string]float64) error {
r := c.Cmd("CONFIG", "GET", "maxmemory")
if r.Err != nil {
logger.Errorf("Failed to run `CONFIG GET maxmemory` command. %s", r.Err)
return r.Err
}
res, err := r.Hash()
if err != nil {
logger.Errorf("Failed to fetch maxmemory. %s", err)
return err
}
maxsize, err := strconv.ParseFloat(res["maxmemory"], 64)
if err != nil {
logger.Errorf("Failed to parse maxmemory. %s", err)
return err
}
if maxsize == 0.0 {
stat["percentage_of_memory"] = 0.0
} else {
stat["percentage_of_memory"] = 100.0 * stat["used_memory"] / maxsize
}
return nil
}
示例4: getBackend
func getBackend(hostname string, defaultBackendType string, redisClient *redis.Client) (string, error) {
fmt.Println("Looking up", hostname)
backends, error := redisClient.Cmd("smembers", "hostnames:"+hostname+":backends").List()
if error != nil {
fmt.Println("Error in redis lookup for hostname backend", error)
return "", error
}
if len(backends) == 0 {
backends, error = redisClient.Cmd("smembers", "hostnames:"+defaultBackendType+":backends").List()
if error != nil {
fmt.Println("Error in redis lookup for default backend", error)
return "", error
}
if len(backends) == 0 {
fmt.Println("No default backend of type", defaultBackendType)
return "", errors.New("Could not find default backend of type " + defaultBackendType)
}
}
fmt.Println("Found backends:", backends)
backend := backends[int(rand.Float32()*float32(len(backends)))]
return backend, nil
}
示例5: getRedisInfo
func getRedisInfo(c *redis.Client) (*map[string]string, error) {
info := make(map[string]string)
r := c.Cmd("info")
if r.Err != nil {
return nil, errors.New("couldn't execute query")
}
str, err := r.Str()
if err != nil {
return nil, errors.New("couldn't execute query")
}
for _, line := range strings.Split(str, "\r\n") {
if line == "" {
continue
}
if re, _ := regexp.MatchString("^#", line); re {
continue
}
record := strings.SplitN(line, ":", 2)
if len(record) < 2 {
continue
}
key, value := record[0], record[1]
info[key] = value
}
return &info, nil
}
示例6: SetRedisValue
func SetRedisValue(redisClient *redis.Client, key string, value string) {
var reply *redis.Reply = redisClient.Cmd("SET", key, value)
if reply.Err != nil {
panic(reply.Err)
}
}
示例7: list
func list(connection *redis.Client) map[string][]string {
var blacklisted []string
var whitelisted []string
var marked []string
repsheet := connection.Cmd("KEYS", "*:repsheet:*:*")
for i := 0; i < len(repsheet.Elems); i++ {
value, _ := repsheet.Elems[i].Str()
parts := strings.Split(value, ":")
repsheetType := parts[len(parts)-1]
switch repsheetType {
case "blacklisted":
blacklisted = append(blacklisted, parts[0])
case "whitelisted":
whitelisted = append(whitelisted, parts[0])
case "marked":
marked = append(marked, parts[0])
}
}
var list = make(map[string][]string)
list["blacklisted"] = blacklisted
list["whitelisted"] = whitelisted
list["marked"] = marked
return list
}
示例8: Put
// Returns a client back to the pool. If the pool is full the client is closed
// instead. If the client is already closed (due to connection failure or
// what-have-you) it should not be put back in the pool. The pool will create
// more connections as needed.
func (p *Pool) Put(conn *redis.Client) {
select {
case p.pool <- conn:
default:
conn.Close()
}
}
示例9: storeCacheValues
func storeCacheValues(rascalData []byte, cdnName string, sampleTime int64, cacheGroupMap map[string]string, redisClient *redis.Client) error {
/* note about the redis data:
keys are cdnName:deliveryService:cacheGroup:cacheName:statName
*/
type CacheStatsJson struct {
Pp string `json:"pp"`
Date string `json:"date"`
Caches map[string]map[string][]struct {
Index uint64 `json:"index"`
Time uint64 `json:"time"`
Value string `json:"value"`
Span uint64 `json:"span"`
} `json:"caches"`
}
var jData CacheStatsJson
err := json.Unmarshal(rascalData, &jData)
errHndlr(err, ERROR)
statCount := 0
statTotals := make(map[string]float64)
for cacheName, cacheData := range jData.Caches {
for statName, statData := range cacheData {
redisKey := cdnName + ":all:" + cacheGroupMap[cacheName] + ":" + cacheName + ":" + statName
redisKey = strings.Replace(redisKey, ":bandwidth", ":kbps", 1)
statValue := statData[0].Value
//fmt.Printf("%s ->%s\n", redisKey, statValue)
statCount++
statFloatValue, err := strconv.ParseFloat(statValue, 64)
if err != nil {
statFloatValue = 0.0
}
statTotals[cdnName+":all:"+cacheGroupMap[cacheName]+":all:"+statName] += statFloatValue
statTotals[cdnName+":all:all:all:"+statName] += statFloatValue
if statName == "maxKbps" {
r := redisClient.Cmd("zadd", redisKey, sampleTime, statValue) // only care for the last val here.
errHndlr(r.Err, ERROR)
} else {
r := redisClient.Cmd("rpush", redisKey, statValue)
errHndlr(r.Err, ERROR)
}
}
}
for totalKey, totalVal := range statTotals {
totalKey = strings.Replace(totalKey, ":bandwidth", ":kbps", 1)
if strings.Contains(totalKey, "maxKbps") {
r := redisClient.Cmd("zadd", totalKey, sampleTime, strconv.FormatFloat(totalVal, 'f', 2, 64))
errHndlr(r.Err, ERROR)
} else {
r := redisClient.Cmd("rpush", totalKey, strconv.FormatFloat(totalVal, 'f', 2, 64))
errHndlr(r.Err, ERROR)
}
statCount++
}
r := redisClient.Cmd("rpush", cdnName+":tstamp", sampleTime)
errHndlr(r.Err, ERROR)
log.Info("Saved ", statCount, " values for ", cdnName, " @ ", sampleTime)
return nil
}
示例10: someFunc
func someFunc(c *redis.Client) (err error) {
reply := c.Cmd("set", "mykey", "myvalue")
// what is the recommended error
if reply.Err != nil {
return reply.Err
}
// some code here
return
}
示例11: FreeClient
func (rp *redisPool) FreeClient(c *redis.Client) {
select {
case rp.client_chan <- c:
// redisClient on free list; nothing more to do.
default:
// Free list full, close connection and let it get GC'd
log.Info("Free list is full - closing redis connection")
go c.Close()
}
}
示例12: search
func search(connection *redis.Client, actor string) bool {
searchString := fmt.Sprintf("%s:*", actor)
results := connection.Cmd("KEYS", searchString)
if len(results.Elems) == 1 {
return true
} else {
return false
}
}
示例13: Empty
// Removes and calls Close() on all the connections currently in the pool.
// Assuming there are no other connections waiting to be Put back this method
// effectively closes and cleans up the pool.
func (p *Pool) Empty() {
var conn *redis.Client
for {
select {
case conn = <-p.pool:
conn.Close()
default:
return
}
}
}
示例14: putConn
// Puts the connection back in the pool for the given address. Takes in a
// pointer to an error which can be used to decide whether or not to put the
// connection back. It's a pointer because this method is deferable (like
// CarefullyPut)
func (c *Cluster) putConn(addr string, conn *redis.Client, maybeErr *error) {
c.callCh <- func(c *Cluster) {
pool := c.pools[addr]
if pool == nil {
conn.Close()
return
}
pool.CarefullyPut(conn, maybeErr)
}
}
示例15: CarefullyPut
// A useful helper method which acts as a wrapper around Put. It will only
// actually Put the conn back if potentialErr is not an error or is a
// redis.CmdError. It would be used like the following:
//
// func doSomeThings(p *Pool) error {
// conn, redisErr := p.Get()
// if redisErr != nil {
// return redisErr
// }
// defer p.CarefullyPut(conn, &redisErr)
//
// var i int
// i, redisErr = conn.Cmd("GET", "foo").Int()
// if redisErr != nil {
// return redisErr
// }
//
// redisErr = conn.Cmd("SET", "foo", i * 3).Err
// return redisErr
// }
//
// If we were just using the normal Put we wouldn't be able to defer it because
// we don't want to Put back a connection which is broken. This method takes
// care of doing that check so we can still use the convenient defer
func (p *Pool) CarefullyPut(conn *redis.Client, potentialErr *error) {
if potentialErr != nil && *potentialErr != nil {
// We don't care about command errors, they don't indicate anything
// about the connection integrity
if _, ok := (*potentialErr).(*redis.CmdError); !ok {
conn.Close()
return
}
}
p.Put(conn)
}