Puntos de conocimiento de Redis (para revisión, para ser resueltos)

NOSQL (no solo sql) ;


Se refiere a la base de datos no relacional, que tiene las ventajas de una fácil expansión, gran volumen de datos, alto rendimiento y modelos de datos diversos y flexibles.

¿Qué es el ACID tradicional?


La atomicidad 事务里面的操作要么全执行,要么都不执行atomicidad: ;
Consistencia 事务开始前和结束时,数据库的完整性约束不被破坏。比如A向B转账,不可能A扣了钱,但是B没有收到La consistencia: ;
Aislamiento 并发执行的事务对彼此的中间状态不可见Aislamiento: ;
Durabilidad Rev Persistencia: 事务一旦提交,对数据库的修改就是永久了;

Cuatro nivel de aislamiento de la transacción
a la lectura no confirmada (la Leer uncommited): 会脏读、不可重复读、幻读问题;
【脏读:指的是一个事务读取了另一个事务未提交的数据】
【不可重复读:指的是在一个事务内,多次读取某一行数据,结果不一致】
【幻读:指的是一个事务读取了另一个事务插入的数据,导致前后读取不一致】

Lectura confirmada (Leer Commited): 一个事务当等另一个事务提交后才能读取数据,会出现不可重复读和幻读问题;(Oracle的默认隔离级别)
Lectura repetible (Lectura repetible): 一个事务开启时,不允许其他事务修改该事务的数据,会出现幻读问题;(MySQL的默认隔离级别)
serialize (Serializable): 最高的隔离级别,事务串行化执行;

Teoría de la PAC?


Consistency:一致性
Availability: 高可用
partition tolerance:分区容错

redis garantiza CP

Redis es un modelo de multiplexación de E / S de un solo subproceso, sin bloqueo, con 16 bibliotecas de forma predeterminada;

Subproceso único: evite el cambio innecesario de contexto y el consumo de condición de carrera CPU;
multiplexación de E / S: utilice el sondeo para procesar secuencias preparadas en secuencia, evitando muchas operaciones inútiles;

Redis estructura de datos de uso común?


1. String: 简单的k-v键值对;
2. Hash:是一个String类型的field和value的映射表,hash特别适合用于存储对象;
3. list:底层实现是双向链表;
4. set:功能与list类似,特殊之处set可以排重;
5. sorted set: 和set相比,增加了一个score参数,使得集合中的元素能够按照score进行有序排列,并且是插入有序的,即自动排序;

Persistencia de redis?


1.RDB :
在指定的时间间隔内,把内存中的数据集快照写入磁盘,恢复的时候直接将磁盘的数据集写入内存
默认是15分钟1次,5分钟100次,1分钟10000次写操作触发
保存的是dump.rdb文件
ventajas: 适合大规模的数据恢复
desventajas:
1 会丢失最后一些快照后的所有修改.;
2 fork子线程时,内存中的数据被克隆的一份,2倍空间的膨胀性需要考虑.;
2.AOF (agregar solo archivo) :
以日志的形式记录每个写操作,只需追加文件不许改写文件,redis启动之初会读取文件来重新执行命令来构建数据
生成是appendonly.aof文件; 默认是关闭的,开启时 appendonly no 改成yes

Reescritura 当aof文件超过某个设定的阀值时,redis就会启动文件的压缩,只保留恢复数据的最小指令集,可以使用命令gbrewirteaof执行mecanismo: .
Reescribir fork一个新线程来重写,先写临时文件再rename,重写时不会读取旧的aof文件,而是把内存中的数据用命令的形式重写一个新的aof文件principio: ;
gatillo de reescritura redis会记录上次重写aof文件的大小,默认配置当aof文件是上次重写的一倍且文件大于64Mcondiciones: ;

Cuando tanto rdb como aof están habilitados al mismo tiempo, redis primero cargará el archivo aof para restaurar los datos originales.
Comparación:
1 aof文件比red文件更新频繁,优先使用aof还原数据.;
2 aof比rdb更安全,更大.;
3 aof性能比rdb差.;
4.如果两个都配了,优先加载aof

Redis negocio?


一个队列中一次性、顺序性、排他性的执行一系列命令,不保证原子性,同一个事务内如果有一条命令执行失败,其他的命令仍然会被执行,没有回滚

comandos de transacción relacionada:
1.discard:取消事务,放弃执行事务内的所有命令 ;
2.exec:执行事务内的所有命令 ;
3.mutil:标记一个事务的开启 ;
4.watch Key [Tecla 监视一个(或多个)key,如果在事务执行之前,这个key被其他命令所改动,那么事务将被打断...]: ;
5.unwatch:取消watch命令对key的监视 ;

El comando watch es similar al bloqueo optimista La estrategia de bloqueo optimista: la versión enviada debe ser mayor que la versión actual que se ejecutará

redis cluster?


** Redis replicación maestro-esclavo: ** separación de lectura-escritura, recuperación ante desastres;
un tipo es la base de datos maestra (maestro), un tipo es el servidor esclavo (esclavo)
1 主数据库可以进行读写操作,当发生写操作的时候自动将数据指令集通道到从数据库.;
2 从服务器一般是只读的,一个主库可以有多个从库,一个从库只能有一个主库.;

