From 0bcee040a5cfa0dcc1744376d0514340408ff87f Mon Sep 17 00:00:00 2001 From: Simon Ninon Date: Sun, 5 Feb 2017 18:08:02 +0000 Subject: [PATCH 1/2] update Z** functions such that min/max parameters are no longer ints but strings such that float can be passed in with exact value (no conversion precision lost during float to string) --- includes/cpp_redis/future_client.hpp | 16 ++++++------- includes/cpp_redis/redis_client.hpp | 16 ++++++------- includes/cpp_redis/sync_client.hpp | 16 ++++++------- sources/redis_client.cpp | 36 ++++++++++++++-------------- 4 files changed, 42 insertions(+), 42 deletions(-) diff --git a/includes/cpp_redis/future_client.hpp b/includes/cpp_redis/future_client.hpp index 8dbc41ef..36cebdfb 100644 --- a/includes/cpp_redis/future_client.hpp +++ b/includes/cpp_redis/future_client.hpp @@ -787,20 +787,20 @@ class future_client { return exec_cmd([=](const rcb_t& cb) -> rc& { return m_client.zcard(key, cb); }); } future - zcount(const std::string& key, int min, int max) { + zcount(const std::string& key, const std::string& min, const std::string& max) { return exec_cmd([=](const rcb_t& cb) -> rc& { return m_client.zcount(key, min, max, cb); }); } future - zincrby(const std::string& key, int incr, const std::string& member) { + zincrby(const std::string& key, const std::string& incr, const std::string& member) { return exec_cmd([=](const rcb_t& cb) -> rc& { return m_client.zincrby(key, incr, member, cb); }); } // future zinterstore() destination numkeys key [key ...] [weights weight [weight ...]] [aggregate sum|min|max] future - zlexcount(const std::string& key, int min, int max) { + zlexcount(const std::string& key, const std::string& min, const std::string& max) { return exec_cmd([=](const rcb_t& cb) -> rc& { return m_client.zlexcount(key, min, max, cb); }); } future - zrange(const std::string& key, int start, int stop, bool withscores = false) { + zrange(const std::string& key, const std::string& start, const std::string& stop, bool withscores = false) { return exec_cmd([=](const rcb_t& cb) -> rc& { return m_client.zrange(key, start, stop, withscores, cb); }); } // future zrangebylex() key min max [limit offset count] @@ -815,19 +815,19 @@ class future_client { return exec_cmd([=](const rcb_t& cb) -> rc& { return m_client.zrem(key, members, cb); }); } future - zremrangebylex(const std::string& key, int min, int max) { + zremrangebylex(const std::string& key, const std::string& min, const std::string& max) { return exec_cmd([=](const rcb_t& cb) -> rc& { return m_client.zremrangebylex(key, min, max, cb); }); } future - zremrangebyrank(const std::string& key, int start, int stop) { + zremrangebyrank(const std::string& key, const std::string& start, const std::string& stop) { return exec_cmd([=](const rcb_t& cb) -> rc& { return m_client.zremrangebyrank(key, start, stop, cb); }); } future - zremrangebyscore(const std::string& key, int min, int max) { + zremrangebyscore(const std::string& key, const std::string& min, const std::string& max) { return exec_cmd([=](const rcb_t& cb) -> rc& { return m_client.zremrangebyscore(key, min, max, cb); }); } future - zrevrange(const std::string& key, int start, int stop, bool withscores = false) { + zrevrange(const std::string& key, const std::string& start, const std::string& stop, bool withscores = false) { return exec_cmd([=](const rcb_t& cb) -> rc& { return m_client.zrevrange(key, start, stop, withscores, cb); }); } // future zrevrangebyscore() key max min [withscores] [limit offset count] diff --git a/includes/cpp_redis/redis_client.hpp b/includes/cpp_redis/redis_client.hpp index 06ca783a..f11453c9 100644 --- a/includes/cpp_redis/redis_client.hpp +++ b/includes/cpp_redis/redis_client.hpp @@ -258,20 +258,20 @@ class redis_client { redis_client& watch(const std::vector& keys, const reply_callback_t& reply_callback = nullptr); // redis_client& zadd(const reply_callback_t& reply_callback = nullptr) key [nx|xx] [ch] [incr] score member [score member ...] redis_client& zcard(const std::string& key, const reply_callback_t& reply_callback = nullptr); - redis_client& zcount(const std::string& key, int min, int max, const reply_callback_t& reply_callback = nullptr); - redis_client& zincrby(const std::string& key, int incr, const std::string& member, const reply_callback_t& reply_callback = nullptr); + redis_client& zcount(const std::string& key, const std::string& min, const std::string& max, const reply_callback_t& reply_callback = nullptr); + redis_client& zincrby(const std::string& key, const std::string& incr, const std::string& member, const reply_callback_t& reply_callback = nullptr); // redis_client& zinterstore(const reply_callback_t& reply_callback = nullptr) destination numkeys key [key ...] [weights weight [weight ...]] [aggregate sum|min|max] - redis_client& zlexcount(const std::string& key, int min, int max, const reply_callback_t& reply_callback = nullptr); - redis_client& zrange(const std::string& key, int start, int stop, bool withscores = false, const reply_callback_t& reply_callback = nullptr); + redis_client& zlexcount(const std::string& key, const std::string& min, const std::string& max, const reply_callback_t& reply_callback = nullptr); + redis_client& zrange(const std::string& key, const std::string& start, const std::string& stop, bool withscores = false, const reply_callback_t& reply_callback = nullptr); // redis_client& zrangebylex(const reply_callback_t& reply_callback = nullptr) key min max [limit offset count] // redis_client& zrevrangebylex(const reply_callback_t& reply_callback = nullptr) key max min [limit offset count] // redis_client& zrangebyscore(const reply_callback_t& reply_callback = nullptr) key min max [withscores] [limit offset count] redis_client& zrank(const std::string& key, const std::string& member, const reply_callback_t& reply_callback = nullptr); redis_client& zrem(const std::string& key, const std::vector& members, const reply_callback_t& reply_callback = nullptr); - redis_client& zremrangebylex(const std::string& key, int min, int max, const reply_callback_t& reply_callback = nullptr); - redis_client& zremrangebyrank(const std::string& key, int start, int stop, const reply_callback_t& reply_callback = nullptr); - redis_client& zremrangebyscore(const std::string& key, int min, int max, const reply_callback_t& reply_callback = nullptr); - redis_client& zrevrange(const std::string& key, int start, int stop, bool withscores = false, const reply_callback_t& reply_callback = nullptr); + redis_client& zremrangebylex(const std::string& key, const std::string& min, const std::string& max, const reply_callback_t& reply_callback = nullptr); + redis_client& zremrangebyrank(const std::string& key, const std::string& start, const std::string& stop, const reply_callback_t& reply_callback = nullptr); + redis_client& zremrangebyscore(const std::string& key, const std::string& min, const std::string& max, const reply_callback_t& reply_callback = nullptr); + redis_client& zrevrange(const std::string& key, const std::string& start, const std::string& stop, bool withscores = false, const reply_callback_t& reply_callback = nullptr); // redis_client& zrevrangebyscore(const reply_callback_t& reply_callback = nullptr) key max min [withscores] [limit offset count] redis_client& zrevrank(const std::string& key, const std::string& member, const reply_callback_t& reply_callback = nullptr); redis_client& zscore(const std::string& key, const std::string& member, const reply_callback_t& reply_callback = nullptr); diff --git a/includes/cpp_redis/sync_client.hpp b/includes/cpp_redis/sync_client.hpp index 37db3d53..0cad5921 100644 --- a/includes/cpp_redis/sync_client.hpp +++ b/includes/cpp_redis/sync_client.hpp @@ -767,20 +767,20 @@ class sync_client { return m_client.zcard(key).get(); } reply - zcount(const std::string& key, int min, int max) { + zcount(const std::string& key, const std::string& min, const std::string& max) { return m_client.zcount(key, min, max).get(); } reply - zincrby(const std::string& key, int incr, const std::string& member) { + zincrby(const std::string& key, const std::string& incr, const std::string& member) { return m_client.zincrby(key, incr, member).get(); } // reply zinterstore() dest numkeys key [key ...] [weights weight [weight ...]] [aggregate sum|min|max] reply - zlexcount(const std::string& key, int min, int max) { + zlexcount(const std::string& key, const std::string& min, const std::string& max) { return m_client.zlexcount(key, min, max).get(); } reply - zrange(const std::string& key, int start, int stop, bool withscores = false) { + zrange(const std::string& key, const std::string& start, const std::string& stop, bool withscores = false) { return m_client.zrange(key, start, stop, withscores).get(); } // reply zrangebylex() key min max [limit offset count] @@ -795,19 +795,19 @@ class sync_client { return m_client.zrem(key, members).get(); } reply - zremrangebylex(const std::string& key, int min, int max) { + zremrangebylex(const std::string& key, const std::string& min, const std::string& max) { return m_client.zremrangebylex(key, min, max).get(); } reply - zremrangebyrank(const std::string& key, int start, int stop) { + zremrangebyrank(const std::string& key, const std::string& start, const std::string& stop) { return m_client.zremrangebyrank(key, start, stop).get(); } reply - zremrangebyscore(const std::string& key, int min, int max) { + zremrangebyscore(const std::string& key, const std::string& min, const std::string& max) { return m_client.zremrangebyscore(key, min, max).get(); } reply - zrevrange(const std::string& key, int start, int stop, bool withscores = false) { + zrevrange(const std::string& key, const std::string& start, const std::string& stop, bool withscores = false) { return m_client.zrevrange(key, start, stop, withscores).get(); } // reply zrevrangebyscore() key max min [withscores] [limit offset count] diff --git a/sources/redis_client.cpp b/sources/redis_client.cpp index 28e7d0d9..4d398194 100644 --- a/sources/redis_client.cpp +++ b/sources/redis_client.cpp @@ -1339,29 +1339,29 @@ redis_client::zcard(const std::string& key, const reply_callback_t& reply_callba } redis_client& -redis_client::zcount(const std::string& key, int min, int max, const reply_callback_t& reply_callback) { - send({"ZCOUNT", key, std::to_string(min), std::to_string(max)}, reply_callback); +redis_client::zcount(const std::string& key, const std::string& min, const std::string& max, const reply_callback_t& reply_callback) { + send({"ZCOUNT", key, min, max}, reply_callback); return *this; } redis_client& -redis_client::zincrby(const std::string& key, int incr, const std::string& member, const reply_callback_t& reply_callback) { - send({"ZINCRBY", key, std::to_string(incr), member}, reply_callback); +redis_client::zincrby(const std::string& key, const std::string& incr, const std::string& member, const reply_callback_t& reply_callback) { + send({"ZINCRBY", key, incr, member}, reply_callback); return *this; } redis_client& -redis_client::zlexcount(const std::string& key, int min, int max, const reply_callback_t& reply_callback) { - send({"ZLEXCOUNT", key, std::to_string(min), std::to_string(max)}, reply_callback); +redis_client::zlexcount(const std::string& key, const std::string& min, const std::string& max, const reply_callback_t& reply_callback) { + send({"ZLEXCOUNT", key, min, max}, reply_callback); return *this; } redis_client& -redis_client::zrange(const std::string& key, int start, int stop, bool withscores, const reply_callback_t& reply_callback) { +redis_client::zrange(const std::string& key, const std::string& start, const std::string& stop, bool withscores, const reply_callback_t& reply_callback) { if (withscores) - send({"ZRANGE", key, std::to_string(start), std::to_string(stop), "WITHSCORES"}, reply_callback); + send({"ZRANGE", key, start, stop, "WITHSCORES"}, reply_callback); else - send({"ZRANGE", key, std::to_string(start), std::to_string(stop)}, reply_callback); + send({"ZRANGE", key, start, stop}, reply_callback); return *this; } @@ -1380,29 +1380,29 @@ redis_client::zrem(const std::string& key, const std::vector& membe } redis_client& -redis_client::zremrangebylex(const std::string& key, int min, int max, const reply_callback_t& reply_callback) { - send({"ZREMRANGEBYLEX", key, std::to_string(min), std::to_string(max)}, reply_callback); +redis_client::zremrangebylex(const std::string& key, const std::string& min, const std::string& max, const reply_callback_t& reply_callback) { + send({"ZREMRANGEBYLEX", key, min, max}, reply_callback); return *this; } redis_client& -redis_client::zremrangebyrank(const std::string& key, int start, int stop, const reply_callback_t& reply_callback) { - send({"ZREMRANGEBYRANK", key, std::to_string(start), std::to_string(stop)}, reply_callback); +redis_client::zremrangebyrank(const std::string& key, const std::string& start, const std::string& stop, const reply_callback_t& reply_callback) { + send({"ZREMRANGEBYRANK", key, start, stop}, reply_callback); return *this; } redis_client& -redis_client::zremrangebyscore(const std::string& key, int min, int max, const reply_callback_t& reply_callback) { - send({"ZREMRANGEBYSCORE", key, std::to_string(min), std::to_string(max)}, reply_callback); +redis_client::zremrangebyscore(const std::string& key, const std::string& min, const std::string& max, const reply_callback_t& reply_callback) { + send({"ZREMRANGEBYSCORE", key, min, max}, reply_callback); return *this; } redis_client& -redis_client::zrevrange(const std::string& key, int start, int stop, bool withscores, const reply_callback_t& reply_callback) { +redis_client::zrevrange(const std::string& key, const std::string& start, const std::string& stop, bool withscores, const reply_callback_t& reply_callback) { if (withscores) - send({"ZREVRANGE", key, std::to_string(start), std::to_string(stop), "WITHSCORES"}, reply_callback); + send({"ZREVRANGE", key, start, stop, "WITHSCORES"}, reply_callback); else - send({"ZREVRANGE", key, std::to_string(start), std::to_string(stop)}, reply_callback); + send({"ZREVRANGE", key, start, stop}, reply_callback); return *this; } From 93ba416542e86bd97e97c00aba76a44cba7959db Mon Sep 17 00:00:00 2001 From: Simon Ninon Date: Mon, 6 Feb 2017 01:01:47 +0100 Subject: [PATCH 2/2] Z** functions are now string/int/double --- includes/cpp_redis/future_client.hpp | 64 ++++++++++++++++ includes/cpp_redis/redis_client.hpp | 16 ++++ includes/cpp_redis/sync_client.hpp | 64 ++++++++++++++++ sources/redis_client.cpp | 108 +++++++++++++++++++++++++++ 4 files changed, 252 insertions(+) diff --git a/includes/cpp_redis/future_client.hpp b/includes/cpp_redis/future_client.hpp index 36cebdfb..aa9aa282 100644 --- a/includes/cpp_redis/future_client.hpp +++ b/includes/cpp_redis/future_client.hpp @@ -787,19 +787,51 @@ class future_client { return exec_cmd([=](const rcb_t& cb) -> rc& { return m_client.zcard(key, cb); }); } future + zcount(const std::string& key, int min, int max) { + return exec_cmd([=](const rcb_t& cb) -> rc& { return m_client.zcount(key, min, max, cb); }); + } + future + zcount(const std::string& key, double min, double max) { + return exec_cmd([=](const rcb_t& cb) -> rc& { return m_client.zcount(key, min, max, cb); }); + } + future zcount(const std::string& key, const std::string& min, const std::string& max) { return exec_cmd([=](const rcb_t& cb) -> rc& { return m_client.zcount(key, min, max, cb); }); } future + zincrby(const std::string& key, int incr, const std::string& member) { + return exec_cmd([=](const rcb_t& cb) -> rc& { return m_client.zincrby(key, incr, member, cb); }); + } + future + zincrby(const std::string& key, double incr, const std::string& member) { + return exec_cmd([=](const rcb_t& cb) -> rc& { return m_client.zincrby(key, incr, member, cb); }); + } + future zincrby(const std::string& key, const std::string& incr, const std::string& member) { return exec_cmd([=](const rcb_t& cb) -> rc& { return m_client.zincrby(key, incr, member, cb); }); } // future zinterstore() destination numkeys key [key ...] [weights weight [weight ...]] [aggregate sum|min|max] future + zlexcount(const std::string& key, int min, int max) { + return exec_cmd([=](const rcb_t& cb) -> rc& { return m_client.zlexcount(key, min, max, cb); }); + } + future + zlexcount(const std::string& key, double min, double max) { + return exec_cmd([=](const rcb_t& cb) -> rc& { return m_client.zlexcount(key, min, max, cb); }); + } + future zlexcount(const std::string& key, const std::string& min, const std::string& max) { return exec_cmd([=](const rcb_t& cb) -> rc& { return m_client.zlexcount(key, min, max, cb); }); } future + zrange(const std::string& key, int start, int stop, bool withscores = false) { + return exec_cmd([=](const rcb_t& cb) -> rc& { return m_client.zrange(key, start, stop, withscores, cb); }); + } + future + zrange(const std::string& key, double start, double stop, bool withscores = false) { + return exec_cmd([=](const rcb_t& cb) -> rc& { return m_client.zrange(key, start, stop, withscores, cb); }); + } + future zrange(const std::string& key, const std::string& start, const std::string& stop, bool withscores = false) { return exec_cmd([=](const rcb_t& cb) -> rc& { return m_client.zrange(key, start, stop, withscores, cb); }); } @@ -815,18 +847,50 @@ class future_client { return exec_cmd([=](const rcb_t& cb) -> rc& { return m_client.zrem(key, members, cb); }); } future + zremrangebylex(const std::string& key, int min, int max) { + return exec_cmd([=](const rcb_t& cb) -> rc& { return m_client.zremrangebylex(key, min, max, cb); }); + } + future + zremrangebylex(const std::string& key, double min, double max) { + return exec_cmd([=](const rcb_t& cb) -> rc& { return m_client.zremrangebylex(key, min, max, cb); }); + } + future zremrangebylex(const std::string& key, const std::string& min, const std::string& max) { return exec_cmd([=](const rcb_t& cb) -> rc& { return m_client.zremrangebylex(key, min, max, cb); }); } future + zremrangebyrank(const std::string& key, int start, int stop) { + return exec_cmd([=](const rcb_t& cb) -> rc& { return m_client.zremrangebyrank(key, start, stop, cb); }); + } + future + zremrangebyrank(const std::string& key, double start, double stop) { + return exec_cmd([=](const rcb_t& cb) -> rc& { return m_client.zremrangebyrank(key, start, stop, cb); }); + } + future zremrangebyrank(const std::string& key, const std::string& start, const std::string& stop) { return exec_cmd([=](const rcb_t& cb) -> rc& { return m_client.zremrangebyrank(key, start, stop, cb); }); } future + zremrangebyscore(const std::string& key, int min, int max) { + return exec_cmd([=](const rcb_t& cb) -> rc& { return m_client.zremrangebyscore(key, min, max, cb); }); + } + future + zremrangebyscore(const std::string& key, double min, double max) { + return exec_cmd([=](const rcb_t& cb) -> rc& { return m_client.zremrangebyscore(key, min, max, cb); }); + } + future zremrangebyscore(const std::string& key, const std::string& min, const std::string& max) { return exec_cmd([=](const rcb_t& cb) -> rc& { return m_client.zremrangebyscore(key, min, max, cb); }); } future + zrevrange(const std::string& key, int start, int stop, bool withscores = false) { + return exec_cmd([=](const rcb_t& cb) -> rc& { return m_client.zrevrange(key, start, stop, withscores, cb); }); + } + future + zrevrange(const std::string& key, double start, double stop, bool withscores = false) { + return exec_cmd([=](const rcb_t& cb) -> rc& { return m_client.zrevrange(key, start, stop, withscores, cb); }); + } + future zrevrange(const std::string& key, const std::string& start, const std::string& stop, bool withscores = false) { return exec_cmd([=](const rcb_t& cb) -> rc& { return m_client.zrevrange(key, start, stop, withscores, cb); }); } diff --git a/includes/cpp_redis/redis_client.hpp b/includes/cpp_redis/redis_client.hpp index f11453c9..45b73859 100644 --- a/includes/cpp_redis/redis_client.hpp +++ b/includes/cpp_redis/redis_client.hpp @@ -258,19 +258,35 @@ class redis_client { redis_client& watch(const std::vector& keys, const reply_callback_t& reply_callback = nullptr); // redis_client& zadd(const reply_callback_t& reply_callback = nullptr) key [nx|xx] [ch] [incr] score member [score member ...] redis_client& zcard(const std::string& key, const reply_callback_t& reply_callback = nullptr); + redis_client& zcount(const std::string& key, int min, int max, const reply_callback_t& reply_callback = nullptr); + redis_client& zcount(const std::string& key, double min, double max, const reply_callback_t& reply_callback = nullptr); redis_client& zcount(const std::string& key, const std::string& min, const std::string& max, const reply_callback_t& reply_callback = nullptr); + redis_client& zincrby(const std::string& key, int incr, const std::string& member, const reply_callback_t& reply_callback = nullptr); + redis_client& zincrby(const std::string& key, double incr, const std::string& member, const reply_callback_t& reply_callback = nullptr); redis_client& zincrby(const std::string& key, const std::string& incr, const std::string& member, const reply_callback_t& reply_callback = nullptr); // redis_client& zinterstore(const reply_callback_t& reply_callback = nullptr) destination numkeys key [key ...] [weights weight [weight ...]] [aggregate sum|min|max] + redis_client& zlexcount(const std::string& key, int min, int max, const reply_callback_t& reply_callback = nullptr); + redis_client& zlexcount(const std::string& key, double min, double max, const reply_callback_t& reply_callback = nullptr); redis_client& zlexcount(const std::string& key, const std::string& min, const std::string& max, const reply_callback_t& reply_callback = nullptr); + redis_client& zrange(const std::string& key, int start, int stop, bool withscores = false, const reply_callback_t& reply_callback = nullptr); + redis_client& zrange(const std::string& key, double start, double stop, bool withscores = false, const reply_callback_t& reply_callback = nullptr); redis_client& zrange(const std::string& key, const std::string& start, const std::string& stop, bool withscores = false, const reply_callback_t& reply_callback = nullptr); // redis_client& zrangebylex(const reply_callback_t& reply_callback = nullptr) key min max [limit offset count] // redis_client& zrevrangebylex(const reply_callback_t& reply_callback = nullptr) key max min [limit offset count] // redis_client& zrangebyscore(const reply_callback_t& reply_callback = nullptr) key min max [withscores] [limit offset count] redis_client& zrank(const std::string& key, const std::string& member, const reply_callback_t& reply_callback = nullptr); redis_client& zrem(const std::string& key, const std::vector& members, const reply_callback_t& reply_callback = nullptr); + redis_client& zremrangebylex(const std::string& key, int min, int max, const reply_callback_t& reply_callback = nullptr); + redis_client& zremrangebylex(const std::string& key, double min, double max, const reply_callback_t& reply_callback = nullptr); redis_client& zremrangebylex(const std::string& key, const std::string& min, const std::string& max, const reply_callback_t& reply_callback = nullptr); + redis_client& zremrangebyrank(const std::string& key, int start, int stop, const reply_callback_t& reply_callback = nullptr); + redis_client& zremrangebyrank(const std::string& key, double start, double stop, const reply_callback_t& reply_callback = nullptr); redis_client& zremrangebyrank(const std::string& key, const std::string& start, const std::string& stop, const reply_callback_t& reply_callback = nullptr); + redis_client& zremrangebyscore(const std::string& key, int min, int max, const reply_callback_t& reply_callback = nullptr); + redis_client& zremrangebyscore(const std::string& key, double min, double max, const reply_callback_t& reply_callback = nullptr); redis_client& zremrangebyscore(const std::string& key, const std::string& min, const std::string& max, const reply_callback_t& reply_callback = nullptr); + redis_client& zrevrange(const std::string& key, int start, int stop, bool withscores = false, const reply_callback_t& reply_callback = nullptr); + redis_client& zrevrange(const std::string& key, double start, double stop, bool withscores = false, const reply_callback_t& reply_callback = nullptr); redis_client& zrevrange(const std::string& key, const std::string& start, const std::string& stop, bool withscores = false, const reply_callback_t& reply_callback = nullptr); // redis_client& zrevrangebyscore(const reply_callback_t& reply_callback = nullptr) key max min [withscores] [limit offset count] redis_client& zrevrank(const std::string& key, const std::string& member, const reply_callback_t& reply_callback = nullptr); diff --git a/includes/cpp_redis/sync_client.hpp b/includes/cpp_redis/sync_client.hpp index 0cad5921..9c087e74 100644 --- a/includes/cpp_redis/sync_client.hpp +++ b/includes/cpp_redis/sync_client.hpp @@ -767,19 +767,51 @@ class sync_client { return m_client.zcard(key).get(); } reply + zcount(const std::string& key, int min, int max) { + return m_client.zcount(key, min, max).get(); + } + reply + zcount(const std::string& key, double min, double max) { + return m_client.zcount(key, min, max).get(); + } + reply zcount(const std::string& key, const std::string& min, const std::string& max) { return m_client.zcount(key, min, max).get(); } reply + zincrby(const std::string& key, int incr, const std::string& member) { + return m_client.zincrby(key, incr, member).get(); + } + reply + zincrby(const std::string& key, double incr, const std::string& member) { + return m_client.zincrby(key, incr, member).get(); + } + reply zincrby(const std::string& key, const std::string& incr, const std::string& member) { return m_client.zincrby(key, incr, member).get(); } // reply zinterstore() dest numkeys key [key ...] [weights weight [weight ...]] [aggregate sum|min|max] reply + zlexcount(const std::string& key, int min, int max) { + return m_client.zlexcount(key, min, max).get(); + } + reply + zlexcount(const std::string& key, double min, double max) { + return m_client.zlexcount(key, min, max).get(); + } + reply zlexcount(const std::string& key, const std::string& min, const std::string& max) { return m_client.zlexcount(key, min, max).get(); } reply + zrange(const std::string& key, int start, int stop, bool withscores = false) { + return m_client.zrange(key, start, stop, withscores).get(); + } + reply + zrange(const std::string& key, double start, double stop, bool withscores = false) { + return m_client.zrange(key, start, stop, withscores).get(); + } + reply zrange(const std::string& key, const std::string& start, const std::string& stop, bool withscores = false) { return m_client.zrange(key, start, stop, withscores).get(); } @@ -795,18 +827,50 @@ class sync_client { return m_client.zrem(key, members).get(); } reply + zremrangebylex(const std::string& key, int min, int max) { + return m_client.zremrangebylex(key, min, max).get(); + } + reply + zremrangebylex(const std::string& key, double min, double max) { + return m_client.zremrangebylex(key, min, max).get(); + } + reply zremrangebylex(const std::string& key, const std::string& min, const std::string& max) { return m_client.zremrangebylex(key, min, max).get(); } reply + zremrangebyrank(const std::string& key, int start, int stop) { + return m_client.zremrangebyrank(key, start, stop).get(); + } + reply + zremrangebyrank(const std::string& key, double start, double stop) { + return m_client.zremrangebyrank(key, start, stop).get(); + } + reply zremrangebyrank(const std::string& key, const std::string& start, const std::string& stop) { return m_client.zremrangebyrank(key, start, stop).get(); } reply + zremrangebyscore(const std::string& key, int min, int max) { + return m_client.zremrangebyscore(key, min, max).get(); + } + reply + zremrangebyscore(const std::string& key, double min, double max) { + return m_client.zremrangebyscore(key, min, max).get(); + } + reply zremrangebyscore(const std::string& key, const std::string& min, const std::string& max) { return m_client.zremrangebyscore(key, min, max).get(); } reply + zrevrange(const std::string& key, int start, int stop, bool withscores = false) { + return m_client.zrevrange(key, start, stop, withscores).get(); + } + reply + zrevrange(const std::string& key, double start, double stop, bool withscores = false) { + return m_client.zrevrange(key, start, stop, withscores).get(); + } + reply zrevrange(const std::string& key, const std::string& start, const std::string& stop, bool withscores = false) { return m_client.zrevrange(key, start, stop, withscores).get(); } diff --git a/sources/redis_client.cpp b/sources/redis_client.cpp index 4d398194..724ac381 100644 --- a/sources/redis_client.cpp +++ b/sources/redis_client.cpp @@ -1338,24 +1338,78 @@ redis_client::zcard(const std::string& key, const reply_callback_t& reply_callba return *this; } +redis_client& +redis_client::zcount(const std::string& key, int min, int max, const reply_callback_t& reply_callback) { + send({"ZCOUNT", key, std::to_string(min), std::to_string(max)}, reply_callback); + return *this; +} + +redis_client& +redis_client::zcount(const std::string& key, double min, double max, const reply_callback_t& reply_callback) { + send({"ZCOUNT", key, std::to_string(min), std::to_string(max)}, reply_callback); + return *this; +} + redis_client& redis_client::zcount(const std::string& key, const std::string& min, const std::string& max, const reply_callback_t& reply_callback) { send({"ZCOUNT", key, min, max}, reply_callback); return *this; } +redis_client& +redis_client::zincrby(const std::string& key, int incr, const std::string& member, const reply_callback_t& reply_callback) { + send({"ZINCRBY", key, std::to_string(incr), member}, reply_callback); + return *this; +} + +redis_client& +redis_client::zincrby(const std::string& key, double incr, const std::string& member, const reply_callback_t& reply_callback) { + send({"ZINCRBY", key, std::to_string(incr), member}, reply_callback); + return *this; +} + redis_client& redis_client::zincrby(const std::string& key, const std::string& incr, const std::string& member, const reply_callback_t& reply_callback) { send({"ZINCRBY", key, incr, member}, reply_callback); return *this; } +redis_client& +redis_client::zlexcount(const std::string& key, int min, int max, const reply_callback_t& reply_callback) { + send({"ZLEXCOUNT", key, std::to_string(min), std::to_string(max)}, reply_callback); + return *this; +} + +redis_client& +redis_client::zlexcount(const std::string& key, double min, double max, const reply_callback_t& reply_callback) { + send({"ZLEXCOUNT", key, std::to_string(min), std::to_string(max)}, reply_callback); + return *this; +} + redis_client& redis_client::zlexcount(const std::string& key, const std::string& min, const std::string& max, const reply_callback_t& reply_callback) { send({"ZLEXCOUNT", key, min, max}, reply_callback); return *this; } +redis_client& +redis_client::zrange(const std::string& key, int start, int stop, bool withscores, const reply_callback_t& reply_callback) { + if (withscores) + send({"ZRANGE", key, std::to_string(start), std::to_string(stop), "WITHSCORES"}, reply_callback); + else + send({"ZRANGE", key, std::to_string(start), std::to_string(stop)}, reply_callback); + return *this; +} + +redis_client& +redis_client::zrange(const std::string& key, double start, double stop, bool withscores, const reply_callback_t& reply_callback) { + if (withscores) + send({"ZRANGE", key, std::to_string(start), std::to_string(stop), "WITHSCORES"}, reply_callback); + else + send({"ZRANGE", key, std::to_string(start), std::to_string(stop)}, reply_callback); + return *this; +} + redis_client& redis_client::zrange(const std::string& key, const std::string& start, const std::string& stop, bool withscores, const reply_callback_t& reply_callback) { if (withscores) @@ -1379,24 +1433,78 @@ redis_client::zrem(const std::string& key, const std::vector& membe return *this; } +redis_client& +redis_client::zremrangebylex(const std::string& key, int min, int max, const reply_callback_t& reply_callback) { + send({"ZREMRANGEBYLEX", key, std::to_string(min), std::to_string(max)}, reply_callback); + return *this; +} + +redis_client& +redis_client::zremrangebylex(const std::string& key, double min, double max, const reply_callback_t& reply_callback) { + send({"ZREMRANGEBYLEX", key, std::to_string(min), std::to_string(max)}, reply_callback); + return *this; +} + redis_client& redis_client::zremrangebylex(const std::string& key, const std::string& min, const std::string& max, const reply_callback_t& reply_callback) { send({"ZREMRANGEBYLEX", key, min, max}, reply_callback); return *this; } +redis_client& +redis_client::zremrangebyrank(const std::string& key, int start, int stop, const reply_callback_t& reply_callback) { + send({"ZREMRANGEBYRANK", key, std::to_string(start), std::to_string(stop)}, reply_callback); + return *this; +} + +redis_client& +redis_client::zremrangebyrank(const std::string& key, double start, double stop, const reply_callback_t& reply_callback) { + send({"ZREMRANGEBYRANK", key, std::to_string(start), std::to_string(stop)}, reply_callback); + return *this; +} + redis_client& redis_client::zremrangebyrank(const std::string& key, const std::string& start, const std::string& stop, const reply_callback_t& reply_callback) { send({"ZREMRANGEBYRANK", key, start, stop}, reply_callback); return *this; } +redis_client& +redis_client::zremrangebyscore(const std::string& key, int min, int max, const reply_callback_t& reply_callback) { + send({"ZREMRANGEBYSCORE", key, std::to_string(min), std::to_string(max)}, reply_callback); + return *this; +} + +redis_client& +redis_client::zremrangebyscore(const std::string& key, double min, double max, const reply_callback_t& reply_callback) { + send({"ZREMRANGEBYSCORE", key, std::to_string(min), std::to_string(max)}, reply_callback); + return *this; +} + redis_client& redis_client::zremrangebyscore(const std::string& key, const std::string& min, const std::string& max, const reply_callback_t& reply_callback) { send({"ZREMRANGEBYSCORE", key, min, max}, reply_callback); return *this; } +redis_client& +redis_client::zrevrange(const std::string& key, int start, int stop, bool withscores, const reply_callback_t& reply_callback) { + if (withscores) + send({"ZREVRANGE", key, std::to_string(start), std::to_string(stop), "WITHSCORES"}, reply_callback); + else + send({"ZREVRANGE", key, std::to_string(start), std::to_string(stop)}, reply_callback); + return *this; +} + +redis_client& +redis_client::zrevrange(const std::string& key, double start, double stop, bool withscores, const reply_callback_t& reply_callback) { + if (withscores) + send({"ZREVRANGE", key, std::to_string(start), std::to_string(stop), "WITHSCORES"}, reply_callback); + else + send({"ZREVRANGE", key, std::to_string(start), std::to_string(stop)}, reply_callback); + return *this; +} + redis_client& redis_client::zrevrange(const std::string& key, const std::string& start, const std::string& stop, bool withscores, const reply_callback_t& reply_callback) { if (withscores)