{"id":1824,"date":"2014-12-16T17:42:11","date_gmt":"2014-12-16T17:42:11","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=1824"},"modified":"2017-05-01T13:22:14","modified_gmt":"2017-05-01T20:22:14","slug":"want-know-what-your-memcached-servers-are-doing-tap-them","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/pt\/want-know-what-your-memcached-servers-are-doing-tap-them\/","title":{"rendered":"Quer saber o que seus servidores memcached est\u00e3o fazendo? Toque neles."},"content":{"rendered":"<p>\u00c9 poss\u00edvel fazer o dump de partes do cache usando \"stats dump ...\" para obter algumas das chaves no cache (e ent\u00e3o voc\u00ea pode ir em frente e buscar cada valor). Aqui est\u00e1 um exemplo de como fazer isso: stats dump 1 10 xxxx get N\u00e3o seria melhor se voc\u00ea pudesse espionar o servidor memcached? As pessoas que executam o memcached no Solaris j\u00e1 podem fazer isso usando o DTrace. Mas seria bom criar uma solu\u00e7\u00e3o que funcionasse tamb\u00e9m para outras pessoas. Dustin Sallings e eu nos unimos e come\u00e7amos a projetar uma interface que permitisse obter um fluxo de notifica\u00e7\u00f5es do seu servidor memcached. Entre os requisitos para a solu\u00e7\u00e3o estavam:<\/p>\n<ul>\n<li>Neutro em rela\u00e7\u00e3o ao mecanismo. As pessoas podem ter seus pr\u00f3prios mecanismos de armazenamento memcached especializados, e de que adianta uma nova interface se ela n\u00e3o funcionar com seus mecanismos especializados. Isso significa que o protocolo precisa ser extens\u00edvel.<\/li>\n<li>Use o protocolo bin\u00e1rio para obter o m\u00e1ximo de portabilidade. O protocolo bin\u00e1rio n\u00e3o \u00e9 amb\u00edguo; \u00e9 neutro em termos de hardware, sistema operacional e linguagem de programa\u00e7\u00e3o. Ao usar o protocolo bin\u00e1rio, podemos acessar servidores remotos.<\/li>\n<\/ul>\n<p>A interface tap abre muitas possibilidades para os desenvolvedores de software memcached:<\/p>\n<ul>\n<li>Observabilidade - Podemos conectar um cliente tap ao servidor e ver quando os itens s\u00e3o adicionados\/modificados\/exclu\u00eddos<\/li>\n<li>Replica\u00e7\u00e3o - Por que n\u00e3o permitir que um servidor memcached ou\u00e7a os eventos de tap de outro servidor? Por que parar em um s\u00f3? Vamos criar um c\u00edrculo de 10 servidores e permitir que eles escutem o pr\u00f3ximo no c\u00edrculo (observe que isso cria uma janela de inconsist\u00eancia a partir do momento em que voc\u00ea executa uma opera\u00e7\u00e3o no primeiro n\u00f3 at\u00e9 que ela seja \"replicada\" em todo o c\u00edrculo).<\/li>\n<li>Persist\u00eancia - Essa \u00e9 uma das solicita\u00e7\u00f5es mais populares que vejo atualmente. Em vez de criar um mecanismo especializado que fa\u00e7a a persist\u00eancia, podemos conectar um tap stream que receba todos os eventos de muta\u00e7\u00e3o do servidor memcached e armazene os dados em uma m\u00eddia persistente.<\/li>\n<\/ul>\n<p>Ent\u00e3o, como funciona a interface do Tap? Ela funciona aproveitando as vantagens da implementa\u00e7\u00e3o do mecanismo memcached. Nessa implementa\u00e7\u00e3o, o n\u00facleo do memcached \u00e9 respons\u00e1vel pelo tratamento do protocolo e pela E\/S da rede, e o mecanismo \u00e9 respons\u00e1vel por alimentar o n\u00facleo com um fluxo de eventos. Vamos ver um exemplo: Quando o servidor receber uma mensagem \"TAP Connect\" do cliente, o n\u00facleo do memcached tentar\u00e1 obter um fluxo de tap do mecanismo de armazenamento chamando get_tap_iterator(). Com o iterador instalado, o n\u00facleo do memcached tentar\u00e1 obter o pr\u00f3ximo evento a ser enviado ao cliente do tap sempre que o soquete for grav\u00e1vel. Se o mecanismo n\u00e3o tiver nenhum evento para enviar ao cliente, o iterador dever\u00e1 retornar TAP_PAUSE (e chamar notify_io_complete para notificar o n\u00facleo para come\u00e7ar a percorrer o iterador novamente). Ent\u00e3o, qual \u00e9 a apar\u00eancia do iterador? \u00c0 primeira vista, voc\u00ea pode pensar que ele parece muito complexo, mas vamos dar uma olhada mais de perto no prot\u00f3tipo:  tap_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); A documenta\u00e7\u00e3o da API fornece informa\u00e7\u00f5es detalhadas sobre cada par\u00e2metro, mas eu gostaria de destacar um dos par\u00e2metros. O par\u00e2metro engine_specific permite que cada mecanismo de armazenamento transmita informa\u00e7\u00f5es extras em cada mensagem TAP para que o mecanismo receptor possa recriar o evento (por exemplo, podem ser informa\u00e7\u00f5es de bucket usadas pelo mecanismo de bucket ou informa\u00e7\u00f5es extras de seguran\u00e7a, se voc\u00ea criar um mecanismo com reconhecimento de seguran\u00e7a). O servidor memcached tamb\u00e9m \u00e9 capaz de receber mensagens TAP e transmiti-las ao mecanismo de armazenamento. Sempre que uma mensagem TAP for recebida, ele chamar\u00e1 a fun\u00e7\u00e3o tap_notify na interface do mecanismo:         ENGINE_ERROR_CODE tap_notify(ENGINE_HANDLE* handle, const void *cookie, void *engine_specific, uint16_t nengine, uint8_t ttl, uint16_t tap_flags, tap_event_t tap_event, uint32_t tap_seqno, const void *key, size_t nkey, uint32_t flags, uint32_t exptime, uint64_t cas, const void *data, size_t ndata); Parece f\u00e1cil, n\u00e3o \u00e9? Se isso lhe parecer interessante, voc\u00ea deve dar uma olhada no projeto TAP.<\/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 [&hellip;]<\/p>","protected":false},"author":14,"featured_media":13873,"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":[8981],"class_list":["post-1824","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.2 (Yoast SEO v26.2) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\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\/pt\/want-know-what-your-memcached-servers-are-doing-tap-them\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\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 [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/pt\/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=\"article:modified_time\" content=\"2017-05-01T20:22:14+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2022\/11\/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\",\"dateModified\":\"2017-05-01T20:22:14+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\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"articleSection\":[\"Uncategorized\"],\"inLanguage\":\"pt-BR\",\"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\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2014-12-16T17:42:11+00:00\",\"dateModified\":\"2017-05-01T20:22:14+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/want-know-what-your-memcached-servers-are-doing-tap-them\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/want-know-what-your-memcached-servers-are-doing-tap-them\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@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\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/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\":\"pt-BR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"width\":218,\"height\":34,\"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\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/03d13b4ab5eaa14c91cab7658f04df07\",\"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\/pt\/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\/pt\/want-know-what-your-memcached-servers-are-doing-tap-them\/","og_locale":"pt_BR","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 [&hellip;]","og_url":"https:\/\/www.couchbase.com\/blog\/pt\/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","article_modified_time":"2017-05-01T20:22:14+00:00","og_image":[{"width":1800,"height":630,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2022\/11\/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","dateModified":"2017-05-01T20:22:14+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\/1\/2022\/11\/couchbase-nosql-dbaas.png","articleSection":["Uncategorized"],"inLanguage":"pt-BR","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\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2014-12-16T17:42:11+00:00","dateModified":"2017-05-01T20:22:14+00:00","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/want-know-what-your-memcached-servers-are-doing-tap-them\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/want-know-what-your-memcached-servers-are-doing-tap-them\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@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\/1\/2022\/11\/couchbase-nosql-dbaas.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/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":"Blog do Couchbase","description":"Couchbase, o banco de dados NoSQL","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":"pt-BR"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"Blog do Couchbase","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","width":218,"height":34,"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, desenvolvedor s\u00eanior, Couchbase","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/03d13b4ab5eaa14c91cab7658f04df07","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 \u00e9 arquiteto de software na Couchbase. Principal colaborador dos projetos Couchbase e Memcached. Criou as bibliotecas de clientes C\/C++ e node.js do Couchbase.","url":"https:\/\/www.couchbase.com\/blog\/pt\/author\/trond-norbye\/"}]}},"authors":[{"term_id":8981,"user_id":14,"is_guest":0,"slug":"trond-norbye","display_name":"Trond Norbye, Senior Developer, Couchbase","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/bf3c00ca228efa25f7bfc168f566d6389279b44d4bbba4683c260a8bf33da03d?s=96&d=mm&r=g","author_category":"","last_name":"Norbye","first_name":"Trond","job_title":"","user_url":"","description":"Trond Norbye \u00e9 arquiteto de software na Couchbase. Principal colaborador dos projetos Couchbase e Memcached. Criou as bibliotecas de clientes C\/C++ e node.js do Couchbase."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/1824","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/users\/14"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/comments?post=1824"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/1824\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media\/13873"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media?parent=1824"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/categories?post=1824"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/tags?post=1824"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/ppma_author?post=1824"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}