libmemcached & C++

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;