Instala Redis y utilízalo con Java en Español


Introducción

Redis es un motor de base de datos en memoria y es utilizado en muchas empresas como base de datos, sistema de cache e incluso como message broker. Soporta estructuras de datos como Strings, hashes, lists, sets, etc. En este blog se explicará como iniciar un servidor de Redis y como conectarse a el utilizando Java.

Iniciando un servidor de Redis

El primer paso es descargar extraer y compilar Redis utilizando los siguientes comandos:

$ wget http://download.redis.io/releases/redis-3.2.9.tar.gz
$ tar xzf redis-3.2.9.tar.gz
$ cd redis-3.2.9
$ make

Una vez que todo se compiló correctamente el código compilado se encontrará en el folder src, para iniciar el servidor ejecutar el comando:

src/redis-server

Si el servidor se inicia de forma exitosa el siguiente paso es conectarse y empezar a utilizarlo:

src/redis-cli
127.0.0.1:6379> set mykey 1000
OK
127.0.0.1:6379> get mykey
"1000"
127.0.0.1:6379>

En el ejemplo anterior se define una llave llamada mykey con un valor de 1000 y se obtiene el valor utilizando el comando get.

Accediendo a información en Redis desde Java utilizando Jedis

Para acceder a la información almacenada en Redis desde Java es necesario utilizar un cliente, existe un gran número de clientes en diferentes lenguajes, para ver la lista completa acceder a clientes redis, en este ejemplo se utilizará Jedis y es necesario incluir la siguiente dependencia en la aplicación:

<dependency>
	<groupId>redis.clients</groupId>
	<artifactId>jedis</artifactId>
	<version>2.9.0</version>
</dependency>

Una vez incluida la dependencia acceder a Redis solo se debe hacer lo siguiente:

import redis.clients.jedis.Jedis;

/**
 * @author raidentrance
 *
 */
public class JedisTest {
	public static void main(String[] args) {
		Jedis client = new Jedis("localhost");
		client.set("mykey", "value");
		String value = client.get("mykey");
		System.out.println(value);
		client.close();
	}
}

Estructuras de datos soportadas en Redis

Redis soporta las siguientes estructuras de datos:

  • Strings: Es el tipo de dato más básico en Redis y puede contener cualquier tipo de información y tiene un límite de 512 Megabytes.
  • Lists:  Son listas comunes ordenadas por orden de inserción.
  • Sets: Son colecciones des ordenadas y no permiten datos duplicados.
  • Hashes: Son mapas entre campos y valores, esto los hace el tipo perfecto para almacenar objetos.
  • Sorted sets: Son similares a los Sets la diferencia es que cada elemento de la colección es ordenado de acuerdo a un score.

En próximos posts se explicará como utilizar los comandos disponibles en Redis.

Puedes encontrar el código completo del ejemplo en el siguiente enlace: https://github.com/raidentrance/jedis-example

Autor: Alejandro Agapito Bautista

Twitter: @raidentrance

Contacto:raidentrance@gmail.com

Introducción a Amazon Web Services en español parte 1


Introducción

Amazon web services es la plataforma de nube de Amazon, la cual provee diferentes servicios en la nube, en este post se mostrarán algunos de estos servicios y sus casos de uso comunes.

Infraestructura Global

La infraestructura de Amazon opera a nivel global, lo cuál significa que existen diferentes centros de datos a nivel mundial, estos centros de datos están organizados del siguiente modo.

  • Regions (regiones) :  Es una región física en el mundo, cada región contiene múltiples availability zones
  • Availability Zones (Zonas de disponibilidad) : Una zona de disponibilidad consiste en uno o más data centers (centros de datos)
  • Edge Locations: Son puntos finales de CDN, más detalles sobre este punto cuando se explique el servicio CDN.

Productos disponibles

A continuación se muestra una lista categorizada con los principales productos disponibles y una descripción breve sobre los mismos:

Compute

  • Amazon Elastic Compute Cloud (Amazon EC2)

ec2-logo-full

Servicio diseñado para crear servidores virtuales en la nube en minutos tipos de instancias prefabricadas como : Propósito general, Computo optimizado, Memoria optimizada, Computación acelerada, Almacenamiento optimizado. Puedes encontrar una lista completa de los tipos de instancia con sus descripciones en el siguiente link https://aws.amazon.com/ec2/instance-types/.

Casos de uso:

  1. Despliegue de aplicaciones
  2. Creación de entornos de desarrollo
  3. Creación de máquinas virtuales en diferentes Sistemas operativos
  • Elastic Beanstalk

elastic_beanstalk_logoEs un servicio fácil de utilizar para el despliegue de aplicaciones y servicios escalables desarrollados en : Java, .NET, PHP, Node.js, Python, Ruby, Go, y Docker. Solo tienes que subir tu código y Elastic Beanstalk manejará de forma automática el despliegue, la capacidad, balanceo de carga, auto escala y monitoreo de salud, más información en el siguiente link https://aws.amazon.com/elasticbeanstalk/.

Casos de uso:

  1. Despliegue de aplicaciones en diferentes lenguajes de programación
  • Amazon VPC

vpc-vpn-logoPermite crear una nube privada y aislada donde es posible definir las redes donde se desplegarán los recursos. Se tiene un control total sobre la VPC que se defina, es posible definir : Rangos de IP, creación de sub redes,  si se tendrá acceso o no a internet en las diferentes redes, Firewalls a nivel de sub red, una conexión con VPN corporativas, más información en el siguiente link https://aws.amazon.com/vpc/.

