El líder del proyecto Conocimiento Aprender --01- (base de datos de la memoria Redis, Redis, Redis cinco tipos de datos comunes: string / LIST / hachís / set / zConfigurar Python, operaciones de configuración Redis, Redis maestro-esclavo)

1, base de datos de la memoria Redis

Antecedentes
Con el advenimiento de la era de los grandes datos de Internet +, la base de datos relacional tradicional puede sitios ya no grandes en el creciente volumen de tráfico de datos y se encuentran. Esta vez necesitamos una manera de acceder rápidamente a los datos de los componentes para aliviar la presión en el servidor de base de datos de E / S, y para resolver el cuello de botella en el rendimiento del sistema.

La historia del desarrollo de la base de datos

  • 1. Antes de la era de datos de Internet + grande, algún sistema de gestión de la información corporativa interna, una única instancia de base de datos será capaz de satisfacer las necesidades del sistema de
    instancia única base de datos

  • 2. Con el aumento del acceso al sistema del usuario, aumento de la cantidad de datos, una sola instancia del sistema de base de datos ha fallado en cumplir con las necesidades de la lectura
    memoria intermedia (Memcache) + instancia de base única

  • 3. La caché de lectura puede aliviar la presión del sistema, pero la cantidad de datos escritos a la presión sigue aumentando;
    búfer + + leer la base de datos principal del separador

  • 4. El importe de datos aumenta de nuevo, después de la lectura y de escritura separado, escribir presión biblioteca de la base de datos principales cuellos de botella;
    caché de la base de datos de clúster desde el maestro + + + sub-biblioteca de lectura y escritura sub-tabla separada

  • 5. Internet + gran época de datos, bases de datos relacionales no puede acceder a algunos de la muy buena concurrencia alta, alta en tiempo real, y el formato de los datos no se fija de datos. + + NoSQL separadas de lectura y escritura de la biblioteca + sub-grupo de base de datos de sub-tabla principal

2 Redis

Redis es un alto rendimiento, de código abierto, el desarrollo del lenguaje C, la base de datos NoSQL clave para el almacenamiento de datos.

NoSQL: no sólo sql, se refiere a bases de datos no relacionales Redis / / MongoDB hbase Hadoop
bases de datos relacionales: MySQL, Oracle, SqlServer

propiedades Redis

  • Cuando la persistencia de datos de apoyo Redis, los datos en la memoria se pueden guardar en el disco, el reinicio se puede volver a utilizar
  • Redis apoya no sólo los tipos de datos de valores clave simples, mientras que también proporciona lista, establezca los tipos de datos
  • Redis compatible con los datos de copia de seguridad

Redis ¿para qué sirve?
La función principal de los Redis: Acceso rápido

escenarios de aplicación Redis
lista de amigos en línea plataforma de pulgar hacia arriba / pico / emisión / producto de la clasificación / inicio de sesión único

Redis cómo utilizar?
dirección del sitio web oficial: sitio web oficial
Dirección de comandos: Comando Dirección

Redis cinco tipos y escenarios de datos
de cadena / lista / set / almohadilla / zConfigurar

Redis instalación y puesta en marcha
en el sistema Ubuntu

sudo apt-get install redis-servidor

Ver ayuda de mandatos
Redis-servidor --help
Aquí Insertar imagen Descripción

Redis editar el archivo de configuración
sudo vim /etc/redis/redis.conf
se convierte en demonio no sí daemonize
para guardar y salir
Aquí Insertar imagen Descripción

Inicio
Redis-servidor
Aquí Insertar imagen Descripción

Abren las Redis servicio sudo service comienzan

Cerrar Servicio de sudo ReDiS parada

Redis procesos abiertos en el sistema de Windows : extrae directamente, las ventanas no son compatibles con daemonize
Aquí Insertar imagen Descripción

el perfil de Redis

/etc/redis/redis.conf

Cuando Redis ejecutarse como un demonio, será un archivo PID para el interior /var/run/redis.pid.
daemonize sin

