Desarrollo de aplicaciones Redis

Redis definición:

Lo que 1.redis?
Redis es una base de datos de alto rendimiento clave-valor, el tipo de valor almacenado que comprende una cuerda de soporte, lista, conjunto, zConfigurar y el hash, y apoyar el empuje / add pop / Quitar y operaciones de unión y diferencia intersectados.
2.redis características:

  • Los datos se almacenan en caché en la memoria, se actualizará periódicamente los datos escritos en el disco o para modificar el archivo de registro de funcionamiento adicional por escrito.
  • Implementado en un clúster, el servidor maestro para servicios externos, soporte de sincronización maestro-esclavo, de datos puede ser de cualquier número de servidores de sincronización de los soportes de servidor maestro en cascada arquitectura.
  • Lograr una publicación / suscripción mecanismo, los datos sub-canal es almacenado (en un canal diferente), los datos de consumo premisa a un canal de suscripción.
  • edis pena no se limita al tipo de cadena, pero la cadena de apoyo adicional:
    Aquí Insertar imagen Descripción
    3.redis arquitectura:
    Aquí Insertar imagen Descripción
  • No hay interacción entre la arquitectura basado en el centro, el nodo
  • La posición de los valores de clave principal nodo algoritmo de hash y sus asignaciones almacenado, cada nodo mantiene la correspondencia entre la tecla y el servidor
  • cliente puede iniciar una solicitud a cualquier nodo, no importa desde el maestro, si el servidor está nodos cliente está buscando, es capaz de responder, si no, que lo hará único cliente de redirección
  • Si entre la solicitud del cliente y redirige la solicitud, cambios en la topología, será redirigido al siguiente petición para redirigir una vez más, hasta que encuentre el servidor adecuado
  • Pero fusionInsight HD Redis racimos sólo admiten un modo maestro-esclavo

4. Escenario:
Recibe las últimas noticias
aplicación de líderes
de aplicación de contador
de acuerdo con: alto rendimiento y baja latencia de acceso a las estructuras de datos ricos para apoyar la persistencia
5. Implementar un sistema de recomendación de producto:
el programa:
la introducción de Redis, reducir el número de datos leídos desde el sistema de base de datos y archivo ;
caché de los resultados a Redis, realización y leer y tomar, en relación con el HBase más rápido porque HBase aunque el índice todavía va a acceder al sistema de archivos subyacente
diseño de la estructura:
debido a que los datos almacenados no es estructurado, no hay tiempo para leer información de clase tabla
usando la estructura de acceso de hash:
<clave, valor> ->
<identificador de usuario, nombre, Xiaoming>
<identificador de usuario, edad, 18 es>
Aquí Insertar imagen Descripción
MapReduce tiempo de trabajo para la información del usuario importado de Redis HBase, y
obtener datos de las Redis de inicio obtener, si no, ir a buscar HBase, y se sincroniza con Redis

REDIS operaciones de clúster

nota:

  • La introducción de una cantidad de datos se limita a una configuración de memoria y REDIS instancia de clúster, la capacidad total de la cantidad de instancias REDIS * = el tamaño de memoria de una sola instancia;
  • Y debe ser datos divididos a una pluralidad de la clave, por lo que el equilibrio de la carga de datos.

API Java:
1. El clúster
utilizando jedis

public RedisTest() {
//实例化一个集群的集合
        Set<HostAndPort> hosts = new HashSet<HostAndPort>();
        //通过ip地址和端口号获取到集群
        hosts.add(new HostAndPort(”node01“, 6379));
        int timeout = 5000;
        client = new JedisCluster(hosts, timeout);
    }

tiendas de tipo cadena:

public void testString() {
        String key = "sid-user01";

        // 设置指定key值,过期时间,sessionid
        client.setex(key, 5, "A0BC9869FBC92933255A37A1D21167B2");
        //获取指定的key值
        String sessionId = client.get(key);
        LOGGER.info("User " + key + ", session id: " + sessionId);
        try {
            Thread.sleep(10000);//进程休息
        } catch (InterruptedException e) {
            LOGGER.warn("InterruptedException");
        }

        sessionId = client.get(key);
        LOGGER.info("User " + key + ", session id: " + sessionId);

        key = "message";
        //追加key,value

        client.set(key, "hello");
        String value = client.get(key);
        LOGGER.info("Value: " + value);

        client.append(key, " world");
        value = client.get(key);
        LOGGER.info("After append, value: " + value);

        client.del(key);
    }

hash de tipo de almacenamiento:

public void testHash() {
        String key = "userinfo-001";

        // 以key,field,value的形式存入数据
        client.hset(key, "id", "J001");
        client.hset(key, "name", "John");
        client.hset(key, "gender", "male");
        client.hset(key, "age", "35");
        client.hset(key, "salary", "1000000");

        // get方式获取 一个字段的值
        String id = client.hget(key, "id");
        String name = client.hget(key, "name");
        LOGGER.info("User " + id + "'s name is " + name);

        Map<String, String> user = client.hgetAll(key);
        LOGGER.info(user);
        client.del(key);

        key = "userinfo-002";
        Map<String, String> user2 = new HashMap<String, String>();
        user2.put("id", "L002");
        user2.put("name", "Lucy");
        user2.put("gender", "female");
        user2.put("age", "25");
        user2.put("salary", "200000");
        client.hmset(key, user2);
        //追加
        client.hincrBy(key, "salary", 50000);
        id = client.hget(key, "id");
        String salary = client.hget(key, "salary");
        LOGGER.info("User " + id + "'s salary is " + salary);

        // like Map.keySet()
        Set<String> keys = client.hkeys(key);
        LOGGER.info("all fields: " + keys);
        // like Map.values()
        List<String> values = client.hvals(key);
        LOGGER.info("all values: " + values);

        // 获取多个字段的值
        values = client.hmget(key, "id", "name");
        LOGGER.info("partial field values: " + values);

        // 判断key值是否已经存在
        boolean exist = client.hexists(key, "gender");
        LOGGER.info("Exist field gender? " + exist);

        // 删除key
        client.hdel(key, "age");
        keys = client.hkeys(key);
        LOGGER.info("after del field age, rest fields: " + keys);

        client.del(key);
    }
Publicado 20 artículos originales · ganado elogios 23 · vistas 989

Supongo que te gusta

Origin blog.csdn.net/surijing/article/details/104573730
Recomendado
Clasificación