Casos de uso:

  1. Creación de datacenters privados
  2. Creación de sub redes públicas  (Todos los recursos dentro de esta sub red tendrán acceso a internet)
  3. Creación de sub redes privadas (Los recursos dentro de estas sub redes no  tendrán acceso a internet)
  4. Creación de firewalls a nivel de sub red (Es posible cerrar o abrir puertos para todas las máquinas dentro de la sub red, además del firewall que pueda tener el recurso)
  • AWS Lambda

lambdaLambda permite ejecutar código utilizando la arquitectura server less lo cual significa que no es necesario tener un servidor para ejecutar ese fragmento de código. De este modo solo se tiene que pagar por ejecución de código y no por tener un servidor prendido por un determinado tiempo, con esto si el código nunca se ejecuta no se hará ningún cargo si se ejecuta una vez solo se ejecutará esa ejecución, más información en el siguiente link https://aws.amazon.com/lambda/.

Casos de uso:

  1. Ejecución de código bajo demanda
  2. Ejecución de código cuando se generen eventos en recursos de AWS
  3. Ejecución de funciones bajo invocación sobre HTTPS
  4. Eventos programados
  • Auto Scaling

aws_autoscalingAuto scaling permite mantener las aplicaciones disponibles todo el tiempo con el mayor beneficio posible, esto debido a que es posible crecer o disminuir el número de equipos detrás de un balanceador de carga acuerdo a la demanda a través del uso de métricas, por ejemplo es posible decir si el uso del CPU es mayor a 70% crea una máquina nueva con la aplicación y colócala detrás del balanceador para atender las peticiones y si el uso del CPU es menor al 30% quita una de las instancias, más información en el siguiente link https://aws.amazon.com/autoscaling/.

Casos de uso:

  1. Crecer o disminuir el número de maquinas de acuerdo al uso

Storage

  • S3 (Simple Storage Service)

amazons3Amazon Simple Storage service permite hacer almacenamiento de objetos con una interfaz web simple que permite subir y descargar cantidades grandes de archivos. Esta diseñado para tener una durabilidad de 99.999999999% y una disponibilidad de 99.99%. más información en el siguiente link https://aws.amazon.com/s3/.

Casos de uso:

  1. Almacenamiento de imágenes en aplicaciones web
  2. Almacenamiento de videos
  3. Almacenamiento de archivos
  • Glacier

glacier.pngEs un durable, seguro y súper barato servicio de almacenamiento a largo plazo. Con el fin de mantener los costos bajos descargar un archivo puede tomar incluso horas. Por esto se recomienda para guardar información histórica, más información en el siguiente link https://aws.amazon.com/glacier/.

Casos de uso:

  1. Almacenamiento de datos históricos
  2. Almacenamiento de información que debe ser guardada por fines legales
  • EBS (Elastic block storage)

ebsElastic block storage provee un almacenamiento persistente para ser utilizado como volumen en instancias EC2, con Amazon EBS es posible escalar o disminuir el tamaño en solo unos minutos, más información en el siguiente link https://aws.amazon.com/ebs/.

Casos de uso:

  1. Bases de datos no soportadas por Amazon
  2. Almacenamiento

 Database

  • RDS (Relational Database Service)

aws_simple_icons_database_amazonrds-svg_-20160325070440RDS Hace simple la instalación, configuración y escalabilidad de  bases de datos relacionales en la nube.  Amazon RDS provee 6 motores de bases de datos comunes entre los que se encuentra : Amazon Aurora, PostgreSQL, MySQL, MariaDB, Oracle y Microsoft SQL server.

Es importante mencionar que para las bases de datos que requieren licencia es posible utilizarlas con BYOL (Bring your own license), lo cual significa que si ya se cuenta con una licencia puede ser utilizada en su ambiente en la nube, más información en el siguiente link https://aws.amazon.com/rds.

Casos de uso:

  1. Configuración de bases de datos relacionales en la nube
  • DynamoDB

aws-dynamodb-logo-cf7bcc577d-seeklogo-comDynamoDB es la base de datos NoSQL rápida y flexible de Amazon. Diseñada para aplicaciones que necesitan consistencia y latencia de mili segundos a cualquier escala.

Casos de uso:

  1. Configuración de bases de datos NoSQL rápidas y flexibles
  • ElasticCache

elasticcacheElasticCache es un servicio que hace fácil desplegar, operar y escalar información en cache en la nube. Este servicio mejora el performance de las aplicaciones permitiendo obtener la información de una forma rápida, administrada y almacenada en memoria. Soporta 2 motores open source  Redis y Memcached.

Casos de uso:

  1. Mantener información de acceso común en memoria para un acceso rápido

AWS Free tier (Capa gratuita de Amazon)

Amazon provee una capa gratuita para que los desarrolladores aprendan a utilizar la plataforma de AWS, los productos y los servicios. A continuación se presentan los límites de los principales productos para la capa gratuita al 30 de enero del 2017.

captura-de-pantalla-2017-01-30-a-las-2-18-44-p-m

captura-de-pantalla-2017-01-30-a-las-2-17-55-p-m

Más información sobre los límites de la capa gratuita en el siguiente link https://aws.amazon.com/free/

Siguientes pasos

En siguientes posts se explicarán otros servicios de Amazon Web services, a continuación se presenta una lista de algunos de los servicios restantes de los que se hablarán en el futuro:

  • Networking
    • CloudFront
    • Route 53
    • Direct Connect
    • Elastic Load Balancing
  • Developer Tools
    • Code commit
    • PipeLine
    • Code deploy
  • Management tools
    • Cloud watch
    • Cloud trail
    • Cloud formation
    • OpsWorks
  • Messaging
    • SQS
    • SNS
    • SES

Autor: Alejandro Agapito Bautista

Twitter: @raidentrance

Contacto:raidentrance@gmail.com