Escuchando número de puerto, el valor predeterminado es 6379, si se establece en 0, Redis va a escuchar a cualquier cliente no está conectado a la toma.
el puerto 6379

número del sistema de bases de datos.
bases de datos 16

El número de veces que un intervalo de tiempo dado y guardar los datos de escritura en el disco
En el siguiente ejemplo se quiere decir:
si al menos un cambio de valor clave, luego se almacena dentro de 900 segundos
tecla de cambio de valor 10 si hay por lo menos 300 segundos, los almacenados
60 segundos si al menos 10.000 cambio de clave de valor, la almacena
parada 900. 1
Guardar 300 10
ahorro 60 10000

Escuchando número de puerto, el valor predeterminado es 6379, si se establece en 0, Redis va a escuchar a cualquier cliente no está conectado a la toma.
el puerto 6379

Redis permite sólo conexiones locales de forma predeterminada, no permite que otras máquinas conectadas a
obligar a 127.0.0.1

Más perfil: https: //www.cnblogs.com/kreo/p/4423362.html

Fácil de usar la base de datos Redis

DBSIZE ------------------------- ver el número de clave actual de bases de datos
teclas * ---------------- ----------- ver el contenido clave
FLUSHDB --------------------- borrar el número actual de base de datos clave
flushall ----- --------------- borrar toda la llave bibliotecas (precaución)
la clave existe ----------------------- juez si existen clave

Aquí Insertar imagen Descripción

3, REDIS cinco tipos comunes de datos

1.redis cuerdas

Redis cadena es el tipo más básico, una clave que corresponde a un valor de
cadena puede contener cualquier dato, no exceder el máximo 512M

set / get / del / append / strlen

set  ---- 设置值
get  ---- 获取值
mset  ---- 设置多个值
mget  ---- 获取多个值
append ---- 添加字段
del ---- 删除
strlen ---- 返回字符串长度

Aquí Insertar imagen Descripción
incr / decr / incrby / decrby

incr ---- 增加
decr ---- 减少
incrby  ----- 制定增加多少
decrby  ----- 制定减少多少

Aquí Insertar imagen Descripción

GetRange / SetRange

getrange ---- 获取指定区间范围内的值,类似between....and的关系
setrange ---- 代表从第几位开始替换,下脚本从零开始从0 -1表示全部

Aquí Insertar imagen Descripción

2.redis-lista (un solo valor del valor múltiple)

Lista (lista)
lista es una simple lista de cadenas, para la ordenación por inserción, los elementos se puede añadir una cabecera de la lista (izquierda) o una parte de cola (lado derecho)
que es una lista de lo real que subyace

Lpus / RPU / Lrange

lpush/rpush/lrange ---- 从左/从右/获取指定长度
lpush list01  1 2 3 4 5  倒序排列
rpush list02  1 2 3 4 5  正序排列
lrange  list01  0  -1  获取list01 中的所有值

Aquí Insertar imagen Descripción
lpop / RPOP

lpop/rpop ---- 移除最左/最右
lpop list01 删除最左元素
rpop list01 删除最右元素

Aquí Insertar imagen Descripción
lindex, obtenido de acuerdo con el elemento de indexación subíndice (de arriba abajo)

lrange list01 0 -1
lindex list01 1

Aquí Insertar imagen Descripción
llen, lista de búsqueda de longitud

llen list01 

clave lrem

删N个value
lrem list01 2 1   在list01中删除2个1

Aquí Insertar imagen Descripción
clave ltrim

ltrim ---- 开始index结束index,截取指定范围的值后在赋值给key
ltrim list01 0 2    截取list01 从0到2的数据在赋值给list01

Aquí Insertar imagen Descripción
rpoplpush lista1 lista2 a lista1 última empujados por primera vez en lista2

lrange list01 0 -1
lrange list02 0 -1
rpoplpush list1 list2

LSET valor de índice de clave

lset list01 0 x     将list02中第一位换成x

