Estos contenidos se han traducido de forma automática para su comodidad, pero Huawei Cloud no garantiza la exactitud de estos. Para consultar los contenidos originales, acceda a la versión en inglés.
Actualización más reciente 2022-11-07 GMT+08:00

Java

Acceda a una instancia de DCS Memcached mediante un cliente Java en un ECS en la misma VPC.

Prerrequisitos:

  • La instancia de DCS Memcached a la que desea acceder está en el estado Running.
  • Se ha creado un ECS en el que se ha instalado el cliente. Para obtener más información sobre cómo crear ECS, consulte la Guía del usuario de Elastic Cloud Server.

    Un ECS puede comunicarse con una instancia de DCS que pertenece a la misma VPC y está configurada con el mismo grupo de seguridad.

    • Si las instancias de ECS y de DCS están en las VPC diferentes, establezca una conexión de pares de VPC para lograr conectividad de red entre las instancias de ECS y de DCS. Para obtener más información, consulte ¿Soporta DCS el acceso entre VPC?
    • Si se han configurado diferentes grupos de seguridad para la instancia de ECS y de DCS, establezca reglas de grupo de seguridad para lograr la conectividad de red entre la instancia de ECS y de DCS. Para obtener más información, consulte ¿Cómo configuro un grupo de seguridad?
  • El kit de desarrollo Java (JDK) y los entornos de desarrollo integrados comunes (IDE) como Eclipse se han instalado en el ECS.
  • Ha obtenido el paquete de dependencias spymemcached-x.y.z.jar.

    x.y.z indica la versión del paquete de dependencias. Se recomienda la versión más reciente.

Procedimiento

  1. Inicie sesión en la consola DCS.
  2. Haga clic en en la esquina superior izquierda de la consola de gestión y seleccione una región.

    Seleccione la misma región que su servicio de aplicación.

  3. En el panel de navegación, elija Cache Manager.
  4. En la página Cache Manager, haga clic en el nombre de la instancia de DCS Memcached a la que desea tener acceso. Obtenga la dirección IP o el nombre de dominio y el número de puerto de la instancia.
  5. Sube el paquete de dependencias de spymemcached-x.y.z.jar obtenido al ECS creado.
  6. Inicie sesión en el ECS.
  7. Cree un proyecto Java en Eclipse e importe el paquete de dependencias spymemcached-x.y.z.jar. El nombre del proyecto es personalizable.
  8. Cree una clase ConnectMemcached1, copie el siguiente código Java en la clase y modifique el código.

    • Código de ejemplo para el modo de contraseña

      Cambie ip or domain name:port a la dirección IP y el número de puerto obtenido en 4. Establezca userName y password respectivamente en el nombre de usuario y contraseña de la instancia de Memcached.

      //Connect to the encrypted Memcached code using Java.
      import java.io.IOException;
      import java.util.concurrent.ExecutionException;
      
      import net.spy.memcached.AddrUtil;
      import net.spy.memcached.ConnectionFactoryBuilder;
      import net.spy.memcached.ConnectionFactoryBuilder.Protocol;
      import net.spy.memcached.MemcachedClient;
      import net.spy.memcached.auth.AuthDescriptor;
      import net.spy.memcached.auth.PlainCallbackHandler;
      import net.spy.memcached.internal.OperationFuture;
      
      public class ConnectMemcached1
      {
          public static void main(String[] args)
          {
              final String connectionaddress = "ip or domain name:port"; 
              final String username = "userName";//Indicates the username.
              final String password = "password";//Indicates the password.
              MemcachedClient client = null;
              try
              {
                  AuthDescriptor authDescriptor =
                      new AuthDescriptor(new String[] {"PLAIN"}, new PlainCallbackHandler(username,
                              password));
                  client = new MemcachedClient(
                          new ConnectionFactoryBuilder().setProtocol(Protocol.BINARY)
                                  .setAuthDescriptor(authDescriptor)
                                  .build(),
                          AddrUtil.getAddresses(connectionaddress));
                  String key = "memcached";//Stores data with the key being memcached in Memcached.
                  String value = "Hello World";//The value is Hello World. 
                  int expireTime = 5; //Specifies the expiration time, measured in seconds. The countdown starts from the moment data is written. After the expireTime elapses, the data expires and can no longer be read.
                  doExcute(client, key, value, expireTime);//Executes the operation.
              }
              catch (IOException e)
              {
                  e.printStackTrace();
              }
          }
      
          /**
           *Method of writing data to Memcached
           */
          private static void doExcute(MemcachedClient client, String key, String value, int expireTime)
          {
              try
              {
                  OperationFuture<Boolean> future = client.set(key, expireTime, value);
                  future.get();//spymemcached set () is asynchronous. future.get () waits until the cache.set () operation is completed, or does not need to wait. You can select based on actual requirements.
                  System.out.println("The Set operation succeeded.");
                  System.out.println("Get operation:" + client.get(key));
                  Thread.sleep(6000);//Waits for 6000 ms, that is, 6s. Then the data expires and can no longer be read.
                  System.out.println("Perform the Get operation 6s later:" + client.get(key));
      
              }
              catch (InterruptedException e)
              {
                  e.printStackTrace();
              }
              catch (ExecutionException e)
              {
                  e.printStackTrace();
              }
              if (client != null)
              {
                  client.shutdown();
              }
          }
      }
    • Código de ejemplo para el modo sin contraseña

      Cambie ip address or domain name:port a la dirección IP y el número de puerto obtenido en 4.

      //Connect to the password-free Memcached code using Java.
      import java.io.IOException;
      import java.util.concurrent.ExecutionException;
      
      import net.spy.memcached.AddrUtil;
      import net.spy.memcached.BinaryConnectionFactory;
      import net.spy.memcached.MemcachedClient;
      import net.spy.memcached.internal.OperationFuture;
      
      public class ConnectMemcached
      {
          public static void main(String[] args)
          {
              final String connectionaddress = "ip or domain name:port"; 
              MemcachedClient client = null;
              try
              {
                  client = new MemcachedClient(new BinaryConnectionFactory(), AddrUtil.getAddresses(connectionaddress));
                  String key = "memcached";//Stores data with the key being memcached in Memcached.
                  String value = "Hello World";//The value is Hello World. 
                  int expireTime = 5; //Specifies the expiration time, measured in seconds. The countdown starts from the moment data is written. After the expireTime elapses, the data expires and can no longer be read.
                  doExcute(client, key, value, expireTime);//Executes the operation.
              }
              catch (IOException e)
              {
                  e.printStackTrace();
              }
          }
      
          /**
           *Method of writing data to Memcached
           */
          private static void doExcute(MemcachedClient client, String key, String value, int expireTime)
          {
              try
              {
                  OperationFuture<Boolean> future = client.set(key, expireTime, value);
                  future.get();//spymemcached set () is asynchronous. future.get () waits until the cache.set () operation is completed, or does not need to wait. You can select based on actual requirements.
                  System.out.println("The Set operation succeeded.");
                  System.out.println("Get operation:" + client.get(key));
                  Thread.sleep(6000);//Waits for 6000 ms, that is, 6s. Then the data expires and can no longer be read.
                  System.out.println("Perform the Get operation 6s later:" + client.get(key));
      
              }
              catch (InterruptedException e)
              {
                  e.printStackTrace();
              }
              catch (ExecutionException e)
              {
                  e.printStackTrace();
              }
              if (client != null)
              {
                  client.shutdown();
              }
          }
      }

  9. Ejecute el método principal. El siguiente resultado se muestra en la ventana Console de Eclipse:

    The Set operation succeeded.
    Get operation: Hello World
    Perform the Get operation 6s later: null