All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.vdurmont.fakejedis.FakeTransaction Maven / Gradle / Ivy

The newest version!
package com.vdurmont.fakejedis;

import redis.clients.jedis.BinaryClient;
import redis.clients.jedis.BitOP;
import redis.clients.jedis.BitPosParams;
import redis.clients.jedis.Builder;
import redis.clients.jedis.BuilderFactory;
import redis.clients.jedis.Client;
import redis.clients.jedis.Response;
import redis.clients.jedis.SortingParams;
import redis.clients.jedis.Transaction;
import redis.clients.jedis.Tuple;
import redis.clients.jedis.ZParams;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * Transaction wrapper that enables us to simulate redis transactions
 *
 * @author Vincent DURMONT [[email protected]]
 */
public class FakeTransaction extends Transaction {
    private final FakeJedis jedis;
    private final List actions;

    public FakeTransaction(FakeJedis fakeJedis) {
        this.jedis = fakeJedis;
        this.actions = new LinkedList<>();
    }

    // //////////////////////
    // INTROSPECTION
    // //////////////

    private static Method getMethod(String name, Class... argsTypes) {
        try {
            return FakeJedis.class.getMethod(name, argsTypes);
        } catch (NoSuchMethodException e) {
            throw new FakeJedisException("Unable to find FakeJedis method.", e);
        }
    }

    // //////////////////////
    // PUBLIC API
    // //////////////

    @Override public Response hincrBy(String key, String field, long value) {
        Action action = new Action<>(
                BuilderFactory.LONG,
                getMethod("hincrBy", String.class, String.class, long.class),
                key, field, value
        );
        this.actions.add(action);
        return action.response;
    }

    @Override public Response del(String... keys) {
        Action action = new Action<>(
                BuilderFactory.LONG,
                getMethod("del", String[].class),
                keys
        );
        this.actions.add(action);
        return action.response;
    }

    @Override public Response del(String key) {
        Action action = new Action<>(
                BuilderFactory.LONG,
                getMethod("del", String.class),
                key
        );
        this.actions.add(action);
        return action.response;
    }

    @Override public Response set(String key, String value) {
        Action action = new Action<>(
                BuilderFactory.STRING,
                getMethod("set", String.class, String.class),
                key, value
        );
        this.actions.add(action);
        return action.response;
    }

    @Override public List exec() {
        List results = new ArrayList<>(this.actions.size());
        synchronized (this.jedis.LOCK) {
            // We have the lock so we remove the multi to execute our commands
            this.jedis.setMulti(false);

            for (Action action : this.actions) {
                try {
                    Object result = action.method.invoke(this.jedis, action.args);
                    action.response.set(result);
                    results.add(result);
                } catch (IllegalAccessException | InvocationTargetException e) {
                    throw new FakeJedisException("An error occurred while executing a transaction", e);
                }
            }
        }
        return results;
    }

    // //////////////////////
    // MODEL
    // //////////////

    private static class Action {
        public final Method method;
        public final Object[] args;
        public final Response response;

        private Action(Builder builder, Method method, Object... args) {
            this.method = method;
            this.args = args;
            this.response = new Response<>(builder);
        }
    }

    // //////////////////////
    // NOT IMPLEMENTED
    // //////////////

    @Override protected int getPipelinedResponseLength() {
        throw new FakeJedisNotImplementedException();
    }

    @Override protected Client getClient(String key) {
        throw new FakeJedisNotImplementedException();
    }

    @Override protected Client getClient(byte[] key) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public List> execGetResponse() {
        throw new FakeJedisNotImplementedException();
    }

