Este conteúdo foi traduzido por máquina para sua conveniência e a Huawei Cloud não pode garantir que o conteúdo foi traduzido com precisão. Para exibir o conteúdo original, use o link no canto superior direito para mudar para a página em inglês.
Atualizado em 2022-11-08 GMT+08:00

C++

Acesse uma instância do DCS Memcached usando um cliente C++ em um ECS na mesma VPC.

Pré-requisitos

  • A instância do Memcached DCS que você deseja acessar está no estado Running.
  • Acesse o ECS. Para obter detalhes sobre como criar os ECS, consulte o Guia do usuário do Elastic Cloud Server.

    Um ECS pode se comunicar com uma instância de DCS que pertence à mesma VPC e está configurada com o mesmo grupo de segurança.

    • Se a instância do ECS e do DCS estiverem nas VPC diferentes, estabeleça uma conexão de peering de VPC para obter conectividade de rede entre o ECS e a instância do DCS. Para obter detalhes, consulte O DCS oferece suporte ao acesso entre VPC?
    • Se grupos de segurança diferentes tiverem sido configurados para a instância do ECS e do DCS, defina regras de grupo de segurança para obter conectividade de rede entre o ECS e a instância do DCS. Para obter detalhes, consulte Como configurar um grupo de segurança?
  • O GCC foi instalado no ECS. A versão recomendada é a 4.8.4 ou posterior.
  • Você obteve o pacote de dependências libmemcached-x.y.z.tar.gz.

    x.y.z indica a versão do pacote de dependência. Recomenda-se a versão mais recente.

Procedimento

  1. Efetue login no console de DCS.
  2. Clique em no canto superior esquerdo do console de gerenciamento e selecione uma região.

    Selecione a mesma região que o serviço do aplicativo.

  3. No painel de navegação, escolha Cache Manager.
  4. Na página Cache Manager, clique no nome da instância do Memcached DCS que deseja acessar. Obtenha o endereço IP ou o nome de domínio e o número da porta da instância.
  5. Carregue o pacote de dependência libmemcached-x.y.z.tar.gz obtido para o ECS criado.
  6. Acesse o ECS.
  7. Instalar os pacotes de dependência SASL relacionados.

    Para sistemas operacionais da série Debian: apt install libsasl2-dev cloog.ppl

    Para sistemas operacionais da série Red Hat: yum install cyrus-sasl*

  8. Execute os seguintes comandos para instalar o pacote de dependência:

    tar -xzvf libmemcached-x.y.z.tar.gz

    cd libmemcached-x.y.z

    ./configure --enable-sasl

    make

    make install

  9. Crie um arquivo chamado build.sh e copie o seguinte código para o arquivo.

    g++ -o dcs_sample dcs_sample.cpp -lmemcached -std=c++0x -lpthread -lsasl2

    Se o arquivo libmemcached.so.11 não puder ser encontrado durante a compilação, execute o comando find para encontrar o arquivo e copie o arquivo para o diretório /usr/lib.

  10. Crie um arquivo chamado dcs_sample.cpp, copie o seguinte código C++ para o arquivo e modifique o código.

    • Exemplo de código para o modo de senha
      Alterar ip ou nome de domínio e Porta ao endereço IP ou nome de domínio e número de porta obtidos em 4. Definir Nome de usuário e Senha respectivamente para o nome de usuário e a senha da instância do Memcached.
      #include <iostream>
      #include <string>
      #include <libmemcached/memcached.h>
      using namespace std;
      
      #define IP  "
      										ip 
      										
      											or domain name
      										
      									"
      #define PORT  "
      										port
      									"
      #define USERNAME "
      										userName
      									"
      #define PASSWORD "
      										password
      									"
      memcached_return result;
      
      memcached_st * init()
      {
          memcached_st *memcached = NULL;
          memcached_server_st *cache;
          memcached = memcached_create(NULL);
          cache = memcached_server_list_append(NULL, IP, PORT, &result);
      
          sasl_client_init(NULL);
               memcached_set_sasl_auth_data(memcached, USERNAME, PASSWORD); 
               memcached_behavior_set(memcached,MEMCACHED_BEHAVIOR_BINARY_PROTOCOL,1);
               memcached_server_push(memcached,cache);
               memcached_server_list_free(cache);
                  return memcached;
      }
      
      int main(int argc, char *argv[])
      {
               memcached_st *memcached=init();
          string key = "memcached";
          string value = "hello world!";
          size_t value_length = value.length();
          int expire_time = 0;
          uint32_t flag = 0;
      
          result = memcached_set(memcached,key.c_str(),key.length(),value.c_str(),value.length(),expire_time,flag);  
          if (result != MEMCACHED_SUCCESS){
            cout <<"set data failed: " << result << endl;
            return -1;
          }
          cout << "set succeed, key: " << key << ", value: " << value << endl;
          cout << "get key:" << key << endl;
          char* result = memcached_get(memcached,key.c_str(),key.length(),&value_length,&flag,&result);
          cout << "value:" << result << endl;
      
          memcached_free(memcached);
          return 0;
      }
    • Código de exemplo para o modo livre de senha

      Altere ip or domain name para o endereço IP ou nome de domínio e número de porta obtido em 4.

      #include <iostream>
      #include <string>
      #include <libmemcached/memcached.h>
      using namespace std;
      
      #define IP  "ip
      								or domain name"
      #define PORT  port
      memcached_return result;
      
      memcached_st * init()
      {
          memcached_st *memcached = NULL;
          memcached_server_st *cache;
          memcached = memcached_create(NULL);
          cache = memcached_server_list_append(NULL, IP, PORT, &result);
               memcached_server_push(memcached,cache);
          memcached_server_list_free(cache);
               return memcached;
      }
      
      int main(int argc, char *argv[])
      {
               memcached_st *memcached=init();
          string key = "memcached";
          string value = "hello world!";
          size_t value_length = value.length();
          int expire_time = 0;
          uint32_t flag = 0;
      
          result = memcached_set(memcached,key.c_str(),key.length(),value.c_str(),value.length(),expire_time,flag);  
          if (result != MEMCACHED_SUCCESS){
            cout <<"set data failed: " << result << endl;
            return -1;
          }
          cout << "set succeed, key: " << key << " ,value: " << value << endl;
          cout << "get key:" << key << endl;
          char* result = memcached_get(memcached,key.c_str(),key.length(),&value_length,&flag,&result);
          cout << "value:" << result << endl;
      
          memcached_free(memcached);
          return 0;
      }

  11. Execute os seguintes comandos para compilar o código-fonte :

    chmod 700 build.sh

    ./build.sh

    O arquivo binário dcs_sample é gerado.

  12. Execute o seguinte comando para acessar a instância do Memcached DCS escolhida:

    ./dcs_amostra
    set succeed, key: memcached ,value: hello world!
    get key:memcached
    value:hello world!