mirror of
https://bitbucket.org/s_l_teichmann/mtsatellite
synced 2024-12-23 16:50:18 +01:00
Replaced one sync.Pool with a scratch byte arrary in redis client.
This commit is contained in:
parent
956f7b5e8b
commit
41187af7db
@ -18,6 +18,7 @@ import (
|
|||||||
type RedisClient struct {
|
type RedisClient struct {
|
||||||
conn net.Conn
|
conn net.Conn
|
||||||
reader *bufio.Reader
|
reader *bufio.Reader
|
||||||
|
scratch [80]byte
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewRedisClient(network, address string) (client *RedisClient, err error) {
|
func NewRedisClient(network, address string) (client *RedisClient, err error) {
|
||||||
@ -41,14 +42,6 @@ var (
|
|||||||
ignore = []byte("IGNORE")
|
ignore = []byte("IGNORE")
|
||||||
)
|
)
|
||||||
|
|
||||||
var bufPool = sync.Pool{
|
|
||||||
New: func() interface{} {
|
|
||||||
// Some fun with slices
|
|
||||||
buf := make([]byte, 40)
|
|
||||||
return [2][]byte{buf[:20:20][:0], buf[20:][:0]}
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
func (client *RedisClient) writeBulkString(buf []byte, data []byte) (err error) {
|
func (client *RedisClient) writeBulkString(buf []byte, data []byte) (err error) {
|
||||||
buf = append(buf, '$')
|
buf = append(buf, '$')
|
||||||
buf = strconv.AppendInt(buf, int64(len(data)), 10)
|
buf = strconv.AppendInt(buf, int64(len(data)), 10)
|
||||||
@ -63,20 +56,19 @@ func (client *RedisClient) writeHSpatial(p1, p2 int64) (err error) {
|
|||||||
if _, err = client.conn.Write(writeArray4); err != nil {
|
if _, err = client.conn.Write(writeArray4); err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
buf := bufPool.Get().([2][]byte)
|
b1 := client.scratch[:0:40]
|
||||||
// defer bufPool.Put(buf) // not used to avoid allocation.
|
b2 := client.scratch[40:40:80]
|
||||||
if err = client.writeBulkString(buf[0], hspatial); err != nil {
|
|
||||||
goto exit
|
if err = client.writeBulkString(b1, hspatial); err != nil {
|
||||||
|
return
|
||||||
}
|
}
|
||||||
if err = client.writeBulkString(buf[0], ignore); err != nil {
|
if err = client.writeBulkString(b1, ignore); err != nil {
|
||||||
goto exit
|
return
|
||||||
}
|
}
|
||||||
if err = client.writeBulkString(buf[0], keyToBytes(p1, buf[1])); err != nil {
|
if err = client.writeBulkString(b1, keyToBytes(p1, b2)); err != nil {
|
||||||
goto exit
|
return
|
||||||
}
|
}
|
||||||
err = client.writeBulkString(buf[0], keyToBytes(p2, buf[1]))
|
err = client.writeBulkString(b1, keyToBytes(p2, b2))
|
||||||
exit:
|
|
||||||
bufPool.Put(buf)
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user