    @Override public String discard() {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response> brpop(String... args) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response> brpop(int timeout, String... keys) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response> blpop(String... args) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response> blpop(int timeout, String... keys) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response> blpopMap(int timeout, String... keys) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response> brpop(byte[]... args) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response> brpop(int timeout, byte[]... keys) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response> brpopMap(int timeout, String... keys) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response> blpop(byte[]... args) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response> blpop(int timeout, byte[]... keys) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response del(byte[]... keys) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response> keys(String pattern) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response> keys(byte[] pattern) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response> mget(String... keys) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response> mget(byte[]... keys) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response mset(String... keysvalues) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response mset(byte[]... keysvalues) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response msetnx(String... keysvalues) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response msetnx(byte[]... keysvalues) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response rename(String oldkey, String newkey) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response rename(byte[] oldkey, byte[] newkey) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response renamenx(String oldkey, String newkey) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response renamenx(byte[] oldkey, byte[] newkey) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response rpoplpush(String srckey, String dstkey) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response rpoplpush(byte[] srckey, byte[] dstkey) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response> sdiff(String... keys) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response> sdiff(byte[]... keys) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response sdiffstore(String dstkey, String... keys) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response sdiffstore(byte[] dstkey, byte[]... keys) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response> sinter(String... keys) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response> sinter(byte[]... keys) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response sinterstore(String dstkey, String... keys) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response sinterstore(byte[] dstkey, byte[]... keys) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response smove(String srckey, String dstkey, String member) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response smove(byte[] srckey, byte[] dstkey, byte[] member) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response sort(String key, SortingParams sortingParameters, String dstkey) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response sort(byte[] key, SortingParams sortingParameters, byte[] dstkey) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response sort(String key, String dstkey) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response sort(byte[] key, byte[] dstkey) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response> sunion(String... keys) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response> sunion(byte[]... keys) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response sunionstore(String dstkey, String... keys) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response sunionstore(byte[] dstkey, byte[]... keys) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response watch(String... keys) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response watch(byte[]... keys) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response zinterstore(String dstkey, String... sets) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response zinterstore(byte[] dstkey, byte[]... sets) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response zinterstore(String dstkey, ZParams params, String... sets) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response zinterstore(byte[] dstkey, ZParams params, byte[]... sets) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response zunionstore(String dstkey, String... sets) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response zunionstore(byte[] dstkey, byte[]... sets) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response zunionstore(String dstkey, ZParams params, String... sets) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response zunionstore(byte[] dstkey, ZParams params, byte[]... sets) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response bgrewriteaof() {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response bgsave() {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response configGet(String pattern) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response configSet(String parameter, String value) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response brpoplpush(String source, String destination, int timeout) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response brpoplpush(byte[] source, byte[] destination, int timeout) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response configResetStat() {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response save() {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response lastsave() {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response publish(String channel, String message) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response publish(byte[] channel, byte[] message) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response randomKey() {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response randomKeyBinary() {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response flushDB() {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response flushAll() {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response info() {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response> time() {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response dbSize() {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response shutdown() {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response ping() {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response select(int index) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response bitop(BitOP op, byte[] destKey, byte[]... srcKeys) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response bitop(BitOP op, String destKey, String... srcKeys) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response clusterNodes() {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response clusterMeet(String ip, int port) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response clusterAddSlots(int... slots) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response clusterDelSlots(int... slots) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response clusterInfo() {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response> clusterGetKeysInSlot(int slot, int count) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response clusterSetSlotNode(int slot, String nodeId) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response clusterSetSlotMigrating(int slot, String nodeId) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response clusterSetSlotImporting(int slot, String nodeId) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response pfmerge(byte[] destkey, byte[]... sourcekeys) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response pfmerge(String destkey, String... sourcekeys) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response pfcount(String... keys) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response pfcount(byte[]... keys) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response append(String key, String value) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response append(byte[] key, byte[] value) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response> blpop(String key) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response> brpop(String key) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response> blpop(byte[] key) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response> brpop(byte[] key) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response decr(String key) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response decr(byte[] key) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response decrBy(String key, long integer) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response decrBy(byte[] key, long integer) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response del(byte[] key) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response echo(String string) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response echo(byte[] string) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response exists(String key) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response exists(byte[] key) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response expire(String key, int seconds) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response expire(byte[] key, int seconds) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response expireAt(String key, long unixTime) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response expireAt(byte[] key, long unixTime) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response get(String key) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response get(byte[] key) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response getbit(String key, long offset) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response getbit(byte[] key, long offset) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response bitpos(String key, boolean value) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response bitpos(String key, boolean value, BitPosParams params) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response bitpos(byte[] key, boolean value) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response bitpos(byte[] key, boolean value, BitPosParams params) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response getrange(String key, long startOffset, long endOffset) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response getSet(String key, String value) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response getSet(byte[] key, byte[] value) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response getrange(byte[] key, long startOffset, long endOffset) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response hdel(String key, String... field) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response hdel(byte[] key, byte[]... field) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response hexists(String key, String field) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response hexists(byte[] key, byte[] field) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response hget(String key, String field) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response hget(byte[] key, byte[] field) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response> hgetAll(String key) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response> hgetAll(byte[] key) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response hincrBy(byte[] key, byte[] field, long value) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response> hkeys(String key) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response> hkeys(byte[] key) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response hlen(String key) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response hlen(byte[] key) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response> hmget(String key, String... fields) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response> hmget(byte[] key, byte[]... fields) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response hmset(String key, Map hash) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response hmset(byte[] key, Map hash) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response hset(String key, String field, String value) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response hset(byte[] key, byte[] field, byte[] value) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response hsetnx(String key, String field, String value) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response hsetnx(byte[] key, byte[] field, byte[] value) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response> hvals(String key) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response> hvals(byte[] key) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response incr(String key) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response incr(byte[] key) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response incrBy(String key, long integer) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response incrBy(byte[] key, long integer) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response lindex(String key, long index) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response lindex(byte[] key, long index) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response linsert(String key, BinaryClient.LIST_POSITION where, String pivot, String value) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response linsert(byte[] key, BinaryClient.LIST_POSITION where, byte[] pivot, byte[] value) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response llen(String key) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response llen(byte[] key) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response lpop(String key) {
        Action action = new Action<>(
                BuilderFactory.STRING,
                getMethod("lpop", String.class),
                key
        );
        this.actions.add(action);
        return action.response;
    }

    @Override public Response lpop(byte[] key) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response lpush(String key, String... string) {
        Action action = new Action<>(
                BuilderFactory.LONG,
                getMethod("lpush", String.class, String[].class),
                key, string
        );
        this.actions.add(action);
        return action.response;
    }

    @Override public Response lpush(byte[] key, byte[]... string) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response lpushx(String key, String... string) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response lpushx(byte[] key, byte[]... bytes) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response> lrange(String key, long start, long end) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response> lrange(byte[] key, long start, long end) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response lrem(String key, long count, String value) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response lrem(byte[] key, long count, byte[] value) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response lset(String key, long index, String value) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response lset(byte[] key, long index, byte[] value) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response ltrim(String key, long start, long end) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response ltrim(byte[] key, long start, long end) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response move(String key, int dbIndex) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response move(byte[] key, int dbIndex) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response persist(String key) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response persist(byte[] key) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response rpop(String key) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response rpop(byte[] key) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response rpush(String key, String... string) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response rpush(byte[] key, byte[]... string) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response rpushx(String key, String... string) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response rpushx(byte[] key, byte[]... string) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response sadd(String key, String... member) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response sadd(byte[] key, byte[]... member) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response scard(String key) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response scard(byte[] key) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response set(byte[] key, byte[] value) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response setbit(String key, long offset, boolean value) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response setbit(byte[] key, long offset, byte[] value) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response setex(String key, int seconds, String value) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response setex(byte[] key, int seconds, byte[] value) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response setnx(String key, String value) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response setnx(byte[] key, byte[] value) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response setrange(String key, long offset, String value) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response setrange(byte[] key, long offset, byte[] value) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response sismember(String key, String member) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response sismember(byte[] key, byte[] member) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response> smembers(String key) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response> smembers(byte[] key) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response> sort(String key) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response> sort(byte[] key) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response> sort(String key, SortingParams sortingParameters) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response> sort(byte[] key, SortingParams sortingParameters) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response spop(String key) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response spop(byte[] key) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response srandmember(String key) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response> srandmember(String key, int count) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response srandmember(byte[] key) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response> srandmember(byte[] key, int count) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response srem(String key, String... member) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response srem(byte[] key, byte[]... member) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response strlen(String key) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response strlen(byte[] key) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response substr(String key, int start, int end) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response substr(byte[] key, int start, int end) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response ttl(String key) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response ttl(byte[] key) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response type(String key) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response type(byte[] key) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response zadd(String key, double score, String member) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response zadd(String key, Map scoreMembers) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response zadd(byte[] key, double score, byte[] member) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response zcard(String key) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response zcard(byte[] key) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response zcount(String key, double min, double max) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response zcount(String key, String min, String max) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response zcount(byte[] key, double min, double max) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response zincrby(String key, double score, String member) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response zincrby(byte[] key, double score, byte[] member) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response> zrange(String key, long start, long end) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response> zrange(byte[] key, long start, long end) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response> zrangeByScore(String key, double min, double max) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response> zrangeByScore(byte[] key, double min, double max) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response> zrangeByScore(String key, String min, String max) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response> zrangeByScore(byte[] key, byte[] min, byte[] max) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response> zrangeByScore(String key, double min, double max, int offset, int count) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response> zrangeByScore(String key, String min, String max, int offset, int count) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response> zrangeByScore(byte[] key, double min, double max, int offset, int count) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response> zrangeByScore(byte[] key, byte[] min, byte[] max, int offset, int count) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response> zrangeByScoreWithScores(String key, double min, double max) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response> zrangeByScoreWithScores(String key, String min, String max) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response> zrangeByScoreWithScores(byte[] key, double min, double max) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response> zrangeByScoreWithScores(byte[] key, byte[] min, byte[] max) {
        throw new FakeJedisNotImplementedException();
    }

    @Override
    public Response> zrangeByScoreWithScores(String key, double min, double max, int offset, int count) {
        throw new FakeJedisNotImplementedException();
    }

    @Override
    public Response> zrangeByScoreWithScores(String key, String min, String max, int offset, int count) {
        throw new FakeJedisNotImplementedException();
    }

    @Override
    public Response> zrangeByScoreWithScores(byte[] key, double min, double max, int offset, int count) {
        throw new FakeJedisNotImplementedException();
    }

    @Override
    public Response> zrangeByScoreWithScores(byte[] key, byte[] min, byte[] max, int offset, int count) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response> zrevrangeByScore(String key, double max, double min) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response> zrevrangeByScore(byte[] key, double max, double min) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response> zrevrangeByScore(String key, String max, String min) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response> zrevrangeByScore(byte[] key, byte[] max, byte[] min) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response> zrevrangeByScore(String key, double max, double min, int offset, int count) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response> zrevrangeByScore(String key, String max, String min, int offset, int count) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response> zrevrangeByScore(byte[] key, double max, double min, int offset, int count) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response> zrevrangeByScore(byte[] key, byte[] max, byte[] min, int offset, int count) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response> zrevrangeByScoreWithScores(String key, double max, double min) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response> zrevrangeByScoreWithScores(String key, String max, String min) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response> zrevrangeByScoreWithScores(byte[] key, double max, double min) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response> zrevrangeByScoreWithScores(byte[] key, byte[] max, byte[] min) {
        throw new FakeJedisNotImplementedException();
    }

    @Override
    public Response> zrevrangeByScoreWithScores(String key, double max, double min, int offset, int count) {
        throw new FakeJedisNotImplementedException();
    }

    @Override
    public Response> zrevrangeByScoreWithScores(String key, String max, String min, int offset, int count) {
        throw new FakeJedisNotImplementedException();
    }

    @Override
    public Response> zrevrangeByScoreWithScores(byte[] key, double max, double min, int offset, int count) {
        throw new FakeJedisNotImplementedException();
    }

    @Override
    public Response> zrevrangeByScoreWithScores(byte[] key, byte[] max, byte[] min, int offset, int count) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response> zrangeWithScores(String key, long start, long end) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response> zrangeWithScores(byte[] key, long start, long end) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response zrank(String key, String member) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response zrank(byte[] key, byte[] member) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response zrem(String key, String... member) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response zrem(byte[] key, byte[]... member) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response zremrangeByRank(String key, long start, long end) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response zremrangeByRank(byte[] key, long start, long end) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response zremrangeByScore(String key, double start, double end) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response zremrangeByScore(String key, String start, String end) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response zremrangeByScore(byte[] key, double start, double end) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response zremrangeByScore(byte[] key, byte[] start, byte[] end) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response> zrevrange(String key, long start, long end) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response> zrevrange(byte[] key, long start, long end) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response> zrevrangeWithScores(String key, long start, long end) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response> zrevrangeWithScores(byte[] key, long start, long end) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response zrevrank(String key, String member) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response zrevrank(byte[] key, byte[] member) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response zscore(String key, String member) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response zscore(byte[] key, byte[] member) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response zlexcount(byte[] key, byte[] min, byte[] max) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response zlexcount(String key, String min, String max) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response> zrangeByLex(byte[] key, byte[] min, byte[] max) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response> zrangeByLex(String key, String min, String max) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response> zrangeByLex(byte[] key, byte[] min, byte[] max, int offset, int count) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response> zrangeByLex(String key, String min, String max, int offset, int count) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response zremrangeByLex(byte[] key, byte[] min, byte[] max) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response zremrangeByLex(String key, String min, String max) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response bitcount(String key) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response bitcount(String key, long start, long end) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response bitcount(byte[] key) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response bitcount(byte[] key, long start, long end) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response dump(String key) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response dump(byte[] key) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response migrate(String host, int port, String key, int destinationDb, int timeout) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response migrate(byte[] host, int port, byte[] key, int destinationDb, int timeout) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response objectRefcount(String key) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response objectRefcount(byte[] key) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response objectEncoding(String key) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response objectEncoding(byte[] key) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response objectIdletime(String key) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response objectIdletime(byte[] key) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response pexpire(String key, int milliseconds) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response pexpire(byte[] key, int milliseconds) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response pexpire(String key, long milliseconds) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response pexpire(byte[] key, long milliseconds) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response pexpireAt(String key, long millisecondsTimestamp) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response pexpireAt(byte[] key, long millisecondsTimestamp) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response pttl(String key) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response pttl(byte[] key) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response restore(String key, int ttl, byte[] serializedValue) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response restore(byte[] key, int ttl, byte[] serializedValue) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response incrByFloat(String key, double increment) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response incrByFloat(byte[] key, double increment) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response psetex(String key, int milliseconds, String value) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response psetex(byte[] key, int milliseconds, byte[] value) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response set(String key, String value, String nxxx) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response set(byte[] key, byte[] value, byte[] nxxx) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response set(String key, String value, String nxxx, String expx, int time) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response set(byte[] key, byte[] value, byte[] nxxx, byte[] expx, int time) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response hincrByFloat(String key, String field, double increment) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response hincrByFloat(byte[] key, byte[] field, double increment) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response eval(String script) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response eval(String script, List keys, List args) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response eval(String script, int numKeys, String... args) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response evalsha(String script) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response evalsha(String sha1, List keys, List args) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response evalsha(String sha1, int numKeys, String... args) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response pfadd(byte[] key, byte[]... elements) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response pfcount(byte[] key) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response pfadd(String key, String... elements) {
        throw new FakeJedisNotImplementedException();
    }

    @Override public Response pfcount(String key) {
        throw new FakeJedisNotImplementedException();
    }

    @Override protected void clean() {
        throw new FakeJedisNotImplementedException();
    }

    @Override protected Response generateResponse(Object data) {
        throw new FakeJedisNotImplementedException();
    }

    @Override protected  Response getResponse(Builder builder) {
        throw new FakeJedisNotImplementedException();
    }

    @Override protected boolean hasPipelinedResponse() {
        throw new FakeJedisNotImplementedException();
    }
}