Aquí Insertar imagen Descripción
Linsert clave antes / después

linsert list01b  before x php  在x之前加字段php

Aquí Insertar imagen Descripción

3.redis-Hash

es una colección de clave hash
hash se un tipo de cadena y el valor de la tabla de asignación de campos, hachís particularmente adecuado para el almacenamiento de objetos

HAjuste / hget / hmset / hmget / hgetall / HDEL

设值/取值/设值多个值/取多个值/取全部值/删除值
hset user id 11
hget user id 
hmset customer id 11 name juran age 26
hmget customer id name age      只返回相应的值
hgetall   customer              返回全部
hdel user id   删除id

Aquí Insertar imagen Descripción
HLEN longitud búsqueda de hash

hlen customer   

clave hexists

hexists ---- 在key里面的某个值
存在返回1 ,不存在返回0

HKEY / ballena

hkeys students
hvals students

Aquí Insertar imagen Descripción

4.redis-conjunto (no duplicar)

Set (conjunto)
SET colección desordenada de tipo cadena, no hay elementos duplicados

Sadd / smembers / sismember

sadd/smembers/sismember ---- 添加/查看集合/查看是否存在
sadd set01 1 2 2 3 3   去掉重复添加
smembers set01         得到set01
sismember set01 1      如果存在返回1  不存在返回0

Aquí Insertar imagen Descripción
SCard

scard ---- 获取集合里面的元素个数
scard set01   

valor de la clave srem

srem ---- 删除集合中元素
srem set01 3
SMEMBERS set01   3已经被删除掉

Aquí Insertar imagen Descripción
clave srandmember

srandmembe ---- 随机出几个数
sadd set02  1 2 3 4 5 6 7 8
srandmember set02  2 

clave SPop

spop ---- 随机出栈
spop set01

smove key1 clave2

sadd set03 x y z 
smove set01 set03 2  将set01中的2 移动到set03中

Aquí Insertar imagen Descripción
colecciones matemáticos

sadd set01 1 2 3 4 5
sadd set02 1 2 3 a b
差集
SDIFF set01 set02   返回 4 5 在第一个set中不在第二个set中
交集
SINTER set01 set02   返回 1 2 3
并集
SUNION set01 set02  返回set01 set02 中的值  去掉重复

5.redis-zConfigurar

ZConfigurar (conjunto ordenado)

Zadd / zrange

zadd zset01 60 v1 70 v2 80 v3 90 v4 100 v5
zrange zset01 0 -1 
带分数返回   withscores

Aquí Insertar imagen Descripción
zrangebyscore extremo inicial clave

zrangebyscore key start end----根据开始结束来取值
zrangebyscore zset01 60 70

