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
- Efetue login no console de DCS.
- 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.
- No painel de navegação, escolha Cache Manager.
- 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.
- Carregue o pacote de dependência libmemcached-x.y.z.tar.gz obtido para o ECS criado.
- Acesse o ECS.
- 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*
- 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
- 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.
- 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; }
- Exemplo de código para o modo de senha
- Execute os seguintes comandos para compilar o código-fonte :
chmod 700 build.sh
./build.sh
O arquivo binário dcs_sample é gerado.
- 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!