Skip to content

Commit

Permalink
[memcached] support binary protocol (brianfrankcooper#965)
Browse files Browse the repository at this point in the history
Adding support for memcached binary protocol as described in
https://github.com/memcached/memcached/blob/master/doc/protocol.txt.

Protocol can be set via memcached.protocol property of YCSB memcached workload. if specified
protocol must be "binary" or "text". If unspecified text version is used.
  • Loading branch information
solganik authored and busbey committed May 12, 2017
1 parent ddde8e3 commit b0ff727
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 0 deletions.
4 changes: 4 additions & 0 deletions memcached/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,10 @@ A sample configuration is provided in
What to do with failures; this is one of `net.spy.memcached.FailureMode` enum
values, which are currently: `Redistribute`, `Retry`, or `Cancel`.

- `memcached.protocol`
Set to 'binary' to use memcached binary protocol. Set to 'text' or omit this field
to use memcached text protocol

You can set properties on the command line via `-p`, e.g.:

./bin/ycsb load memcached -s -P workloads/workloada \
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,10 @@ public class MemcachedClient extends DB {
public static final FailureMode FAILURE_MODE_PROPERTY_DEFAULT =
FailureMode.Redistribute;

public static final String PROTOCOL_PROPERTY = "memcached.protocol";
public static final ConnectionFactoryBuilder.Protocol DEFAULT_PROTOCOL =
ConnectionFactoryBuilder.Protocol.TEXT;

/**
* The MemcachedClient implementation that will be used to communicate
* with the memcached server.
Expand Down Expand Up @@ -142,6 +146,11 @@ protected net.spy.memcached.MemcachedClient createMemcachedClient()
connectionFactoryBuilder.setOpTimeout(Integer.parseInt(
getProperties().getProperty(OP_TIMEOUT_PROPERTY, DEFAULT_OP_TIMEOUT)));

String protocolString = getProperties().getProperty(PROTOCOL_PROPERTY);
connectionFactoryBuilder.setProtocol(
protocolString == null ? DEFAULT_PROTOCOL
: ConnectionFactoryBuilder.Protocol.valueOf(protocolString.toUpperCase()));

String failureString = getProperties().getProperty(FAILURE_MODE_PROPERTY);
connectionFactoryBuilder.setFailureMode(
failureString == null ? FAILURE_MODE_PROPERTY_DEFAULT
Expand Down

0 comments on commit b0ff727

Please sign in to comment.