zrangebyscore zset01 60 (90   表示不包含90

zrangebyscore zset01  60 90  limit  1 2 从第一条开始截取2条

Aquí Insertar imagen Descripción
clave zrem

zrem key value---- 某score下对应的value值,作用是删除元素
zrem zset01 v1  

zcard / zcount puntuación clave 区间 / zrank valores clave

zcard   求zset01 总条数
zcount  zset01 60 90  求60-90个数
zrank   zset01  v2   返回1  返回对应下角标,从0开始

Aquí Insertar imagen Descripción

4, Python operación Redis

redispy conexión de la instalación y
la instalación

pip install redis

conexión

r = redis.StrictRedis(host='localhost',port=6379,db=0)

operaciones relacionadas con Cuerda

import redis


class TestString(object):
    def __init__(self):
        self.r = redis.StrictRedis(host='127.0.0.1', port=6379)
    
    # 设置值
    def string_set(self, keys, items):
        res = self.r.set(keys, items)
        print(res)                              # 返回的是布尔类型的值
    
    # 取值
    def string_get(self, keys):
        res = self.r.get(keys)
        return res
    
    # 设置多个值
    def string_mset(self, items):
        if isinstance(items, dict):
            res = self.r.mset(items)
            print(res)
        
    # 取多个值
    def string_mget(self, keys):
        if isinstance(keys, dict):
            res = self.r.mget(keys)
            print(res)
        
    # 删除
    def string_del(self, keys):
        if self.r.exists(keys):
            self.r.delete(keys)
        else:
            # return "{} is not found".format(keys)
            raise ValueError("{} is not found".format(keys))


if __name__ == '__main__':
    s = TestString()
    
    d = {
        "user": "123",
        "user1": "1"

    }
    s.string_mset(d)
    print(s.string_del("user"))

Una lista de las operaciones conexas

import redis


class List_Redis(object):
    def __init__(self):
        self.r = redis.StrictRedis(host='127.0.0.1', port=6379)
    
    # 添加值
    def list_lpush(self, keys, items):
        res = self.r.lpush(keys, items)
        return res
    
    # 删除元素
    def list_lpop(self, keys):
        result = self.r.lpop(keys)
        return result


if __name__ == '__main__':
    l = List_Redis()
    # l.list_lpush('li9', '1 2 3 4 5 6  7 8 8 9')
    l.list_lpop("li9")

Una colección de las operaciones conexas

import redis


class Set_Redis(object):
    def __init__(self):
        self.r = redis.StrictRedis(host='127.0.0.1', port=6379)
        
    # 添加数据
    def set_sadd(self,keys, items):
        result = self.r.sadd(keys, items)
        return result
    
    # 删除数据
    def set_srem(self, keys, values):
        res = self.r.srem(keys, values)
        return res
    
    # 随机删除元素
    def set_pop(self, keys):
        res = self.r.spop(keys)
        return res
    
    
if __name__ == '__main__':
    s = Set_Redis()
    s.set_sadd('s1', '1 2 3 4 5')
    s.set_pop('s1')

operaciones relacionadas con hachís

import redis


class Hash_Redis(object):
    def __init__(self):
        self.r = redis.StrictRedis(host='127.0.0.1', port=6379)

    # 设置值
    def hash_hset(self, keys, items,values):
        result = self.r.hset(keys, items, values)
        return result
    
    # 取值
    def hash_hgetall(self, keys):
        result = self.r.hgetall(keys)
        return result
    
    # 判断是否存在	存在返回1  不存在返回0
    def hash_hexists(self, keys, values):
        res = self.r.hexists(keys, values)
        print(res)
    
    
if __name__ == '__main__':
    h = Hash_Redis()
    h.hash_hset('h1', 'id', '1')

5, la configuración Redis maestro-esclavo

  • ⼀ un maestro puede tener más de un esclavo, un esclavo de garantía ⼀ separado puede tener más de un esclavo, lo que sucede, formando una sólida arquitectura de clúster de servidores multi-nivel de zoom
  • maestro utilizado para datos de escritura, esclavo para leer los datos, las estadísticas: la alfabetización sitio proporción es de 10: 1
  • La configuración puede ser implementado por separadas de lectura y escritura de la primaria
  • maestro y el esclavo es un ejemplo redis (servicio redis)
    Aquí Insertar imagen Descripción

configuración maestro-esclavo
configurar el maestro

Modificar el archivo etc / Redis / redis.conf

0.0.0.0 unen o el cambio a un IP nativa

configuración desde

Copiar etc / Redis / redis.conf archivo
cp redis.conf slave.conf

Modificar ReDiS / slave.conf archivo
vim slave.conf

se unen 192.168.154.131 (host IP)
slaveof 192.168.154.131 (IP del equipo) 6379 (puerto host)
puerto 6378 (puerto esclavo)

Activar el servicio de acogida

src / Redis-servidor slave.conf

src / Redis-cli -h 0.0.0.0 -p 6379

Introduzca desde el cliente

src / Redis-CLI -h 192.168.154.131 -p 6378

Aquí Insertar imagen Descripción

Publicado 60 artículos originales · ganado elogios 9 · vistas 5040

Supongo que te gusta

Origin blog.csdn.net/weixin_42118531/article/details/104729275
Recomendado
Clasificación