随笔分类 - Middlewares
包括但不限于Redis、Kafka、MQ、Nginx等常用的中间件
摘要:很多情况下我们需要知道某条SQL语句的性能,都会通过EXPLAIN命令来查看查询优化器是如何执行的。 如何使用 使用EXPLAIN很简单,只需要在执行的SQL前面加上EXPLAIN即可 explain select s.sid sid, s.name studentName, s.age age,
阅读全文
摘要:在互联网公司MySQL的使用非常广泛,大家经常会有MySQL性能优化方面的需求。整理了一些在MySQL优化方面的实用技巧。 Schema与数据类型优化 整数通常是标识列最好的选择,因为它们很快并且可以使用AUTO_INCREMENT 完全“随机”的字符串(如:MD5()、SHA1()或者UUID()
阅读全文
摘要:事务的特性(ACID) 原子性(Atomicity):一个事务必须被视为一个不可分割的最小工作但愿,整个事务中的所有操作要么全部提交成功,要么全部失败回滚,对于一个事务来说,不可能只执行其中的一部分操作 一致性(Consistency):数据库总是从一个一致性的状态转换到另一个一致性的状态。 隔离性
阅读全文
摘要:Redis的发布和订阅功能分为频道订阅和模式订阅两种。每当有其他客户端向被订阅的频道发送消息时,频道的所有订阅者都会收到这条消息。 ##频道订阅 当一个客户端执行SUBSCRIBE命令订阅某个或某些频道时,这个客户端与被订阅频道之间就建立起了一种订阅关系。 #####订阅 每当客户端执行SUBSCR
阅读全文
摘要:Redis通过MULTI、EXEC、WATCH、DISCARD等命令来实现事务功能。主要有以下三个阶段: ##事务开始 MULTI命令的执行,标识着一个事务的开始。MULTI命令会将客户端状态的flags属性中打开REDIS_MULTI标识来完成的。 ##命令入队 当一个客户端切换到事务状态之后,服
阅读全文
摘要:Redis集群是Redis提供的分布式数据库方案,集群通过分片(Sharding)来进行数据共享,并提供复制和故障转移功能。 ##节点 一个节点就是一个运行在集群模式下的Redis服务器,Redis服务器在启动的时候会根据cluster-enabled配置项来决定是否开启服务器的集群模式。 节点当前
阅读全文
摘要:Sentinel(哨兵、哨岗)是Redis的高可用(high availability)解决方案:由一个或多个Sentinel实例组成Sentinel系统可以监视任意多个主服务器以及它们属下的所有从服务器,并在监视主服务器进行下线时,将主服务器下属的从服务器升级为新的主服务器,然后由新的主服务器代替
阅读全文
摘要:Redis的复制功能分为同步(sync)和命令传播(command propagate)两个操作。 ##同步 同步操作用于将从服务器的数据库状态更新至主服务器当前所处的数据库状态。 ###1. 旧版本的执行步骤 从服务器向主服务器发送SYNC命令 主服务器执行BGSAVE命令,生成RDB文件,并使用
阅读全文
摘要:Redis服务器是一个事件驱动程序,服务器需要处理两类事件:文件事件(file event)和时间事件(time event) ##Redis事件处理流程 aeMain函数通过调用aeProcessEvents函数来进行文件事件和时间事件的调度和执行。aeEventLoop中记录了事件相关的信息。首
阅读全文
摘要:Redis官方提供了两种数据持久化的方式,分别是:RDB和AOF。今天我们来讨论一下这两种持久化方式的区别。 ##RDB 基本原理:RDB持久化主要是通过SAVE和BGSAVE两个命令对Redis数据库中当前的数据做snapshot并生成rdb文件来实现的。其中SAVE是阻塞的,BGSAVE是非阻塞
阅读全文
摘要:Redis一共支持5种数据结构,hash是其中的一种,在hash扩容的时候采用的是渐进式rehash的方式。要想深入理解渐进式rehash,首先要了解以下Redis中hash的数据结构。 #####哈希表节点 typedef struct dictEntry { void *key; // 键 un
阅读全文
摘要:##Key的过期策略 Redis的Key有3种过期删除策略,具体如下: ###1. 定时删除 原理:在设置键的过期时间的同时,创建一个定时器(timer),让定时器在键的过期时间来临时,立即执行对键的删除操作 优点:能够很及时的删除过期的Key,能够最大限度的节约内存 缺点:对CPU时间不友好,如果
阅读全文
摘要:Redis中的每个对象都由一个redisObject结构表示,该结构中和保存数据有关的三个属性分别是type、encoding和ptr: typedef struct redisObject { unsigned type:4; // 类型 unsigned encoding:4;// 编码 uns
阅读全文
摘要:1 1、恢复备份好的snapshot 2 3 1.1恢复snapshot_1下的所有index 4 5 POST _snapshot/my_backup/snapshot_1/_restore 6 7 1.2恢复snapshot_1下指定的index 8 9 POST /_snapshot/my_b
阅读全文
摘要:Elasticsearch备份数据 1、建立备份目录 POST _snapshot/my_backup/ { "type": "fs", "settings": { "location": "/mount/backups/my_backup", "max_snapshot_bytes_per_sec
阅读全文
摘要:工作中经常会用到的指令 1 # 查询topic为test的partition数量 2 ./kafka-topics.sh --zookeeper localhost:2181/kafka --topic test --describe 3 4 5 # 查看kafka上所有的topic 6 ./kaf
阅读全文
摘要:一、运行环境 以下所有的描述都是基于Activiti的5.20.0.1版本 1 public interface ProcessEngine extends EngineServices { 2 3 /** the version of the activiti library */ 4 publi
阅读全文
摘要:1.start cd usr/local/nginx/sbin ./nginx 2.restart kill -HUP PID #主进程号或进程号文件路径 #或者使用 cd /usr/local/nginx/sbin ./nginx -s reload 3.shutdown #查询nginx PID
阅读全文
摘要:The steps for installing the nginx on Ubuntu below. 1.install the packages first. apt-get install gcc apt-get install libpcre3 libpcre3-dev apt-get in
阅读全文

浙公网安备 33010602011771号