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
Redis editar el archivo de configuración
sudo vim /etc/redis/redis.conf
se convierte en demonio no sí daemonize
para guardar y salir
Inicio
Redis-servidor
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
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
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 ---- 返回字符串长度
incr / decr / incrby / decrby
incr ---- 增加
decr ---- 减少
incrby ----- 制定增加多少
decrby ----- 制定减少多少
GetRange / SetRange
getrange ---- 获取指定区间范围内的值,类似between....and的关系
setrange ---- 代表从第几位开始替换,下脚本从零开始从0 -1表示全部
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 中的所有值
lpop / RPOP
lpop/rpop ---- 移除最左/最右
lpop list01 删除最左元素
rpop list01 删除最右元素
lindex, obtenido de acuerdo con el elemento de indexación subíndice (de arriba abajo)
lrange list01 0 -1
lindex list01 1
llen, lista de búsqueda de longitud
llen list01
clave lrem
删N个value
lrem list01 2 1 在list01中删除2个1
clave ltrim
ltrim ---- 开始index结束index,截取指定范围的值后在赋值给key
ltrim list01 0 2 截取list01 从0到2的数据在赋值给list01
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
Linsert clave antes / después
linsert list01b before x php 在x之前加字段php
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
HLEN longitud búsqueda de hash
hlen customer
clave hexists
hexists ---- 在key里面的某个值
存在返回1 ,不存在返回0
HKEY / ballena
hkeys students
hvals students
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
SCard
scard ---- 获取集合里面的元素个数
scard set01
valor de la clave srem
srem ---- 删除集合中元素
srem set01 3
SMEMBERS set01 3已经被删除掉
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中
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
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条
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开始
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)
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