LibMemcached один из клиентов реализующий протокол сервера кэширования в памяти memcached, который используется в распределенной базе данных MemcacheDB.
Memcached/MemcacheDB это хранилища типа ключ-значение, поэтому MemcacheDB является NoSQL базой данных.
LibMemcached предоставляет api как для Си, так и Cи++.
Api для C++ представлен в виде класса memcache::Memcache, который подключается через заголовочный файл
#include <libmemcached/memcached.hpp>
Небольшая ремарка по представлению ключ-значение. Ключ представлен обычной строкой(std::string), значение представляется в виде последовательности символов
Описание некоторых методов классов:
- Memcache (const std::string &config) конструктор, на вход строка конфигурации;
- Memcache (const std::string &hostname, in_port_t port) конструктор, на вход подается хост и порт сервера memcached/db;
- bool error (std::string &error_message) const, bool error () const получение информации об ошибке;
- bool setBehavior (memcached_behavior_t flag, uint64_t data) установить поведение, к примеру setBehavior(MEMCACHED_BEHAVIOR_NO_BLOCK,1);
- uint64_t getBehavior (memcached_behavior_t flag) получить поведение;
- bool configure (const std::string &configuration) задать конфигурацию;
- bool addServer (const std::string &server_name, in_port_t port) добавить сервер;
- bool add (const std::string &key, const std::vector<char> &value) добавить пару ключ-значение, если такой ключ уже имеется возвращает false;
- bool replace (const std::string &key, const std::vector< char > &value) заменяет значение по ключу, этот метод успешен только тогда, когда есть объект на сервере;
- bool set (const std::string &key, const std::vector<char> &value, time_t expiration, uint32_t flags) добавляет или перезаписывает значение по ключу. expiration вроде как определяет время жизни, flags дополнительные флаги;
- bool set (const std::string &key, const char *value, const size_t value_length, time_t expiration, uint32_t flags) то же самое, но вместо вектора передается const chat*;
- bool get (const std::string &key, std::vector<char> &ret_val) получить значение по ключу. Если значения нет, возвращает false;
Реклама