11#include <boost/asio.hpp>
15#include <aedis/src.hpp>
17namespace net = boost::asio;
18namespace resp3 = aedis::resp3;
22template <
class Adapter>
23auto exec(std::shared_ptr<connection> conn,
resp3::request const& req, Adapter adapter)
27 net::deferred([&]() { return conn->async_exec(req, adapter, net::deferred); }))
28 (net::use_future).get();
31auto logger = [](
auto const& ec)
32 { std::clog <<
"Run: " << ec.message() << std::endl; };
37 net::io_context ioc{1};
39 auto conn = std::make_shared<connection>(ioc);
40 net::ip::tcp::resolver resv{ioc};
41 auto const res = resv.resolve(
"127.0.0.1",
"6379");
42 net::connect(conn->next_layer(), res);
43 std::thread t{[conn, &ioc]() {
44 conn->async_run(logger);
53 std::tuple<aedis::ignore, std::string, aedis::ignore> resp;
54 exec(conn, req,
adapt(resp));
56 std::cout <<
"Response: " << std::get<1>(resp) << std::endl;
59 }
catch (std::exception
const& e) {
60 std::cerr << e.what() << std::endl;
A connection to the Redis server.
void push(std::string_view cmd, Ts const &... args)
Appends a new command to the end of the request.
basic_connection< boost::asio::ip::tcp::socket > connection
A connection that uses a boost::asio::ip::tcp::socket.
auto adapt(std::size_t max_read_size=(std::numeric_limits< std::size_t >::max)()) noexcept
Creates an adapter that ignores responses.