Configuración 配从不配主:;
Desde el comando de configuración de la biblioteca:slaveof 主库Ip 主库端口,查看命令 info replication

Principio:
1 slave启动成功后会给master发送一个sync命令.;
2 master收到sync命令个启动后台存盘程序,同时收集所有接收到的用于修改数据的指令集,在后台程序执行完成后,传送整个文件给slave完成一次全量同步.;
3 全量复制:slave接收到数据文件时,将其存盘,并加载到内存.;
4 增量复制:master继续将收集到的新指令集发送给slave.;
5 slave只要重连master,一次全量复制自动执行.;

modo de Sentinel
后台监控主机是否故障,如果故障根据投票数,将slave转换成master(Sentinel): ;

redis-cluster
redis3.0之后版本支持redis-cluster集群,采用的是无中心结构,每个节点保存数据和整个集群状态,每个节点和其他所有节点连接cluster: .
Características estructurales:
1 所有的redis彼此互连(ping-pong),内部使用二进制协议优化传输数据和带宽.;
2 节点的fail是通过集群中超过半数的节点检测失效才生效.;
3 客户端与redis节点直连,连接集群中任何一个可用节点即可.;
4 redis集群预分配好16384个slot(槽)所有的节点(不一定平均分配),添加k-v时,对key使用crc16算法得到一个hash,取模16384决定将key放入哪个slot.;

¿Cómo pueden múltiples comandos ejecutar redis simultáneamente para asegurar la atomicidad?


1.使用redis事务;
2.使用redis+lua脚本;

¿Cómo asegurar la consistencia de doble escritura de caché y base de datos?


1.先更新数据库再更新缓存;
2.如果对数据有强一致性要求,不建议放缓存;

MaxMemory: configuración de caché máxima.

El valor predeterminado es 0 y no se especifica la memoria caché máxima. Si se agregan nuevos datos y se manipula la memoria máxima, redis se bloqueará, así que asegúrese de configurarlo.
Cuando el conjunto de datos de memoria redis se eleva a un cierto nivel, se implementará una estrategia de eliminación de datos.

Estrategia de vencimiento de Redis y estrategia de eliminación de memoria:


redis过期策略采用的是定期删除+惰性删除
Periódicamente claro: redis每隔100ms随机抽样检查,是否有过期的key,有则删除,但是会导致很多过期的key没有删除;
inerte Delete: 在获取某个key的时候redis会检查一下key是否过期,过期则删除;

Hay seis de estrategias de memoria:
1.volatile la LRU-: 从已设置过期时间的数据集中挑选最近最少使用的数据淘汰;
2.volatile-TTL: 从已设置过期时间的数据集中挑选将要过期的数据淘汰;
3.volatile-aleatoria: 从已设置过期时间的数据集中随机挑选数据淘汰;
4.allkeys la LRU-: 当内存不足以容纳新写入数据时,在键空间中移除最近最少使用的key(这个是最常用的);
5.allkeys-aleatoria: 当内存空间不足以容纳新写入的数据时,随机淘汰数据;
6.No-desalojo: 禁止驱逐数据,当内存不足以容纳新写入的数据时报错.

¿Problemas comunes de rendimiento de redis?


  1. master最好不要做任何持久化工作,如rdb内存快照和aof日志文件,如果数据比较重要,某个slave开启aof备份数据,策略设置为每秒同步一次;
  2. master和slave最好在同一个局域网
  3. 尽量避免压力很大的主库上增加从库,不要用图状结构,用单向链表结构更为稳定。即: Master <- Slave1 <- Slave2 <-Slave3…

¿Cómo configurar el sistema de espigas? ¿Qué pasará con la alta concurrencia?


Diseño arquitectónico:
1. Interceptar solicitudes aguas arriba del sistema y reducir la presión aguas abajo.
秒杀系统特点是高并发,但实际秒杀成功的请求数量却很少,所以不在前端拦截可能造成数据库读写锁冲突,甚至导致死锁,最终请求超时.
2. tomar ventaja de 利用缓存可以极大的提高系统读写速度almacenamiento en caché: .
3. Utilice la mensajería de 消息队列可以削峰,拦截大量并发请求middleware: .

: Diseño front-end de
páginas estáticas: 1. 将活动页面上的所有可静态元素全部静态化;
2. No vuelva a presentar: 用户提交之后按钮置灰;
limitando 3. Usuario: 在某一时间段内,只允许用户提交一次请求;

Plan de diseño de back-end:
1 网关限制uid访问频率.;
2 服务层:采用消息队列缓存请求和利用缓存应对请求.;
3 把减库存和生成订单逻辑使用mysql存储过程实现,减少事务锁持有时间,避免GC和IO的延迟.;

15 artículos originales publicados · Me gusta0 · Visitas 68

Supongo que te gusta

Origin blog.csdn.net/xrzi2015/article/details/105603910
Recomendado
Clasificación