From b66c7fdff3486a331b52363b986f2182a54d9280 Mon Sep 17 00:00:00 2001 From: "Sascha L. Teichmann" Date: Sun, 28 Jun 2015 14:41:07 +0200 Subject: [PATCH] Redis client: Pulled micro optimisation over from server when constructing bulk strings. --- common/redisclient.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/common/redisclient.go b/common/redisclient.go index b51152f..ec528e6 100644 --- a/common/redisclient.go +++ b/common/redisclient.go @@ -8,6 +8,7 @@ import ( "bufio" "fmt" "net" + "strconv" ) type RedisClient struct { @@ -34,8 +35,13 @@ func (client *RedisClient) writeArray(size int) (err error) { return } +func redisLength(prefix byte, s int) []byte { + buf := append(make([]byte, 0, 16), prefix) + return append(strconv.AppendInt(buf, int64(s), 10), '\r', '\n') +} + func (client *RedisClient) writeBulkString(data []byte) (err error) { - if _, err = client.conn.Write([]byte(fmt.Sprintf("$%d\r\n", len(data)))); err != nil { + if _, err = client.conn.Write(redisLength('$', len(data))); err != nil { return } if _, err = client.conn.Write(data); err != nil {