26 #include <condition_variable> 35 #include <cpp_redis/core/sentinel.hpp> 36 #include <cpp_redis/helpers/variadic_template.hpp> 37 #include <cpp_redis/misc/logger.hpp> 38 #include <cpp_redis/network/redis_connection.hpp> 39 #include <cpp_redis/network/tcp_client_iface.hpp> 82 #ifndef __CPP_REDIS_USE_CUSTOM_TCP_CLIENT 92 explicit client(
const std::shared_ptr<network::tcp_client_iface>& tcp_client);
106 typedef std::function<void(const std::string& host, std::size_t port, connect_state status)>
connect_callback_t;
119 const std::string& host =
"127.0.0.1",
120 std::size_t port = 6379,
121 const connect_callback_t& connect_callback =
nullptr,
122 std::uint32_t timeout_msecs = 0,
123 std::int32_t max_reconnects = 0,
124 std::uint32_t reconnect_interval_msecs = 0);
136 const std::string& name,
137 const connect_callback_t& connect_callback =
nullptr,
138 std::uint32_t timeout_msecs = 0,
139 std::int32_t max_reconnects = 0,
140 std::uint32_t reconnect_interval_msecs = 0);
152 void disconnect(
bool wait_for_removal =
false);
180 client&
send(
const std::vector<std::string>& redis_cmd,
const reply_callback_t& callback);
189 std::future<reply>
send(
const std::vector<std::string>& redis_cmd);
215 template <
class Rep,
class Period>
224 std::unique_lock<std::mutex> lock_callback(m_callbacks_mutex);
225 __CPP_REDIS_LOG(debug,
"cpp_redis::client waiting for callbacks to complete");
226 if (!m_sync_condvar.wait_for(lock_callback, timeout, [=] { return m_callbacks_running == 0 && m_commands.empty(); })) {
227 __CPP_REDIS_LOG(debug,
"cpp_redis::client finished waiting for callback");
230 __CPP_REDIS_LOG(debug,
"cpp_redis::client timed out waiting for callback");
240 bool should_reconnect(
void)
const;
245 void resend_failed_commands(
void);
250 void sleep_before_next_reconnect_attempt(
void);
256 void reconnect(
void);
266 void re_select(
void);
276 void unprotected_send(
const std::vector<std::string>& redis_cmd,
const reply_callback_t& callback);
285 void unprotected_auth(
const std::string& password,
const reply_callback_t& reply_callback);
294 void unprotected_select(
int index,
const reply_callback_t& reply_callback);
303 void add_sentinel(
const std::string& host, std::size_t port);
472 append(
const std::string& key,
const std::string& value,
const reply_callback_t& reply_callback);
473 std::future<reply> append(
const std::string& key,
const std::string& value);
475 client& auth(
const std::string& password,
const reply_callback_t& reply_callback);
476 std::future<reply> auth(
const std::string& password);
478 client& bgrewriteaof(
const reply_callback_t& reply_callback);
479 std::future<reply> bgrewriteaof();
481 client& bgsave(
const reply_callback_t& reply_callback);
482 std::future<reply> bgsave();
484 client& bitcount(
const std::string& key,
const reply_callback_t& reply_callback);
485 std::future<reply> bitcount(
const std::string& key);
487 client& bitcount(
const std::string& key,
int start,
int end,
const reply_callback_t& reply_callback);
488 std::future<reply> bitcount(
const std::string& key,
int start,
int end);
490 client& bitfield(
const std::string& key,
const std::vector<bitfield_operation>& operations,
const reply_callback_t& reply_callback);
491 std::future<reply> bitfield(
const std::string& key,
const std::vector<bitfield_operation>& operations);
493 client& bitop(
const std::string& operation,
const std::string& destkey,
const std::vector<std::string>& keys,
const reply_callback_t& reply_callback);
494 std::future<reply> bitop(
const std::string& operation,
const std::string& destkey,
const std::vector<std::string>& keys);
496 client& bitpos(
const std::string& key,
int bit,
const reply_callback_t& reply_callback);
497 std::future<reply> bitpos(
const std::string& key,
int bit);
499 client& bitpos(
const std::string& key,
int bit,
int start,
const reply_callback_t& reply_callback);
500 std::future<reply> bitpos(
const std::string& key,
int bit,
int start);
502 client& bitpos(
const std::string& key,
int bit,
int start,
int end,
const reply_callback_t& reply_callback);
503 std::future<reply> bitpos(
const std::string& key,
int bit,
int start,
int end);
505 client& blpop(
const std::vector<std::string>& keys,
int timeout,
const reply_callback_t& reply_callback);
506 std::future<reply> blpop(
const std::vector<std::string>& keys,
int timeout);
508 client& brpop(
const std::vector<std::string>& keys,
int timeout,
const reply_callback_t& reply_callback);
509 std::future<reply> brpop(
const std::vector<std::string>& keys,
int timeout);
511 client& brpoplpush(
const std::string& src,
const std::string& dst,
int timeout,
const reply_callback_t& reply_callback);
512 std::future<reply> brpoplpush(
const std::string& src,
const std::string& dst,
int timeout);
514 template <
typename T,
typename... Ts>
515 client&
client_kill(
const std::string& host,
int port,
const T& arg,
const Ts&... args);
517 template <
typename... Ts>
519 template <
typename T,
typename... Ts>
521 template <
typename T,
typename... Ts>
524 client& client_list(
const reply_callback_t& reply_callback);
525 std::future<reply> client_list();
527 client& client_getname(
const reply_callback_t& reply_callback);
528 std::future<reply> client_getname();
530 client& client_pause(
int timeout,
const reply_callback_t& reply_callback);
531 std::future<reply> client_pause(
int timeout);
533 client& client_reply(
const std::string& mode,
const reply_callback_t& reply_callback);
534 std::future<reply> client_reply(
const std::string& mode);
536 client& client_setname(
const std::string& name,
const reply_callback_t& reply_callback);
537 std::future<reply> client_setname(
const std::string& name);
539 client& cluster_addslots(
const std::vector<std::string>& p_slots,
const reply_callback_t& reply_callback);
540 std::future<reply> cluster_addslots(
const std::vector<std::string>& p_slots);
542 client& cluster_count_failure_reports(
const std::string& node_id,
const reply_callback_t& reply_callback);
543 std::future<reply> cluster_count_failure_reports(
const std::string& node_id);
545 client& cluster_countkeysinslot(
const std::string& slot,
const reply_callback_t& reply_callback);
546 std::future<reply> cluster_countkeysinslot(
const std::string& slot);
548 client& cluster_delslots(
const std::vector<std::string>& p_slots,
const reply_callback_t& reply_callback);
549 std::future<reply> cluster_delslots(
const std::vector<std::string>& p_slots);
551 client& cluster_failover(
const reply_callback_t& reply_callback);
552 std::future<reply> cluster_failover();
554 client& cluster_failover(
const std::string& mode,
const reply_callback_t& reply_callback);
555 std::future<reply> cluster_failover(
const std::string& mode);
557 client& cluster_forget(
const std::string& node_id,
const reply_callback_t& reply_callback);
558 std::future<reply> cluster_forget(
const std::string& node_id);
560 client& cluster_getkeysinslot(
const std::string& slot,
int count,
const reply_callback_t& reply_callback);
561 std::future<reply> cluster_getkeysinslot(
const std::string& slot,
int count);
563 client& cluster_info(
const reply_callback_t& reply_callback);
564 std::future<reply> cluster_info();
566 client& cluster_keyslot(
const std::string& key,
const reply_callback_t& reply_callback);
567 std::future<reply> cluster_keyslot(
const std::string& key);
569 client& cluster_meet(
const std::string& ip,
int port,
const reply_callback_t& reply_callback);
570 std::future<reply> cluster_meet(
const std::string& ip,
int port);
572 client& cluster_nodes(
const reply_callback_t& reply_callback);
573 std::future<reply> cluster_nodes();
575 client& cluster_replicate(
const std::string& node_id,
const reply_callback_t& reply_callback);
576 std::future<reply> cluster_replicate(
const std::string& node_id);
578 client& cluster_reset(
const reply_callback_t& reply_callback);
579 client& cluster_reset(
const std::string& mode,
const reply_callback_t& reply_callback);
580 std::future<reply> cluster_reset(
const std::string& mode =
"soft");
582 client& cluster_saveconfig(
const reply_callback_t& reply_callback);
583 std::future<reply> cluster_saveconfig();
585 client& cluster_set_config_epoch(
const std::string& epoch,
const reply_callback_t& reply_callback);
586 std::future<reply> cluster_set_config_epoch(
const std::string& epoch);
588 client& cluster_setslot(
const std::string& slot,
const std::string& mode,
const reply_callback_t& reply_callback);
589 std::future<reply> cluster_setslot(
const std::string& slot,
const std::string& mode);
591 client& cluster_setslot(
const std::string& slot,
const std::string& mode,
const std::string& node_id,
const reply_callback_t& reply_callback);
592 std::future<reply> cluster_setslot(
const std::string& slot,
const std::string& mode,
const std::string& node_id);
594 client& cluster_slaves(
const std::string& node_id,
const reply_callback_t& reply_callback);
595 std::future<reply> cluster_slaves(
const std::string& node_id);
597 client& cluster_slots(
const reply_callback_t& reply_callback);
598 std::future<reply> cluster_slots();
600 client& command(
const reply_callback_t& reply_callback);
601 std::future<reply> command();
603 client& command_count(
const reply_callback_t& reply_callback);
604 std::future<reply> command_count();
606 client& command_getkeys(
const reply_callback_t& reply_callback);
607 std::future<reply> command_getkeys();
609 client& command_info(
const std::vector<std::string>& command_name,
const reply_callback_t& reply_callback);
610 std::future<reply> command_info(
const std::vector<std::string>& command_name);
612 client& config_get(
const std::string& param,
const reply_callback_t& reply_callback);
613 std::future<reply> config_get(
const std::string& param);
615 client& config_rewrite(
const reply_callback_t& reply_callback);
616 std::future<reply> config_rewrite();
618 client& config_set(
const std::string& param,
const std::string& val,
const reply_callback_t& reply_callback);
619 std::future<reply> config_set(
const std::string& param,
const std::string& val);
621 client& config_resetstat(
const reply_callback_t& reply_callback);
622 std::future<reply> config_resetstat();
624 client& dbsize(
const reply_callback_t& reply_callback);
625 std::future<reply> dbsize();
627 client& debug_object(
const std::string& key,
const reply_callback_t& reply_callback);
628 std::future<reply> debug_object(
const std::string& key);
630 client& debug_segfault(
const reply_callback_t& reply_callback);
631 std::future<reply> debug_segfault();
633 client& decr(
const std::string& key,
const reply_callback_t& reply_callback);
634 std::future<reply> decr(
const std::string& key);
636 client& decrby(
const std::string& key,
int val,
const reply_callback_t& reply_callback);
637 std::future<reply> decrby(
const std::string& key,
int val);
639 client& del(
const std::vector<std::string>& key,
const reply_callback_t& reply_callback);
640 std::future<reply> del(
const std::vector<std::string>& key);
642 client& discard(
const reply_callback_t& reply_callback);
643 std::future<reply> discard();
645 client& dump(
const std::string& key,
const reply_callback_t& reply_callback);
646 std::future<reply> dump(
const std::string& key);
648 client& echo(
const std::string& msg,
const reply_callback_t& reply_callback);
649 std::future<reply> echo(
const std::string& msg);
651 client& eval(
const std::string& script,
int numkeys,
const std::vector<std::string>& keys,
const std::vector<std::string>& args,
const reply_callback_t& reply_callback);
652 std::future<reply> eval(
const std::string& script,
int numkeys,
const std::vector<std::string>& keys,
const std::vector<std::string>& args);
654 client& evalsha(
const std::string& sha1,
int numkeys,
const std::vector<std::string>& keys,
const std::vector<std::string>& args,
const reply_callback_t& reply_callback);
655 std::future<reply> evalsha(
const std::string& sha1,
int numkeys,
const std::vector<std::string>& keys,
const std::vector<std::string>& args);
657 client& exec(
const reply_callback_t& reply_callback);
658 std::future<reply> exec();
660 client& exists(
const std::vector<std::string>& keys,
const reply_callback_t& reply_callback);
661 std::future<reply> exists(
const std::vector<std::string>& keys);
663 client& expire(
const std::string& key,
int seconds,
const reply_callback_t& reply_callback);
664 std::future<reply> expire(
const std::string& key,
int seconds);
666 client& expireat(
const std::string& key,
int timestamp,
const reply_callback_t& reply_callback);
667 std::future<reply> expireat(
const std::string& key,
int timestamp);
669 client& flushall(
const reply_callback_t& reply_callback);
670 std::future<reply> flushall();
672 client& flushdb(
const reply_callback_t& reply_callback);
673 std::future<reply> flushdb();
675 client& geoadd(
const std::string& key,
const std::vector<std::tuple<std::string, std::string, std::string>>& long_lat_memb,
const reply_callback_t& reply_callback);
676 std::future<reply> geoadd(
const std::string& key,
const std::vector<std::tuple<std::string, std::string, std::string>>& long_lat_memb);
678 client& geohash(
const std::string& key,
const std::vector<std::string>& members,
const reply_callback_t& reply_callback);
679 std::future<reply> geohash(
const std::string& key,
const std::vector<std::string>& members);
681 client& geopos(
const std::string& key,
const std::vector<std::string>& members,
const reply_callback_t& reply_callback);
682 std::future<reply> geopos(
const std::string& key,
const std::vector<std::string>& members);
684 client& geodist(
const std::string& key,
const std::string& member_1,
const std::string& member_2,
const reply_callback_t& reply_callback);
685 client& geodist(
const std::string& key,
const std::string& member_1,
const std::string& member_2,
const std::string& unit,
const reply_callback_t& reply_callback);
686 std::future<reply> geodist(
const std::string& key,
const std::string& member_1,
const std::string& member_2,
const std::string& unit =
"m");
688 client& georadius(
const std::string& key,
double longitude,
double latitude,
double radius,
geo_unit unit,
bool with_coord,
bool with_dist,
bool with_hash,
bool asc_order,
const reply_callback_t& reply_callback);
689 client& georadius(
const std::string& key,
double longitude,
double latitude,
double radius,
geo_unit unit,
bool with_coord,
bool with_dist,
bool with_hash,
bool asc_order, std::size_t count,
const reply_callback_t& reply_callback);
690 client& georadius(
const std::string& key,
double longitude,
double latitude,
double radius,
geo_unit unit,
bool with_coord,
bool with_dist,
bool with_hash,
bool asc_order,
const std::string& store_key,
const reply_callback_t& reply_callback);
691 client& georadius(
const std::string& key,
double longitude,
double latitude,
double radius,
geo_unit unit,
bool with_coord,
bool with_dist,
bool with_hash,
bool asc_order,
const std::string& store_key,
const std::string& storedist_key,
const reply_callback_t& reply_callback);
692 client& georadius(
const std::string& key,
double longitude,
double latitude,
double radius,
geo_unit unit,
bool with_coord,
bool with_dist,
bool with_hash,
bool asc_order, std::size_t count,
const std::string& store_key,
const reply_callback_t& reply_callback);
693 client& georadius(
const std::string& key,
double longitude,
double latitude,
double radius,
geo_unit unit,
bool with_coord,
bool with_dist,
bool with_hash,
bool asc_order, std::size_t count,
const std::string& store_key,
const std::string& storedist_key,
const reply_callback_t& reply_callback);
694 std::future<reply> georadius(
const std::string& key,
double longitude,
double latitude,
double radius,
geo_unit unit,
bool with_coord =
false,
bool with_dist =
false,
bool with_hash =
false,
bool asc_order =
false, std::size_t count = 0,
const std::string& store_key =
"",
const std::string& storedist_key =
"");
696 client& georadiusbymember(
const std::string& key,
const std::string& member,
double radius,
geo_unit unit,
bool with_coord,
bool with_dist,
bool with_hash,
bool asc_order,
const reply_callback_t& reply_callback);
697 client& georadiusbymember(
const std::string& key,
const std::string& member,
double radius,
geo_unit unit,
bool with_coord,
bool with_dist,
bool with_hash,
bool asc_order, std::size_t count,
const reply_callback_t& reply_callback);
698 client& georadiusbymember(
const std::string& key,
const std::string& member,
double radius,
geo_unit unit,
bool with_coord,
bool with_dist,
bool with_hash,
bool asc_order,
const std::string& store_key,
const reply_callback_t& reply_callback);
699 client& georadiusbymember(
const std::string& key,
const std::string& member,
double radius,
geo_unit unit,
bool with_coord,
bool with_dist,
bool with_hash,
bool asc_order,
const std::string& store_key,
const std::string& storedist_key,
const reply_callback_t& reply_callback);
700 client& georadiusbymember(
const std::string& key,
const std::string& member,
double radius,
geo_unit unit,
bool with_coord,
bool with_dist,
bool with_hash,
bool asc_order, std::size_t count,
const std::string& store_key,
const reply_callback_t& reply_callback);
701 client& georadiusbymember(
const std::string& key,
const std::string& member,
double radius,
geo_unit unit,
bool with_coord,
bool with_dist,
bool with_hash,
bool asc_order, std::size_t count,
const std::string& store_key,
const std::string& storedist_key,
const reply_callback_t& reply_callback);
702 std::future<reply> georadiusbymember(
const std::string& key,
const std::string& member,
double radius,
geo_unit unit,
bool with_coord =
false,
bool with_dist =
false,
bool with_hash =
false,
bool asc_order =
false, std::size_t count = 0,
const std::string& store_key =
"",
const std::string& storedist_key =
"");
704 client&
get(
const std::string& key,
const reply_callback_t& reply_callback);
705 std::future<reply>
get(
const std::string& key);
707 client& getbit(
const std::string& key,
int offset,
const reply_callback_t& reply_callback);
708 std::future<reply> getbit(
const std::string& key,
int offset);
710 client& getrange(
const std::string& key,
int start,
int end,
const reply_callback_t& reply_callback);
711 std::future<reply> getrange(
const std::string& key,
int start,
int end);
713 client& getset(
const std::string& key,
const std::string& val,
const reply_callback_t& reply_callback);
714 std::future<reply> getset(
const std::string& key,
const std::string& val);
716 client& hdel(
const std::string& key,
const std::vector<std::string>& fields,
const reply_callback_t& reply_callback);
717 std::future<reply> hdel(
const std::string& key,
const std::vector<std::string>& fields);
719 client& hexists(
const std::string& key,
const std::string& field,
const reply_callback_t& reply_callback);
720 std::future<reply> hexists(
const std::string& key,
const std::string& field);
722 client& hget(
const std::string& key,
const std::string& field,
const reply_callback_t& reply_callback);
723 std::future<reply> hget(
const std::string& key,
const std::string& field);
725 client& hgetall(
const std::string& key,
const reply_callback_t& reply_callback);
726 std::future<reply> hgetall(
const std::string& key);
728 client& hincrby(
const std::string& key,
const std::string& field,
int incr,
const reply_callback_t& reply_callback);
729 std::future<reply> hincrby(
const std::string& key,
const std::string& field,
int incr);
731 client& hincrbyfloat(
const std::string& key,
const std::string& field,
float incr,
const reply_callback_t& reply_callback);
732 std::future<reply> hincrbyfloat(
const std::string& key,
const std::string& field,
float incr);
734 client& hkeys(
const std::string& key,
const reply_callback_t& reply_callback);
735 std::future<reply> hkeys(
const std::string& key);
737 client& hlen(
const std::string& key,
const reply_callback_t& reply_callback);
738 std::future<reply> hlen(
const std::string& key);
740 client& hmget(
const std::string& key,
const std::vector<std::string>& fields,
const reply_callback_t& reply_callback);
741 std::future<reply> hmget(
const std::string& key,
const std::vector<std::string>& fields);
743 client& hmset(
const std::string& key,
const std::vector<std::pair<std::string, std::string>>& field_val,
const reply_callback_t& reply_callback);
744 std::future<reply> hmset(
const std::string& key,
const std::vector<std::pair<std::string, std::string>>& field_val);
746 client& hscan(
const std::string& key, std::size_t cursor,
const reply_callback_t& reply_callback);
747 std::future<reply> hscan(
const std::string& key, std::size_t cursor);
749 client& hscan(
const std::string& key, std::size_t cursor,
const std::string& pattern,
const reply_callback_t& reply_callback);
750 std::future<reply> hscan(
const std::string& key, std::size_t cursor,
const std::string& pattern);
752 client& hscan(
const std::string& key, std::size_t cursor, std::size_t count,
const reply_callback_t& reply_callback);
753 std::future<reply> hscan(
const std::string& key, std::size_t cursor, std::size_t count);
755 client& hscan(
const std::string& key, std::size_t cursor,
const std::string& pattern, std::size_t count,
const reply_callback_t& reply_callback);
756 std::future<reply> hscan(
const std::string& key, std::size_t cursor,
const std::string& pattern, std::size_t count);
758 client& hset(
const std::string& key,
const std::string& field,
const std::string& value,
const reply_callback_t& reply_callback);
759 std::future<reply> hset(
const std::string& key,
const std::string& field,
const std::string& value);
761 client& hsetnx(
const std::string& key,
const std::string& field,
const std::string& value,
const reply_callback_t& reply_callback);
762 std::future<reply> hsetnx(
const std::string& key,
const std::string& field,
const std::string& value);
764 client& hstrlen(
const std::string& key,
const std::string& field,
const reply_callback_t& reply_callback);
765 std::future<reply> hstrlen(
const std::string& key,
const std::string& field);
767 client& hvals(
const std::string& key,
const reply_callback_t& reply_callback);
768 std::future<reply> hvals(
const std::string& key);
770 client& incr(
const std::string& key,
const reply_callback_t& reply_callback);
771 std::future<reply> incr(
const std::string& key);
773 client& incrby(
const std::string& key,
int incr,
const reply_callback_t& reply_callback);
774 std::future<reply> incrby(
const std::string& key,
int incr);
776 client& incrbyfloat(
const std::string& key,
float incr,
const reply_callback_t& reply_callback);
777 std::future<reply> incrbyfloat(
const std::string& key,
float incr);
779 client& info(
const reply_callback_t& reply_callback);
780 client& info(
const std::string& section,
const reply_callback_t& reply_callback);
781 std::future<reply> info(
const std::string& section =
"default");
783 client& keys(
const std::string& pattern,
const reply_callback_t& reply_callback);
784 std::future<reply> keys(
const std::string& pattern);
786 client& lastsave(
const reply_callback_t& reply_callback);
787 std::future<reply> lastsave();
789 client& lindex(
const std::string& key,
int index,
const reply_callback_t& reply_callback);
790 std::future<reply> lindex(
const std::string& key,
int index);
792 client& linsert(
const std::string& key,
const std::string& before_after,
const std::string& pivot,
const std::string& value,
const reply_callback_t& reply_callback);
793 std::future<reply> linsert(
const std::string& key,
const std::string& before_after,
const std::string& pivot,
const std::string& value);
795 client& llen(
const std::string& key,
const reply_callback_t& reply_callback);
796 std::future<reply> llen(
const std::string& key);
798 client& lpop(
const std::string& key,
const reply_callback_t& reply_callback);
799 std::future<reply> lpop(
const std::string& key);
801 client& lpush(
const std::string& key,
const std::vector<std::string>& values,
const reply_callback_t& reply_callback);
802 std::future<reply> lpush(
const std::string& key,
const std::vector<std::string>& values);
804 client& lpushx(
const std::string& key,
const std::string& value,
const reply_callback_t& reply_callback);
805 std::future<reply> lpushx(
const std::string& key,
const std::string& value);
807 client& lrange(
const std::string& key,
int start,
int stop,
const reply_callback_t& reply_callback);
808 std::future<reply> lrange(
const std::string& key,
int start,
int stop);
810 client& lrem(
const std::string& key,
int count,
const std::string& value,
const reply_callback_t& reply_callback);
811 std::future<reply> lrem(
const std::string& key,
int count,
const std::string& value);
813 client& lset(
const std::string& key,
int index,
const std::string& value,
const reply_callback_t& reply_callback);
814 std::future<reply> lset(
const std::string& key,
int index,
const std::string& value);
816 client& ltrim(
const std::string& key,
int start,
int stop,
const reply_callback_t& reply_callback);
817 std::future<reply> ltrim(
const std::string& key,
int start,
int stop);
819 client& mget(
const std::vector<std::string>& keys,
const reply_callback_t& reply_callback);
820 std::future<reply> mget(
const std::vector<std::string>& keys);
822 client& migrate(
const std::string& host,
int port,
const std::string& key,
const std::string& dest_db,
int timeout,
const reply_callback_t& reply_callback);
823 client& migrate(
const std::string& host,
int port,
const std::string& key,
const std::string& dest_db,
int timeout,
bool copy,
bool replace,
const std::vector<std::string>& keys,
const reply_callback_t& reply_callback);
824 std::future<reply> migrate(
const std::string& host,
int port,
const std::string& key,
const std::string& dest_db,
int timeout,
bool copy =
false,
bool replace =
false,
const std::vector<std::string>& keys = {});
826 client& monitor(
const reply_callback_t& reply_callback);
827 std::future<reply> monitor();
829 client& move(
const std::string& key,
const std::string& db,
const reply_callback_t& reply_callback);
830 std::future<reply> move(
const std::string& key,
const std::string& db);
832 client& mset(
const std::vector<std::pair<std::string, std::string>>& key_vals,
const reply_callback_t& reply_callback);
833 std::future<reply> mset(
const std::vector<std::pair<std::string, std::string>>& key_vals);
835 client& msetnx(
const std::vector<std::pair<std::string, std::string>>& key_vals,
const reply_callback_t& reply_callback);
836 std::future<reply> msetnx(
const std::vector<std::pair<std::string, std::string>>& key_vals);
838 client& multi(
const reply_callback_t& reply_callback);
839 std::future<reply> multi();
841 client& object(
const std::string& subcommand,
const std::vector<std::string>& args,
const reply_callback_t& reply_callback);
842 std::future<reply> object(
const std::string& subcommand,
const std::vector<std::string>& args);
844 client& persist(
const std::string& key,
const reply_callback_t& reply_callback);
845 std::future<reply> persist(
const std::string& key);
847 client& pexpire(
const std::string& key,
int milliseconds,
const reply_callback_t& reply_callback);
848 std::future<reply> pexpire(
const std::string& key,
int milliseconds);
850 client& pexpireat(
const std::string& key,
int milliseconds_timestamp,
const reply_callback_t& reply_callback);
851 std::future<reply> pexpireat(
const std::string& key,
int milliseconds_timestamp);
853 client& pfadd(
const std::string& key,
const std::vector<std::string>& elements,
const reply_callback_t& reply_callback);
854 std::future<reply> pfadd(
const std::string& key,
const std::vector<std::string>& elements);
856 client& pfcount(
const std::vector<std::string>& keys,
const reply_callback_t& reply_callback);
857 std::future<reply> pfcount(
const std::vector<std::string>& keys);
859 client& pfmerge(
const std::string& destkey,
const std::vector<std::string>& sourcekeys,
const reply_callback_t& reply_callback);
860 std::future<reply> pfmerge(
const std::string& destkey,
const std::vector<std::string>& sourcekeys);
862 client& ping(
const reply_callback_t& reply_callback);
863 std::future<reply> ping();
865 client& ping(
const std::string& message,
const reply_callback_t& reply_callback);
866 std::future<reply> ping(
const std::string& message);
868 client& psetex(
const std::string& key,
int milliseconds,
const std::string& val,
const reply_callback_t& reply_callback);
869 std::future<reply> psetex(
const std::string& key,
int milliseconds,
const std::string& val);
871 client& publish(
const std::string& channel,
const std::string& message,
const reply_callback_t& reply_callback);
872 std::future<reply> publish(
const std::string& channel,
const std::string& message);
874 client& pubsub(
const std::string& subcommand,
const std::vector<std::string>& args,
const reply_callback_t& reply_callback);
875 std::future<reply> pubsub(
const std::string& subcommand,
const std::vector<std::string>& args);
877 client& pttl(
const std::string& key,
const reply_callback_t& reply_callback);
878 std::future<reply> pttl(
const std::string& key);
880 client& quit(
const reply_callback_t& reply_callback);
881 std::future<reply> quit();
883 client& randomkey(
const reply_callback_t& reply_callback);
884 std::future<reply> randomkey();
886 client& readonly(
const reply_callback_t& reply_callback);
887 std::future<reply> readonly();
889 client& readwrite(
const reply_callback_t& reply_callback);
890 std::future<reply> readwrite();
892 client& rename(
const std::string& key,
const std::string& newkey,
const reply_callback_t& reply_callback);
893 std::future<reply> rename(
const std::string& key,
const std::string& newkey);
895 client& renamenx(
const std::string& key,
const std::string& newkey,
const reply_callback_t& reply_callback);
896 std::future<reply> renamenx(
const std::string& key,
const std::string& newkey);
898 client& restore(
const std::string& key,
int ttl,
const std::string& serialized_value,
const reply_callback_t& reply_callback);
899 std::future<reply> restore(
const std::string& key,
int ttl,
const std::string& serialized_value);
901 client& restore(
const std::string& key,
int ttl,
const std::string& serialized_value,
const std::string& replace,
const reply_callback_t& reply_callback);
902 std::future<reply> restore(
const std::string& key,
int ttl,
const std::string& serialized_value,
const std::string& replace);
904 client& role(
const reply_callback_t& reply_callback);
905 std::future<reply> role();
907 client& rpop(
const std::string& key,
const reply_callback_t& reply_callback);
908 std::future<reply> rpop(
const std::string& key);
910 client& rpoplpush(
const std::string& source,
const std::string& destination,
const reply_callback_t& reply_callback);
911 std::future<reply> rpoplpush(
const std::string& src,
const std::string& dst);
913 client& rpush(
const std::string& key,
const std::vector<std::string>& values,
const reply_callback_t& reply_callback);
914 std::future<reply> rpush(
const std::string& key,
const std::vector<std::string>& values);
916 client& rpushx(
const std::string& key,
const std::string& value,
const reply_callback_t& reply_callback);
917 std::future<reply> rpushx(
const std::string& key,
const std::string& value);
919 client& sadd(
const std::string& key,
const std::vector<std::string>& members,
const reply_callback_t& reply_callback);
920 std::future<reply> sadd(
const std::string& key,
const std::vector<std::string>& members);
922 client& save(
const reply_callback_t& reply_callback);
923 std::future<reply> save();
925 client& scan(std::size_t cursor,
const reply_callback_t& reply_callback);
926 std::future<reply> scan(std::size_t cursor);
928 client& scan(std::size_t cursor,
const std::string& pattern,
const reply_callback_t& reply_callback);
929 std::future<reply> scan(std::size_t cursor,
const std::string& pattern);
931 client& scan(std::size_t cursor, std::size_t count,
const reply_callback_t& reply_callback);
932 std::future<reply> scan(std::size_t cursor, std::size_t count);
934 client& scan(std::size_t cursor,
const std::string& pattern, std::size_t count,
const reply_callback_t& reply_callback);
935 std::future<reply> scan(std::size_t cursor,
const std::string& pattern, std::size_t count);
937 client& scard(
const std::string& key,
const reply_callback_t& reply_callback);
938 std::future<reply> scard(
const std::string& key);
940 client& script_debug(
const std::string& mode,
const reply_callback_t& reply_callback);
941 std::future<reply> script_debug(
const std::string& mode);
943 client& script_exists(
const std::vector<std::string>& scripts,
const reply_callback_t& reply_callback);
944 std::future<reply> script_exists(
const std::vector<std::string>& scripts);
946 client& script_flush(
const reply_callback_t& reply_callback);
947 std::future<reply> script_flush();
949 client& script_kill(
const reply_callback_t& reply_callback);
950 std::future<reply> script_kill();
952 client& script_load(
const std::string& script,
const reply_callback_t& reply_callback);
953 std::future<reply> script_load(
const std::string& script);
955 client& sdiff(
const std::vector<std::string>& keys,
const reply_callback_t& reply_callback);
956 std::future<reply> sdiff(
const std::vector<std::string>& keys);
958 client& sdiffstore(
const std::string& destination,
const std::vector<std::string>& keys,
const reply_callback_t& reply_callback);
959 std::future<reply> sdiffstore(
const std::string& dst,
const std::vector<std::string>& keys);
961 client& select(
int index,
const reply_callback_t& reply_callback);
962 std::future<reply> select(
int index);
964 client&
set(
const std::string& key,
const std::string& value,
const reply_callback_t& reply_callback);
965 std::future<reply>
set(
const std::string& key,
const std::string& value);
967 client& set_advanced(
const std::string& key,
const std::string& value,
const reply_callback_t& reply_callback);
968 client& set_advanced(
const std::string& key,
const std::string& value,
bool ex,
int ex_sec,
bool px,
int px_milli,
bool nx,
bool xx,
const reply_callback_t& reply_callback);
969 std::future<reply> set_advanced(
const std::string& key,
const std::string& value,
bool ex =
false,
int ex_sec = 0,
bool px =
false,
int px_milli = 0,
bool nx =
false,
bool xx =
false);
971 client& setbit_(
const std::string& key,
int offset,
const std::string& value,
const reply_callback_t& reply_callback);
972 std::future<reply> setbit_(
const std::string& key,
int offset,
const std::string& value);
974 client& setex(
const std::string& key,
int seconds,
const std::string& value,
const reply_callback_t& reply_callback);
975 std::future<reply> setex(
const std::string& key,
int seconds,
const std::string& value);
977 client& setnx(
const std::string& key,
const std::string& value,
const reply_callback_t& reply_callback);
978 std::future<reply> setnx(
const std::string& key,
const std::string& value);
980 client& setrange(
const std::string& key,
int offset,
const std::string& value,
const reply_callback_t& reply_callback);
981 std::future<reply> setrange(
const std::string& key,
int offset,
const std::string& value);
983 client& shutdown(
const reply_callback_t& reply_callback);
984 std::future<reply> shutdown();
986 client& shutdown(
const std::string& save,
const reply_callback_t& reply_callback);
987 std::future<reply> shutdown(
const std::string& save);
989 client& sinter(
const std::vector<std::string>& keys,
const reply_callback_t& reply_callback);
990 std::future<reply> sinter(
const std::vector<std::string>& keys);
992 client& sinterstore(
const std::string& destination,
const std::vector<std::string>& keys,
const reply_callback_t& reply_callback);
993 std::future<reply> sinterstore(
const std::string& dst,
const std::vector<std::string>& keys);
995 client& sismember(
const std::string& key,
const std::string& member,
const reply_callback_t& reply_callback);
996 std::future<reply> sismember(
const std::string& key,
const std::string& member);
998 client& slaveof(
const std::string& host,
int port,
const reply_callback_t& reply_callback);
999 std::future<reply> slaveof(
const std::string& host,
int port);
1001 client& slowlog(
const std::string subcommand,
const reply_callback_t& reply_callback);
1002 std::future<reply> slowlog(
const std::string& subcommand);
1004 client& slowlog(
const std::string subcommand,
const std::string& argument,
const reply_callback_t& reply_callback);
1005 std::future<reply> slowlog(
const std::string& subcommand,
const std::string& argument);
1007 client& smembers(
const std::string& key,
const reply_callback_t& reply_callback);
1008 std::future<reply> smembers(
const std::string& key);
1010 client& smove(
const std::string& source,
const std::string& destination,
const std::string& member,
const reply_callback_t& reply_callback);
1011 std::future<reply> smove(
const std::string& src,
const std::string& dst,
const std::string& member);
1013 client& sort(
const std::string& key,
const reply_callback_t& reply_callback);
1014 std::future<reply> sort(
const std::string& key);
1016 client& sort(
const std::string& key,
const std::vector<std::string>& get_patterns,
bool asc_order,
bool alpha,
const reply_callback_t& reply_callback);
1017 std::future<reply> sort(
const std::string& key,
const std::vector<std::string>& get_patterns,
bool asc_order,
bool alpha);
1019 client& sort(
const std::string& key, std::size_t offset, std::size_t count,
const std::vector<std::string>& get_patterns,
bool asc_order,
bool alpha,
const reply_callback_t& reply_callback);
1020 std::future<reply> sort(
const std::string& key, std::size_t offset, std::size_t count,
const std::vector<std::string>& get_patterns,
bool asc_order,
bool alpha);
1022 client& sort(
const std::string& key,
const std::string& by_pattern,
const std::vector<std::string>& get_patterns,
bool asc_order,
bool alpha,
const reply_callback_t& reply_callback);
1023 std::future<reply> sort(
const std::string& key,
const std::string& by_pattern,
const std::vector<std::string>& get_patterns,
bool asc_order,
bool alpha);
1025 client& sort(
const std::string& key,
const std::vector<std::string>& get_patterns,
bool asc_order,
bool alpha,
const std::string& store_dest,
const reply_callback_t& reply_callback);
1026 std::future<reply> sort(
const std::string& key,
const std::vector<std::string>& get_patterns,
bool asc_order,
bool alpha,
const std::string& store_dest);
1028 client& sort(
const std::string& key, std::size_t offset, std::size_t count,
const std::vector<std::string>& get_patterns,
bool asc_order,
bool alpha,
const std::string& store_dest,
const reply_callback_t& reply_callback);
1029 std::future<reply> sort(
const std::string& key, std::size_t offset, std::size_t count,
const std::vector<std::string>& get_patterns,
bool asc_order,
bool alpha,
const std::string& store_dest);
1031 client& sort(
const std::string& key,
const std::string& by_pattern,
const std::vector<std::string>& get_patterns,
bool asc_order,
bool alpha,
const std::string& store_dest,
const reply_callback_t& reply_callback);
1032 std::future<reply> sort(
const std::string& key,
const std::string& by_pattern,
const std::vector<std::string>& get_patterns,
bool asc_order,
bool alpha,
const std::string& store_dest);
1034 client& sort(
const std::string& key,
const std::string& by_pattern, std::size_t offset, std::size_t count,
const std::vector<std::string>& get_patterns,
bool asc_order,
bool alpha,
const reply_callback_t& reply_callback);
1035 std::future<reply> sort(
const std::string& key,
const std::string& by_pattern, std::size_t offset, std::size_t count,
const std::vector<std::string>& get_patterns,
bool asc_order,
bool alpha);
1037 client& sort(
const std::string& key,
const std::string& by_pattern, std::size_t offset, std::size_t count,
const std::vector<std::string>& get_patterns,
bool asc_order,
bool alpha,
const std::string& store_dest,
const reply_callback_t& reply_callback);
1038 std::future<reply> sort(
const std::string& key,
const std::string& by_pattern, std::size_t offset, std::size_t count,
const std::vector<std::string>& get_patterns,
bool asc_order,
bool alpha,
const std::string& store_dest);
1040 client& spop(
const std::string& key,
const reply_callback_t& reply_callback);
1041 std::future<reply> spop(
const std::string& key);
1043 client& spop(
const std::string& key,
int count,
const reply_callback_t& reply_callback);
1044 std::future<reply> spop(
const std::string& key,
int count);
1046 client& srandmember(
const std::string& key,
const reply_callback_t& reply_callback);
1047 std::future<reply> srandmember(
const std::string& key);
1049 client& srandmember(
const std::string& key,
int count,
const reply_callback_t& reply_callback);
1050 std::future<reply> srandmember(
const std::string& key,
int count);
1052 client& srem(
const std::string& key,
const std::vector<std::string>& members,
const reply_callback_t& reply_callback);
1053 std::future<reply> srem(
const std::string& key,
const std::vector<std::string>& members);
1055 client& sscan(
const std::string& key, std::size_t cursor,
const reply_callback_t& reply_callback);
1056 std::future<reply> sscan(
const std::string& key, std::size_t cursor);
1058 client& sscan(
const std::string& key, std::size_t cursor,
const std::string& pattern,
const reply_callback_t& reply_callback);
1059 std::future<reply> sscan(
const std::string& key, std::size_t cursor,
const std::string& pattern);
1061 client& sscan(
const std::string& key, std::size_t cursor, std::size_t count,
const reply_callback_t& reply_callback);
1062 std::future<reply> sscan(
const std::string& key, std::size_t cursor, std::size_t count);
1064 client& sscan(
const std::string& key, std::size_t cursor,
const std::string& pattern, std::size_t count,
const reply_callback_t& reply_callback);
1065 std::future<reply> sscan(
const std::string& key, std::size_t cursor,
const std::string& pattern, std::size_t count);
1067 client& strlen(
const std::string& key,
const reply_callback_t& reply_callback);
1068 std::future<reply> strlen(
const std::string& key);
1070 client& sunion(
const std::vector<std::string>& keys,
const reply_callback_t& reply_callback);
1071 std::future<reply> sunion(
const std::vector<std::string>& keys);
1073 client& sunionstore(
const std::string& destination,
const std::vector<std::string>& keys,
const reply_callback_t& reply_callback);
1074 std::future<reply> sunionstore(
const std::string& dst,
const std::vector<std::string>& keys);
1076 client& sync(
const reply_callback_t& reply_callback);
1077 std::future<reply> sync();
1079 client& time(
const reply_callback_t& reply_callback);
1080 std::future<reply> time();
1082 client& ttl(
const std::string& key,
const reply_callback_t& reply_callback);
1083 std::future<reply> ttl(
const std::string& key);
1085 client& type(
const std::string& key,
const reply_callback_t& reply_callback);
1086 std::future<reply> type(
const std::string& key);
1088 client& unwatch(
const reply_callback_t& reply_callback);
1089 std::future<reply> unwatch();
1091 client& wait(
int numslaves,
int timeout,
const reply_callback_t& reply_callback);
1092 std::future<reply> wait(
int numslaves,
int timeout);
1094 client& watch(
const std::vector<std::string>& keys,
const reply_callback_t& reply_callback);
1095 std::future<reply> watch(
const std::vector<std::string>& keys);
1097 client& zadd(
const std::string& key,
const std::vector<std::string>& options,
const std::multimap<std::string, std::string>& score_members,
const reply_callback_t& reply_callback);
1098 std::future<reply> zadd(
const std::string& key,
const std::vector<std::string>& options,
const std::multimap<std::string, std::string>& score_members);
1100 client& zcard(
const std::string& key,
const reply_callback_t& reply_callback);
1101 std::future<reply> zcard(
const std::string& key);
1103 client& zcount(
const std::string& key,
int min,
int max,
const reply_callback_t& reply_callback);
1104 std::future<reply> zcount(
const std::string& key,
int min,
int max);
1106 client& zcount(
const std::string& key,
double min,
double max,
const reply_callback_t& reply_callback);
1107 std::future<reply> zcount(
const std::string& key,
double min,
double max);
1109 client& zcount(
const std::string& key,
const std::string& min,
const std::string& max,
const reply_callback_t& reply_callback);
1110 std::future<reply> zcount(
const std::string& key,
const std::string& min,
const std::string& max);
1112 client& zincrby(
const std::string& key,
int incr,
const std::string& member,
const reply_callback_t& reply_callback);
1113 std::future<reply> zincrby(
const std::string& key,
int incr,
const std::string& member);
1115 client& zincrby(
const std::string& key,
double incr,
const std::string& member,
const reply_callback_t& reply_callback);
1116 std::future<reply> zincrby(
const std::string& key,
double incr,
const std::string& member);
1118 client& zincrby(
const std::string& key,
const std::string& incr,
const std::string& member,
const reply_callback_t& reply_callback);
1119 std::future<reply> zincrby(
const std::string& key,
const std::string& incr,
const std::string& member);
1121 client& zinterstore(
const std::string& destination, std::size_t numkeys,
const std::vector<std::string>& keys,
const std::vector<std::size_t> weights,
aggregate_method method,
const reply_callback_t& reply_callback);
1122 std::future<reply> zinterstore(
const std::string& destination, std::size_t numkeys,
const std::vector<std::string>& keys,
const std::vector<std::size_t> weights,
aggregate_method method);
1124 client& zlexcount(
const std::string& key,
int min,
int max,
const reply_callback_t& reply_callback);
1125 std::future<reply> zlexcount(
const std::string& key,
int min,
int max);
1127 client& zlexcount(
const std::string& key,
double min,
double max,
const reply_callback_t& reply_callback);
1128 std::future<reply> zlexcount(
const std::string& key,
double min,
double max);
1130 client& zlexcount(
const std::string& key,
const std::string& min,
const std::string& max,
const reply_callback_t& reply_callback);
1131 std::future<reply> zlexcount(
const std::string& key,
const std::string& min,
const std::string& max);
1133 client& zrange(
const std::string& key,
int start,
int stop,
const reply_callback_t& reply_callback);
1134 client& zrange(
const std::string& key,
int start,
int stop,
bool withscores,
const reply_callback_t& reply_callback);
1135 std::future<reply> zrange(
const std::string& key,
int start,
int stop,
bool withscores =
false);
1137 client& zrange(
const std::string& key,
double start,
double stop,
const reply_callback_t& reply_callback);
1138 client& zrange(
const std::string& key,
double start,
double stop,
bool withscores,
const reply_callback_t& reply_callback);
1139 std::future<reply> zrange(
const std::string& key,
double start,
double stop,
bool withscores =
false);
1141 client& zrange(
const std::string& key,
const std::string& start,
const std::string& stop,
const reply_callback_t& reply_callback);
1142 client& zrange(
const std::string& key,
const std::string& start,
const std::string& stop,
bool withscores,
const reply_callback_t& reply_callback);
1143 std::future<reply> zrange(
const std::string& key,
const std::string& start,
const std::string& stop,
bool withscores =
false);
1145 client& zrangebylex(
const std::string& key,
int min,
int max,
const reply_callback_t& reply_callback);
1146 client& zrangebylex(
const std::string& key,
int min,
int max,
bool withscores,
const reply_callback_t& reply_callback);
1147 std::future<reply> zrangebylex(
const std::string& key,
int min,
int max,
bool withscores =
false);
1149 client& zrangebylex(
const std::string& key,
double min,
double max,
const reply_callback_t& reply_callback);
1150 client& zrangebylex(
const std::string& key,
double min,
double max,
bool withscores,
const reply_callback_t& reply_callback);
1151 std::future<reply> zrangebylex(
const std::string& key,
double min,
double max,
bool withscores =
false);
1153 client& zrangebylex(
const std::string& key,
const std::string& min,
const std::string& max,
const reply_callback_t& reply_callback);
1154 client& zrangebylex(
const std::string& key,
const std::string& min,
const std::string& max,
bool withscores,
const reply_callback_t& reply_callback);
1155 std::future<reply> zrangebylex(
const std::string& key,
const std::string& min,
const std::string& max,
bool withscores =
false);
1157 client& zrangebylex(
const std::string& key,
int min,
int max, std::size_t offset, std::size_t count,
const reply_callback_t& reply_callback);
1158 client& zrangebylex(
const std::string& key,
int min,
int max, std::size_t offset, std::size_t count,
bool withscores,
const reply_callback_t& reply_callback);
1159 std::future<reply> zrangebylex(
const std::string& key,
int min,
int max, std::size_t offset, std::size_t count,
bool withscores =
false);
1161 client& zrangebylex(
const std::string& key,
double min,
double max, std::size_t offset, std::size_t count,
const reply_callback_t& reply_callback);
1162 client& zrangebylex(
const std::string& key,
double min,
double max, std::size_t offset, std::size_t count,
bool withscores,
const reply_callback_t& reply_callback);
1163 std::future<reply> zrangebylex(
const std::string& key,
double min,
double max, std::size_t offset, std::size_t count,
bool withscores =
false);
1165 client& zrangebylex(
const std::string& key,
const std::string& min,
const std::string& max, std::size_t offset, std::size_t count,
const reply_callback_t& reply_callback);
1166 client& zrangebylex(
const std::string& key,
const std::string& min,
const std::string& max, std::size_t offset, std::size_t count,
bool withscores,
const reply_callback_t& reply_callback);
1167 std::future<reply> zrangebylex(
const std::string& key,
const std::string& min,
const std::string& max, std::size_t offset, std::size_t count,
bool withscores =
false);
1169 client& zrangebyscore(
const std::string& key,
int min,
int max,
const reply_callback_t& reply_callback);
1170 client& zrangebyscore(
const std::string& key,
int min,
int max,
bool withscores,
const reply_callback_t& reply_callback);
1171 std::future<reply> zrangebyscore(
const std::string& key,
int min,
int max,
bool withscores =
false);
1173 client& zrangebyscore(
const std::string& key,
double min,
double max,
const reply_callback_t& reply_callback);
1174 client& zrangebyscore(
const std::string& key,
double min,
double max,
bool withscores,
const reply_callback_t& reply_callback);
1175 std::future<reply> zrangebyscore(
const std::string& key,
double min,
double max,
bool withscores =
false);
1177 client& zrangebyscore(
const std::string& key,
const std::string& min,
const std::string& max,
const reply_callback_t& reply_callback);
1178 client& zrangebyscore(
const std::string& key,
const std::string& min,
const std::string& max,
bool withscores,
const reply_callback_t& reply_callback);
1179 std::future<reply> zrangebyscore(
const std::string& key,
const std::string& min,
const std::string& max,
bool withscores =
false);
1181 client& zrangebyscore(
const std::string& key,
int min,
int max, std::size_t offset, std::size_t count,
const reply_callback_t& reply_callback);
1182 client& zrangebyscore(
const std::string& key,
int min,
int max, std::size_t offset, std::size_t count,
bool withscores,
const reply_callback_t& reply_callback);
1183 std::future<reply> zrangebyscore(
const std::string& key,
int min,
int max, std::size_t offset, std::size_t count,
bool withscores =
false);
1185 client& zrangebyscore(
const std::string& key,
double min,
double max, std::size_t offset, std::size_t count,
const reply_callback_t& reply_callback);
1186 client& zrangebyscore(
const std::string& key,
double min,
double max, std::size_t offset, std::size_t count,
bool withscores,
const reply_callback_t& reply_callback);
1187 std::future<reply> zrangebyscore(
const std::string& key,
double min,
double max, std::size_t offset, std::size_t count,
bool withscores =
false);
1189 client& zrangebyscore(
const std::string& key,
const std::string& min,
const std::string& max, std::size_t offset, std::size_t count,
const reply_callback_t& reply_callback);
1190 client& zrangebyscore(
const std::string& key,
const std::string& min,
const std::string& max, std::size_t offset, std::size_t count,
bool withscores,
const reply_callback_t& reply_callback);
1191 std::future<reply> zrangebyscore(
const std::string& key,
const std::string& min,
const std::string& max, std::size_t offset, std::size_t count,
bool withscores =
false);
1193 client& zrank(
const std::string& key,
const std::string& member,
const reply_callback_t& reply_callback);
1194 std::future<reply> zrank(
const std::string& key,
const std::string& member);
1196 client& zrem(
const std::string& key,
const std::vector<std::string>& members,
const reply_callback_t& reply_callback);
1197 std::future<reply> zrem(
const std::string& key,
const std::vector<std::string>& members);
1199 client& zremrangebylex(
const std::string& key,
int min,
int max,
const reply_callback_t& reply_callback);
1200 std::future<reply> zremrangebylex(
const std::string& key,
int min,
int max);
1202 client& zremrangebylex(
const std::string& key,
double min,
double max,
const reply_callback_t& reply_callback);
1203 std::future<reply> zremrangebylex(
const std::string& key,
double min,
double max);
1205 client& zremrangebylex(
const std::string& key,
const std::string& min,
const std::string& max,
const reply_callback_t& reply_callback);
1206 std::future<reply> zremrangebylex(
const std::string& key,
const std::string& min,
const std::string& max);
1208 client& zremrangebyrank(
const std::string& key,
int start,
int stop,
const reply_callback_t& reply_callback);
1209 std::future<reply> zremrangebyrank(
const std::string& key,
int start,
int stop);
1211 client& zremrangebyrank(
const std::string& key,
double start,
double stop,
const reply_callback_t& reply_callback);
1212 std::future<reply> zremrangebyrank(
const std::string& key,
double start,
double stop);
1214 client& zremrangebyrank(
const std::string& key,
const std::string& start,
const std::string& stop,
const reply_callback_t& reply_callback);
1215 std::future<reply> zremrangebyrank(
const std::string& key,
const std::string& start,
const std::string& stop);
1217 client& zremrangebyscore(
const std::string& key,
int min,
int max,
const reply_callback_t& reply_callback);
1218 std::future<reply> zremrangebyscore(
const std::string& key,
int min,
int max);
1220 client& zremrangebyscore(
const std::string& key,
double min,
double max,
const reply_callback_t& reply_callback);
1221 std::future<reply> zremrangebyscore(
const std::string& key,
double min,
double max);
1223 client& zremrangebyscore(
const std::string& key,
const std::string& min,
const std::string& max,
const reply_callback_t& reply_callback);
1224 std::future<reply> zremrangebyscore(
const std::string& key,
const std::string& min,
const std::string& max);
1226 client& zrevrange(
const std::string& key,
int start,
int stop,
const reply_callback_t& reply_callback);
1227 client& zrevrange(
const std::string& key,
int start,
int stop,
bool withscores,
const reply_callback_t& reply_callback);
1228 std::future<reply> zrevrange(
const std::string& key,
int start,
int stop,
bool withscores =
false);
1230 client& zrevrange(
const std::string& key,
double start,
double stop,
const reply_callback_t& reply_callback);
1231 client& zrevrange(
const std::string& key,
double start,
double stop,
bool withscores,
const reply_callback_t& reply_callback);
1232 std::future<reply> zrevrange(
const std::string& key,
double start,
double stop,
bool withscores =
false);
1234 client& zrevrange(
const std::string& key,
const std::string& start,
const std::string& stop,
const reply_callback_t& reply_callback);
1235 client& zrevrange(
const std::string& key,
const std::string& start,
const std::string& stop,
bool withscores,
const reply_callback_t& reply_callback);
1236 std::future<reply> zrevrange(
const std::string& key,
const std::string& start,
const std::string& stop,
bool withscores =
false);
1238 client& zrevrangebylex(
const std::string& key,
int max,
int min,
const reply_callback_t& reply_callback);
1239 client& zrevrangebylex(
const std::string& key,
int max,
int min,
bool withscores,
const reply_callback_t& reply_callback);
1240 std::future<reply> zrevrangebylex(
const std::string& key,
int max,
int min,
bool withscores =
false);
1242 client& zrevrangebylex(
const std::string& key,
double max,
double min,
const reply_callback_t& reply_callback);
1243 client& zrevrangebylex(
const std::string& key,
double max,
double min,
bool withscores,
const reply_callback_t& reply_callback);
1244 std::future<reply> zrevrangebylex(
const std::string& key,
double max,
double min,
bool withscores =
false);
1246 client& zrevrangebylex(
const std::string& key,
const std::string& max,
const std::string& min,
const reply_callback_t& reply_callback);
1247 client& zrevrangebylex(
const std::string& key,
const std::string& max,
const std::string& min,
bool withscores,
const reply_callback_t& reply_callback);
1248 std::future<reply> zrevrangebylex(
const std::string& key,
const std::string& max,
const std::string& min,
bool withscores =
false);
1250 client& zrevrangebylex(
const std::string& key,
int max,
int min, std::size_t offset, std::size_t count,
const reply_callback_t& reply_callback);
1251 client& zrevrangebylex(
const std::string& key,
int max,
int min, std::size_t offset, std::size_t count,
bool withscores,
const reply_callback_t& reply_callback);
1252 std::future<reply> zrevrangebylex(
const std::string& key,
int max,
int min, std::size_t offset, std::size_t count,
bool withscores =
false);
1254 client& zrevrangebylex(
const std::string& key,
double max,
double min, std::size_t offset, std::size_t count,
const reply_callback_t& reply_callback);
1255 client& zrevrangebylex(
const std::string& key,
double max,
double min, std::size_t offset, std::size_t count,
bool withscores,
const reply_callback_t& reply_callback);
1256 std::future<reply> zrevrangebylex(
const std::string& key,
double max,
double min, std::size_t offset, std::size_t count,
bool withscores =
false);
1258 client& zrevrangebylex(
const std::string& key,
const std::string& max,
const std::string& min, std::size_t offset, std::size_t count,
const reply_callback_t& reply_callback);
1259 client& zrevrangebylex(
const std::string& key,
const std::string& max,
const std::string& min, std::size_t offset, std::size_t count,
bool withscores,
const reply_callback_t& reply_callback);
1260 std::future<reply> zrevrangebylex(
const std::string& key,
const std::string& max,
const std::string& min, std::size_t offset, std::size_t count,
bool withscores =
false);
1262 client& zrevrangebyscore(
const std::string& key,
int max,
int min,
const reply_callback_t& reply_callback);
1263 client& zrevrangebyscore(
const std::string& key,
int max,
int min,
bool withscores,
const reply_callback_t& reply_callback);
1264 std::future<reply> zrevrangebyscore(
const std::string& key,
int max,
int min,
bool withscores =
false);
1266 client& zrevrangebyscore(
const std::string& key,
double max,
double min,
const reply_callback_t& reply_callback);
1267 client& zrevrangebyscore(
const std::string& key,
double max,
double min,
bool withscores,
const reply_callback_t& reply_callback);
1268 std::future<reply> zrevrangebyscore(
const std::string& key,
double max,
double min,
bool withscores =
false);
1270 client& zrevrangebyscore(
const std::string& key,
const std::string& max,
const std::string& min,
const reply_callback_t& reply_callback);
1271 client& zrevrangebyscore(
const std::string& key,
const std::string& max,
const std::string& min,
bool withscores,
const reply_callback_t& reply_callback);
1272 std::future<reply> zrevrangebyscore(
const std::string& key,
const std::string& max,
const std::string& min,
bool withscores =
false);
1274 client& zrevrangebyscore(
const std::string& key,
int max,
int min, std::size_t offset, std::size_t count,
const reply_callback_t& reply_callback);
1275 client& zrevrangebyscore(
const std::string& key,
int max,
int min, std::size_t offset, std::size_t count,
bool withscores,
const reply_callback_t& reply_callback);
1276 std::future<reply> zrevrangebyscore(
const std::string& key,
int max,
int min, std::size_t offset, std::size_t count,
bool withscores =
false);
1278 client& zrevrangebyscore(
const std::string& key,
double max,
double min, std::size_t offset, std::size_t count,
const reply_callback_t& reply_callback);
1279 client& zrevrangebyscore(
const std::string& key,
double max,
double min, std::size_t offset, std::size_t count,
bool withscores,
const reply_callback_t& reply_callback);
1280 std::future<reply> zrevrangebyscore(
const std::string& key,
double max,
double min, std::size_t offset, std::size_t count,
bool withscores =
false);
1282 client& zrevrangebyscore(
const std::string& key,
const std::string& max,
const std::string& min, std::size_t offset, std::size_t count,
const reply_callback_t& reply_callback);
1283 client& zrevrangebyscore(
const std::string& key,
const std::string& max,
const std::string& min, std::size_t offset, std::size_t count,
bool withscores,
const reply_callback_t& reply_callback);
1284 std::future<reply> zrevrangebyscore(
const std::string& key,
const std::string& max,
const std::string& min, std::size_t offset, std::size_t count,
bool withscores =
false);
1286 client& zrevrank(
const std::string& key,
const std::string& member,
const reply_callback_t& reply_callback);
1287 std::future<reply> zrevrank(
const std::string& key,
const std::string& member);
1289 client& zscan(
const std::string& key, std::size_t cursor,
const reply_callback_t& reply_callback);
1290 std::future<reply> zscan(
const std::string& key, std::size_t cursor);
1292 client& zscan(
const std::string& key, std::size_t cursor,
const std::string& pattern,
const reply_callback_t& reply_callback);
1293 std::future<reply> zscan(
const std::string& key, std::size_t cursor,
const std::string& pattern);
1295 client& zscan(
const std::string& key, std::size_t cursor, std::size_t count,
const reply_callback_t& reply_callback);
1296 std::future<reply> zscan(
const std::string& key, std::size_t cursor, std::size_t count);
1298 client& zscan(
const std::string& key, std::size_t cursor,
const std::string& pattern, std::size_t count,
const reply_callback_t& reply_callback);
1299 std::future<reply> zscan(
const std::string& key, std::size_t cursor,
const std::string& pattern, std::size_t count);
1301 client& zscore(
const std::string& key,
const std::string& member,
const reply_callback_t& reply_callback);
1302 std::future<reply> zscore(
const std::string& key,
const std::string& member);
1304 client& zunionstore(
const std::string& destination, std::size_t numkeys,
const std::vector<std::string>& keys,
const std::vector<std::size_t> weights,
aggregate_method method,
const reply_callback_t& reply_callback);
1305 std::future<reply> zunionstore(
const std::string& destination, std::size_t numkeys,
const std::vector<std::string>& keys,
const std::vector<std::size_t> weights,
aggregate_method method);
1309 template <
typename T>
1310 typename std::enable_if<std::is_same<T, client_type>::value>::type
1311 client_kill_unpack_arg(std::vector<std::string>& redis_cmd, reply_callback_t&,
client_type type);
1313 template <
typename T>
1314 typename std::enable_if<std::is_same<T, bool>::value>::type
1315 client_kill_unpack_arg(std::vector<std::string>& redis_cmd, reply_callback_t&,
bool skip);
1317 template <
typename T>
1318 typename std::enable_if<std::is_integral<T>::value>::type
1319 client_kill_unpack_arg(std::vector<std::string>& redis_cmd, reply_callback_t&, uint64_t
id);
1321 template <
typename T>
1322 typename std::enable_if<std::is_class<T>::value>::type
1323 client_kill_unpack_arg(std::vector<std::string>&, reply_callback_t& reply_callback,
const T& cb);
1325 template <
typename T,
typename... Ts>
1327 client_kill_impl(std::vector<std::string>& redis_cmd, reply_callback_t&
reply,
const T& arg,
const Ts&... args);
1329 template <
typename T>
1331 client_kill_impl(std::vector<std::string>& redis_cmd, reply_callback_t&
reply,
const T& arg);
1335 client& sort(
const std::string& key,
const std::string& by_pattern,
bool limit, std::size_t offset, std::size_t count,
const std::vector<std::string>& get_patterns,
bool asc_order,
bool alpha,
const std::string& store_dest,
const reply_callback_t& reply_callback);
1338 client& zrevrangebyscore(
const std::string& key,
const std::string& max,
const std::string& min,
bool limit, std::size_t offset, std::size_t count,
bool withscores,
const reply_callback_t& reply_callback);
1341 client& zrangebyscore(
const std::string& key,
const std::string& min,
const std::string& max,
bool limit, std::size_t offset, std::size_t count,
bool withscores,
const reply_callback_t& reply_callback);
1344 client& zrevrangebylex(
const std::string& key,
const std::string& max,
const std::string& min,
bool limit, std::size_t offset, std::size_t count,
bool withscores,
const reply_callback_t& reply_callback);
1347 client& zrangebylex(
const std::string& key,
const std::string& min,
const std::string& max,
bool limit, std::size_t offset, std::size_t count,
bool withscores,
const reply_callback_t& reply_callback);
1368 void clear_callbacks(
void);
1374 void try_commit(
void);
1377 std::future<reply> exec_cmd(
const std::function<
client&(
const reply_callback_t&)>& f);
1383 struct command_request {
1384 std::vector<std::string> command;
1385 reply_callback_t callback;
1392 std::string m_redis_server;
1396 std::size_t m_redis_port = 0;
1400 std::string m_master_name;
1404 std::string m_password;
1408 int m_database_index = 0;
1423 std::uint32_t m_connect_timeout_msecs = 0;
1427 std::int32_t m_max_reconnects = 0;
1431 std::int32_t m_current_reconnect_attempts = 0;
1435 std::uint32_t m_reconnect_interval_msecs = 0;
1440 std::atomic_bool m_reconnecting;
1444 std::atomic_bool m_cancel;
1449 std::queue<command_request> m_commands;
1454 connect_callback_t m_connect_callback;
1459 std::mutex m_callbacks_mutex;
1464 std::condition_variable m_sync_condvar;
1469 std::atomic<unsigned int> m_callbacks_running;
1474 #include <cpp_redis/impl/client.ipp> Definition: redis_connection.hpp:45
std::future< reply > client_kill_future(const T, const Ts...)
Definition: client.ipp:122
Definition: client.hpp:48
client & operator=(const client &)=delete
assignment operator
Definition: client.hpp:411
void cancel_reconnect(void)
geo_unit
Definition: client.hpp:351
bitfield_operation_type operation_type
Definition: client.hpp:415
client & client_kill(const std::string &host, int port, const T &arg, const Ts &... args)
Definition: client.ipp:93
bitfield_operation_type
Definition: client.hpp:392
std::string aggregate_method_to_string(aggregate_method method) const
client & sync_commit(const std::chrono::duration< Rep, Period > &timeout)
Definition: client.hpp:217
std::string geo_unit_to_string(geo_unit unit) const
bool is_reconnecting(void) const
connect_state
Definition: client.hpp:71
std::function< void(reply &)> reply_callback_t
Definition: client.hpp:169
std::string type
Definition: client.hpp:420
std::string overflow_type_to_string(overflow_type type) const
void disconnect(bool wait_for_removal=false)
client & sync_commit(void)
client & send(const std::vector< std::string > &redis_cmd, const reply_callback_t &callback)
Definition: sentinel.hpp:39
std::string bitfield_operation_type_to_string(bitfield_operation_type operation) const
void clear_sentinels(void)
overflow_type overflow
Definition: client.hpp:435
void add_sentinel(const std::string &host, std::size_t port)
void connect(const std::string &host="127.0.0.1", std::size_t port=6379, const connect_callback_t &connect_callback=nullptr, std::uint32_t timeout_msecs=0, std::int32_t max_reconnects=0, std::uint32_t reconnect_interval_msecs=0)
const sentinel & get_sentinel(void) const
client_type
Definition: client.hpp:54
std::function< void(const std::string &host, std::size_t port, connect_state status)> connect_callback_t
Definition: client.hpp:106
int offset
Definition: client.hpp:425
overflow_type
Definition: client.hpp:372
int value
Definition: client.hpp:430
bool is_connected(void) const
Definition: array_builder.hpp:29
aggregate_method
Definition: client.hpp:331