0%

本文参考了 IntelliJ IDEA 的官网,列举了IntelliJ IDEA(Windows 版)的所有快捷键。并在此基础上,为 90% 以上的快捷键提供了动图演示,能够直观的看到操作效果。

该快捷键共分 16 种,可以方便的按各类查找自己需要的快捷键~~

阅读全文 »

Linux 系统中有很多很有名的搜索类命令,例如 find 命令、locate 命令、sed 命令,但还有三位兄弟是不得不提的,它们在搜索界的地位举足轻重,那就是 grep、egrep、fgrep 三兄弟。

为什么称它们为搜索三兄弟呢?大家看看下面的家谱就一目了然了。

阅读全文 »

在前面的数个章节里,我们陆续介绍了Redis用到的所有主要数据结构,比如简单动态字符串(SDS)、双端链表、字典、压缩列表、整数集合等等。

我们知道,Redis 用到的所有主要数据结构包括有简单动态字符串(SDS)、双端链表、字典、压缩列表、整数集合等等。Redis 并没有直接使用这些数据结构来实现键值对数据库,而是基于这些数据结构创建了一个对象系统, 这个系统包含字符串对象、列表对象、哈希对象、集合对象和有序集合对象这五种类型的对象, 每种对象都用到了至少一种我们前面所说的数据结构。

通过这五种不同类型的对象, Redis 可以在执行命令之前,根据对象的类型来判断一个对象是否可以执行给定的命令。使用对象的另一个好处是, 我们可以针对不同的使用场景, 为对象设置多种不同的数据结构实现,从而优化对象在不同场景下的使用效率。

本文接下来将逐一介绍以上提到的 Redis 对象系统的各个特性。

阅读全文 »

Redis的慢查询日志功能用于记录执行时间超过给定时长的命令请求,用户可以通过这个功能产生的日志来监视和优化查询速度。

服务器配置有两个和慢查询日志相关的选项:

  • slowlog-log-slower-than选项指定执行时间超过多少微秒(1秒等于1000000微秒)的命令请求会被记录到日志上。

举个例子,如果这个选项的值为100,那么执行时间超过100微秒的命令就会被记录到慢查询日志; 如果这个选项的值为500,那么执行时间超过500微秒的命令就会被记录到慢查询日志。

  • slowlog-max-len选项指定服务器最多保存多少条慢查询日志。

服务器使用先进先出的方式保存多条慢查询日志,当服务器存储的慢查询日志数量等于slowlog-max-len选项的值时,服务器在添加一条新的慢查询日志之前,会先将最旧的一条慢查询日志删除。

阅读全文 »

Redis通过MULTI、EXEC、WATCH等命令来实现事务(transaction)功能。事务提供了一种将多个命令请求打包,然后一次性、按顺序地执行多个命令的机制,并且在事务执行期间,服务器不会中断事务而改去执行其他客户端的命令请求,它会将事务中的所有命令都执行完毕,然后才去处理其他客户端的命令请求。

一个事务从开始到结束通常会经历以下三个阶段:

  1. 事务开始。
  2. 命令入队。
  3. 事务执行。

本文接下来的内容将对这三个阶段进行介绍,说明一个事务从开始到结束的整个过程。

阅读全文 »

Redis集群是Redis提供的分布式数据库方案,集群通过分片(sharding)来进行数据共享,并提供复制和故障转移功能。本文将对集群的节点、槽指派、命令执行、重新分片、转向、故障转移、消息等各个方面进行介绍。

阅读全文 »

Sentinel(哨岗、哨兵)是Redis的高可用性(high availability)解决方案:由一个或多个Sentinel实例(instance)组成的Sentinel系统(system)可以监视任意多个主服务器,以及这些主服务器属下的所有从服务器,并在被监视的主服务器进人下线状态时,自动将下线主服务器属下的某个从服务器升级为新的主服务器,然后由新的主服务器代替已下线的主服务器继续处理命令请求。

图16-1展示了一个Sentinel系统监视服务器的例子,其中:

阅读全文 »

Redis服务器负责与多个客户端建立网络连接,处理客户端发送的命令请求,在数据库中保存客户端执行命令所产生的数据,并通过资源管理来维持服务器自身的运转。

1. 命令请求的执行过程

一个命令请求从发送到获得回复的过程中,客户端和服务器需要完成一系列操作。举个例于,如果我们使用客户端执行以下命令:

1
2
redis> SET KEY VRLUE
OK

那么从客户端发送 SET KEY VRLUE 命令到获得回复OK期间,客户端和服务器共需要执行以下操作:

  1. 客户端向服务器发送命令请求SET KEY VRLUE

  2. 服务器接收并处理客户端发来的命令请求 SET KEY VRLUE ,在数据库中进行设置操作,并产生命令回复OK。

  3. 服务器将命令回复OK发送给客户端。

  4. 客户端接收服务器返回的命令回复OK,并将这个回复打印给用户观看。

阅读全文 »

Redis服务器是典型的一对多服务器程序:一个服务器可以与多个客户端建立网络连接,每个客户端可以向服务器发送命令请求,而服务器则接收并处理客户端发送的命令请求,并向客户端返回命令回复。通过使用由IO多路复用技术实现的文件事件处理器,Redis服务器使用单线程单进程的方式来处理命令请求,并与多个客户端进行网络通信。对于每个与服务器进行连接的客户端,服务器都为这些客户端建立了相应的redis.h/redisClient结构(客户端状态,这个结构保存了客户端当前的状态信息,以及执行相关功能时需要用到的数据结构。

阅读全文 »

Redis服务器是一个事件驱动程序,服务器需要处理以下两类事件:

  • 文件事件(file event):Redis服务器通过套接字与客户端(或者其他Redis服务器)进行连接,而文件事件就是服务器对套接字操作的抽象。服务器与客户端(或者其他服务器)的通信会产生相应的文件事件,而服务器则通过监听并处理这些事件来完成一系列网络通信操作。
  • 时间事件(time event):Redis服务器中的一些操作(比如serverCron函数)需要在给定的时间点执行,而时间事件就是服务器对这类定时操作的抽象。

本文将对文件事件和时间事件进行介绍,说明这两种事件在Redis服务器中的应用,它们的实现方法,以及处理这些事件的API等等。本文最后将对服务器的事件调度方式进行介绍,说明Redis服务器是如何安排并执行文件事件和时间事件的。

阅读全文 »