-
Notifications
You must be signed in to change notification settings - Fork 43
/
README
46 lines (34 loc) · 1.91 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
Fast client and server implementations for memcache protocol.
The package contains the following client implementations:
* Client - talks to a single memcache server.
* DistributedClient - routes requests to multiple servers using consistent
hashing. Supports addition/removal of servers on the fly.
* CachingClient - saves network bandwidth between the client and servers
by storing responses in local cache. Can talk only to servers supporting
'conditional get' (cget) memcache extension.
Server implementation has the following features:
* 'conditional get' (cget) memcache extension.
* 'dogpile effect-aware get' (getde) memcache extension.
================================================================================
How to build and use it?
$ go get -u github.com/valyala/ybc/libs/go/memcache
Then import it into your program:
import "github.com/valyala/ybc/libs/go/memcache"
Documentation can be generated by:
$ go doc github.com/valyala/ybc/libs/go/memcache
or read at http://go.pkgdoc.org/github.com/valyala/ybc/libs/go/memcache .
================================================================================
FAQ
Q: Why didn't you implement 'replace', 'append', 'prepend', 'incr', 'decr'
and 'touch' memcache commands?
A: Because I think they are useless for caching purposes.
Q: Your benchmarks show CachingClient is slower than simple Client. Then what's
the purpose of CachingClient?
A: CachingClient saves network bandwidth between memcache servers
and the client. It won't help much if memcache servers are located
on the same machine as the client itself. But it can save a lot of bandwidth
if you cache items with sizes exceeding ~100 bytes on memcache servers
accessed over the network.
CachingClient may also deliver much higher qps comparing to simple Client
if CachingClient.SetWithValidateTtl*() functions are used intelligently
with validateTtl values higher than 0.