{"id":226,"date":"2014-12-16T17:42:11","date_gmt":"2014-12-16T17:42:11","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/want-know-what-your-memcached-servers-are-doing-tap-them\/"},"modified":"2014-12-16T17:42:11","modified_gmt":"2014-12-16T17:42:11","slug":"want-know-what-your-memcached-servers-are-doing-tap-them","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/es\/want-know-what-your-memcached-servers-are-doing-tap-them\/","title":{"rendered":"Want to know what your memcached servers are doing? Tap them."},"content":{"rendered":"<p>It is possible to dump parts of the cache by using \u201cstats dump &#8230;\u201d to get some of the keys in the cache (and then you can go ahead and fetch each value). Here is an example on how to do that: stats dump 1 10 xxxx get \u00a0Wouldn&#8217;t it be better if you could eavesdrop on the memcached server? People running memcached on Solaris can do this already by using DTrace. But it would be nice to create a solution that works for others as well. Dustin Sallings and I teamed up and started to to design an interface that would allow you to get a stream of notifications from your memcached server. Among the requirements for the solution were:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Engine neutral. People may have their own specialized memcached storage engines, and what good is a new interface if it cannot work with their specialized engines. This means that the protocol has to be extensible.<\/li>\n\n\n<li>Use the binary protocol for maximum portability. The binary protocol is unambiguous; hardware, operating system and programming language neutral. By using the binary protocol we can tap remote servers.<\/li>\n\n<\/ul>\n\n\n\n<p>The tap interface opens up a lot of possibilities for memcached software developers:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Observability \u2013 We can attach a tap client to the server and see when items are added\/modified\/deleted<\/li>\n\n\n<li>Replication \u2013 Why not let a memcached server listen for tap events from another server? Why stop with one? Let&#8217;s create a circle of\u00a0 10 servers and let them tap the next one in the circle (please note that this creates a window of inconsistency from the time you perform an operation on the first node until it is \u201creplicated\u201d throughout the circle).<\/li>\n\n\n<li>Persistence \u2013 This is one of the most popular requests I see these days. Instead of creating a specialized engine that does persistence, we can connect a tap stream that receives all of the mutation events from the memcached server and stores the data to a persistent media.<\/li>\n\n<\/ul>\n\n\n\n<p>So how does the Tap interface work? It works by taking advantage by the memcached engine implementation. In this implementation the memcached core is responsible for the protocol handling and network IO, and the engine is responsible for feeding the core with a stream of events. Let&#8217;s walk through an example: When the server receives a \u201cTAP Connect\u201d message from the client, the memcached core will try to get a tap stream from the storage engine by calling get_tap_iterator(). With the iterator in place, the memcached core will try to get the next event to send to the tap client whenever the socket is writable. If the engine doesn&#8217;t have any events to\u00a0send to the client, the iterator should return TAP_PAUSE (and call notify_io_complete to notify the core to start walking the iterator again). So how does the iterator look? At first glance you may think that it looks too complex, but let&#8217;s take a closer look at the prototype: \u00a0tap_event_t tap_iterator(ENGINE_HANDLE* handle, const void *cookie, item **item, void **engine_specific, uint16_t *nengine_specific, uint8_t *ttl, uint16_t *flags, uint32_t *seqno); The API documentation gives detailed information about each parameter, but I would like to highlight one of the parameters. The engine_specific parameter allows each storage engine to pass on extra information in each TAP message so that the receiving engine can recreate the event (e.g., this could be bucket information used by the bucket engine, or extra security information if you create a security aware engine). The memcached server is also capable of receiving TAP messages and passing them on to the storage engine. Whenever a TAP message is received, it will call the tap_notify function in the engine interface: \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ENGINE_ERROR_CODE tap_notify(ENGINE_HANDLE* handle, const void *cookie, \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 void *engine_specific, uint16_t nengine, uint8_t ttl, uint16_t tap_flags, \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 tap_event_t tap_event, uint32_t tap_seqno, const void *key, \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 size_t nkey, uint32_t flags, uint32_t exptime, uint64_t cas, \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 const void *data, size_t ndata); This sounds easy doesn&#8217;t it? If this sounds interesting you\u00a0should\u00a0check out the TAP project.<\/p>","protected":false},"excerpt":{"rendered":"<p>It is possible to dump parts of the cache by using \u201cstats dump &#8230;\u201d to get some of the keys in the cache (and then you can go ahead and fetch each value). Here is an example on how to do that: stats dump 1 10 xxxx get \u00a0Wouldn&#8217;t it be better if you could [&hellip;]<\/p>\n","protected":false},"author":14,"featured_media":18,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1],"tags":[],"ppma_author":[72],"class_list":["post-226","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.6 (Yoast SEO v27.6) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Want to know what your memcached servers are doing? Tap them. - The Couchbase Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.couchbase.com\/blog\/es\/want-know-what-your-memcached-servers-are-doing-tap-them\/\" \/>\n<meta property=\"og:locale\" content=\"es_MX\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Want to know what your memcached servers are doing? Tap them.\" \/>\n<meta property=\"og:description\" content=\"It is possible to dump parts of the cache by using \u201cstats dump &#8230;\u201d to get some of the keys in the cache (and then you can go ahead and fetch each value). Here is an example on how to do that: stats dump 1 10 xxxx get \u00a0Wouldn&#8217;t it be better if you could [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/es\/want-know-what-your-memcached-servers-are-doing-tap-them\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2014-12-16T17:42:11+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/5\/2026\/05\/couchbase-nosql-dbaas.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1800\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Trond Norbye, Senior Developer, Couchbase\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Trond Norbye, Senior Developer, Couchbase\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/want-know-what-your-memcached-servers-are-doing-tap-them\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/want-know-what-your-memcached-servers-are-doing-tap-them\\\/\"},\"author\":{\"name\":\"Trond Norbye, Senior Developer, Couchbase\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#\\\/schema\\\/person\\\/ef0f9ff42d878c2fc0ab3a685e96f36d\"},\"headline\":\"Want to know what your memcached servers are doing? Tap them.\",\"datePublished\":\"2014-12-16T17:42:11+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/want-know-what-your-memcached-servers-are-doing-tap-them\\\/\"},\"wordCount\":706,\"commentCount\":3,\"publisher\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/want-know-what-your-memcached-servers-are-doing-tap-them\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/5\\\/2026\\\/05\\\/couchbase-nosql-dbaas.png\",\"articleSection\":[\"Uncategorized\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/want-know-what-your-memcached-servers-are-doing-tap-them\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/want-know-what-your-memcached-servers-are-doing-tap-them\\\/\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/want-know-what-your-memcached-servers-are-doing-tap-them\\\/\",\"name\":\"Want to know what your memcached servers are doing? Tap them. - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/want-know-what-your-memcached-servers-are-doing-tap-them\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/want-know-what-your-memcached-servers-are-doing-tap-them\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/5\\\/2026\\\/05\\\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2014-12-16T17:42:11+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/want-know-what-your-memcached-servers-are-doing-tap-them\\\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/want-know-what-your-memcached-servers-are-doing-tap-them\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/want-know-what-your-memcached-servers-are-doing-tap-them\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/5\\\/2026\\\/05\\\/couchbase-nosql-dbaas.png\",\"contentUrl\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/5\\\/2026\\\/05\\\/couchbase-nosql-dbaas.png\",\"width\":1800,\"height\":630},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/want-know-what-your-memcached-servers-are-doing-tap-them\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Want to know what your memcached servers are doing? Tap them.\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/\",\"name\":\"The Couchbase Blog\",\"description\":\"Couchbase, the NoSQL Database\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/5\\\/2026\\\/06\\\/logo.svg\",\"contentUrl\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/5\\\/2026\\\/06\\\/logo.svg\",\"width\":\"1024\",\"height\":\"1024\",\"caption\":\"The Couchbase Blog\"},\"image\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#\\\/schema\\\/person\\\/ef0f9ff42d878c2fc0ab3a685e96f36d\",\"name\":\"Trond Norbye, Senior Developer, Couchbase\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/bf3c00ca228efa25f7bfc168f566d6389279b44d4bbba4683c260a8bf33da03d?s=96&d=mm&r=g03d13b4ab5eaa14c91cab7658f04df07\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/bf3c00ca228efa25f7bfc168f566d6389279b44d4bbba4683c260a8bf33da03d?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/bf3c00ca228efa25f7bfc168f566d6389279b44d4bbba4683c260a8bf33da03d?s=96&d=mm&r=g\",\"caption\":\"Trond Norbye, Senior Developer, Couchbase\"},\"description\":\"Trond Norbye is a Software Architect at Couchbase. Core contributor to Couchbase &amp; Memcached projects. Created the C\\\/C++ &amp; node.js Couchbase client libraries.\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/es\\\/author\\\/trond-norbye\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Want to know what your memcached servers are doing? Tap them. - The Couchbase Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.couchbase.com\/blog\/es\/want-know-what-your-memcached-servers-are-doing-tap-them\/","og_locale":"es_MX","og_type":"article","og_title":"Want to know what your memcached servers are doing? Tap them.","og_description":"It is possible to dump parts of the cache by using \u201cstats dump &#8230;\u201d to get some of the keys in the cache (and then you can go ahead and fetch each value). Here is an example on how to do that: stats dump 1 10 xxxx get \u00a0Wouldn&#8217;t it be better if you could [&hellip;]","og_url":"https:\/\/www.couchbase.com\/blog\/es\/want-know-what-your-memcached-servers-are-doing-tap-them\/","og_site_name":"The Couchbase Blog","article_published_time":"2014-12-16T17:42:11+00:00","og_image":[{"width":1800,"height":630,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/5\/2026\/05\/couchbase-nosql-dbaas.png","type":"image\/png"}],"author":"Trond Norbye, Senior Developer, Couchbase","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Trond Norbye, Senior Developer, Couchbase","Est. reading time":"3 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/want-know-what-your-memcached-servers-are-doing-tap-them\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/want-know-what-your-memcached-servers-are-doing-tap-them\/"},"author":{"name":"Trond Norbye, Senior Developer, Couchbase","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/ef0f9ff42d878c2fc0ab3a685e96f36d"},"headline":"Want to know what your memcached servers are doing? Tap them.","datePublished":"2014-12-16T17:42:11+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/want-know-what-your-memcached-servers-are-doing-tap-them\/"},"wordCount":706,"commentCount":3,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/want-know-what-your-memcached-servers-are-doing-tap-them\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/5\/2026\/05\/couchbase-nosql-dbaas.png","articleSection":["Uncategorized"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/want-know-what-your-memcached-servers-are-doing-tap-them\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/want-know-what-your-memcached-servers-are-doing-tap-them\/","url":"https:\/\/www.couchbase.com\/blog\/want-know-what-your-memcached-servers-are-doing-tap-them\/","name":"Want to know what your memcached servers are doing? Tap them. - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/want-know-what-your-memcached-servers-are-doing-tap-them\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/want-know-what-your-memcached-servers-are-doing-tap-them\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/5\/2026\/05\/couchbase-nosql-dbaas.png","datePublished":"2014-12-16T17:42:11+00:00","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/want-know-what-your-memcached-servers-are-doing-tap-them\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/want-know-what-your-memcached-servers-are-doing-tap-them\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/want-know-what-your-memcached-servers-are-doing-tap-them\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/5\/2026\/05\/couchbase-nosql-dbaas.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/5\/2026\/05\/couchbase-nosql-dbaas.png","width":1800,"height":630},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/want-know-what-your-memcached-servers-are-doing-tap-them\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Want to know what your memcached servers are doing? Tap them."}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"The Couchbase Blog","description":"Couchbase, the NoSQL Database","publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"The Couchbase Blog","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/5\/2026\/06\/logo.svg","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/5\/2026\/06\/logo.svg","width":"1024","height":"1024","caption":"The Couchbase Blog"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/ef0f9ff42d878c2fc0ab3a685e96f36d","name":"Trond Norbye, Senior Developer, Couchbase","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/secure.gravatar.com\/avatar\/bf3c00ca228efa25f7bfc168f566d6389279b44d4bbba4683c260a8bf33da03d?s=96&d=mm&r=g03d13b4ab5eaa14c91cab7658f04df07","url":"https:\/\/secure.gravatar.com\/avatar\/bf3c00ca228efa25f7bfc168f566d6389279b44d4bbba4683c260a8bf33da03d?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/bf3c00ca228efa25f7bfc168f566d6389279b44d4bbba4683c260a8bf33da03d?s=96&d=mm&r=g","caption":"Trond Norbye, Senior Developer, Couchbase"},"description":"Trond Norbye is a Software Architect at Couchbase. Core contributor to Couchbase &amp; Memcached projects. Created the C\/C++ &amp; node.js Couchbase client libraries.","url":"https:\/\/www.couchbase.com\/blog\/es\/author\/trond-norbye\/"}]}},"acf":[],"authors":[{"term_id":72,"user_id":14,"is_guest":0,"slug":"trond-norbye","display_name":"Trond Norbye, Senior Developer, Couchbase","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/?s=96&d=mm&r=g","0":null,"1":"","2":"","3":"","4":"","5":"","6":"","7":"","8":""}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/226","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/users\/14"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/comments?post=226"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/226\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media\/18"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media?parent=226"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/categories?post=226"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/tags?post=226"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/ppma_author?post=226"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}