diff --git a/classaedis_1_1experimental_1_1sync-members.html b/classaedis_1_1experimental_1_1sync-members.html new file mode 100644 index 00000000..ecf543c3 --- /dev/null +++ b/classaedis_1_1experimental_1_1sync-members.html @@ -0,0 +1,94 @@ + + + +
+ + + + +This is the complete list of members for aedis::experimental::sync< Connection >, including all inherited members.
+| exec(resp3::request const &req, ResponseAdapter adapter, boost::system::error_code &ec) | aedis::experimental::sync< Connection > | inline |
| exec(resp3::request const &req, ResponseAdapter adapter) | aedis::experimental::sync< Connection > | inline |
| sync(failover_config cfg=failover_config{}, connection_config_type conn_cfg=connection_config_type{}) | aedis::experimental::sync< Connection > | inline |
Synchronous wrapper over the conenction class. + More...
+ +#include <include/aedis/experimental/sync.hpp>
+Public Member Functions | |
| + | sync (failover_config cfg=failover_config{}, connection_config_type conn_cfg=connection_config_type{}) |
| Constructor. | |
| template<class ResponseAdapter > | |
| std::size_t | exec (resp3::request const &req, ResponseAdapter adapter) |
| Executes a command. More... | |
| template<class ResponseAdapter > | |
| std::size_t | exec (resp3::request const &req, ResponseAdapter adapter, boost::system::error_code &ec) |
| Executes a command. More... | |
Synchronous wrapper over the conenction class.
+This class offers a synchronous API on top of the connection class.
+| Connection | The connection class. Its executor will be rebound to an internal executor. |
+
|
+ +inline | +
+
|
+ +inline | +
This is the complete list of members for aedis::experimental::sync_wrapper< Connection >, including all inherited members.
+| exec(resp3::request const &req, ResponseAdapter adapter, boost::system::error_code &ec) | aedis::experimental::sync_wrapper< Connection > | inline |
| exec(resp3::request const &req, ResponseAdapter adapter) | aedis::experimental::sync_wrapper< Connection > | inline |
| sync_wrapper(config cfg=config{}) | aedis::experimental::sync_wrapper< Connection > | inline |
Blocking wrapper for the conenction class. + More...
+ +#include <include/aedis/experimental/sync_wrapper.hpp>
+Public Member Functions | |
| + | sync_wrapper (config cfg=config{}) |
| Constructor. | |
| template<class ResponseAdapter > | |
| std::size_t | exec (resp3::request const &req, ResponseAdapter adapter) |
| Executes a command. More... | |
| template<class ResponseAdapter > | |
| std::size_t | exec (resp3::request const &req, ResponseAdapter adapter, boost::system::error_code &ec) |
| Executes a command. More... | |
Blocking wrapper for the conenction class.
+This class offers a synchronous API on top of the connection class.
+ +Definition at line 71 of file sync_wrapper.hpp.
+
+
|
+ +inline | +
Executes a command.
+This function will block until execution completes.
+| req | The request. |
| adapter | The response adapter. |
| std::system_error | in case of error. |
Definition at line 147 of file sync_wrapper.hpp.
+ +
+
|
+ +inline | +
Executes a command.
+This function will block until execution completes.
+| req | The request. |
| adapter | The response adapter. |
| ec | Error code in case of error. |
Definition at line 113 of file sync_wrapper.hpp.
+ +: Support sentinel support as described in sentinel and sentinel-clients
+: Avoid conflicts between aedis::adapt and aedis::resp3::adapt.
+function.
+experimental::exec and receive_event functions to offer a thread safe and synchronous way of executing requests across threads. See intro_sync.cpp and subscriber_sync.cpp for examples.connection::async_read_push was renamed to async_receive_event.connection::async_receive_event is now being used to communicate internal events to the user, such as resolve, connect, push etc. For examples see subscriber.cpp and connection::event.aedis directory has been moved to include to look more similar to Boost libraries. Users should now replace -I/aedis-path with -I/aedis-path/include in the compiler flags.AUTH and HELLO commands are now sent automatically. This change was necessary to implement reconnection. The username and password used in AUTH should be provided by the user on connection::config.connection::enable_reconnect.connection::async_run(host, port) overload that was causing crashes on reconnection.any_io_executor on users.connection::async_receiver_event is not cancelled anymore when connection::async_run exits. This change makes user code simpler.connection::async_exec with host and port overload has been removed. Use the other connection::async_run overload.connection::async_run have been move to connection::config to better support authentication and failover.chat_room example.echo_server example.client::async_wait_for_data with make_parallel_group to launch operation.See the official github-pages for documentation: https://mzimbres.github.io/aedis
+This document benchmarks the performance of TCP echo servers I implemented in different languages using different Redis clients. The main motivations for choosing an echo server are
+I also imposed some constraints on the implementations
+First I tested a pure TCP echo server, i.e. one that sends the messages directly to the client without interacting with Redis. The result can be seen below
+
The tests were performed with a 1000 concurrent TCP connections on the localhost where latency is 0.07ms on average on my machine. On higher latency networks the difference among libraries is expected to decrease.
+The code used in the benchmarks can be found at
+This is similar to the echo server described above but messages are echoed by Redis and not by the echo-server itself, which acts as a proxy between the client and the Redis server. The results can be seen below
+
The tests were performed on a network where latency is 35ms on average, otherwise it uses the same number of TCP connections as the previous example.
+As the reader can see, the Libuv and the Rust test are not depicted in the graph, the reasons are
+The code used in the benchmarks can be found at
+ +Run one of the echo-server programs in one terminal and the echo-server-client in another.
+If your spot any performance improvement in any of the example or would like to include other clients, please open a PR and I will gladly merge it.
+This is the complete list of members for aedis::resp3::node< String >, including all inherited members.
+| aggregate_size | aedis::resp3::node< String > | |
| data_type | aedis::resp3::node< String > | |
| depth | aedis::resp3::node< String > | |
| value | aedis::resp3::node< String > |
A node in the response tree. + More...
+ +#include <include/aedis/resp3/node.hpp>
+Public Attributes | |
| +std::size_t | aggregate_size |
| The number of elements of an aggregate. | |
| +resp3::type | data_type |
| The RESP3 type of the data in this node. | |
| +std::size_t | depth |
| The depth of this node in the response tree. | |
| +String | value |
| The actual data. For aggregate types this is usually empty. | |
A node in the response tree.
+Redis responses are the pre-order view of the response tree (see https://en.wikipedia.org/wiki/Tree_traversal#Pre-order,_NLR).
+std::vector<node<std::string>>. | std::size_t aedis::resp3::node< String >::aggregate_size | +
| resp3::type aedis::resp3::node< String >::data_type | +
| std::size_t aedis::resp3::node< String >::depth | +
| String aedis::resp3::node< String >::value | +
: Support sentinel support as described in sentinel and sentinel-clients
+: Avoid conflicts between aedis::adapt and aedis::resp3::adapt.
+