前言
redis键命令用于管理redis的键,包括删除,设置指定键的失效时间,移动键到其他库等命令。
本篇主要介绍redis常用配置的作用,以便后期对redis服务进行配置性的优化。redis可以在没有配置文件的情况下,通过内置的配置来启动,但是这种启动方式只适用于开发和测试。配置文件模板位于redis安装目录下,文件名为redis.conf。
通过调整内核参数,我们可以设置端口使用范围,单进程最大可打开的文件描述符数量,tcp收发缓冲区大小,设置TCP连接队列和半连接队列的大小等来优化服务器的性能,尽可能在硬件条件有限的情况下,压榨服务器的性能,使其达到最优。
由于机房断电,导致服务关闭,在运维人员匆忙的情况下,可能就只重启了机器,很容易就忽视了里面的服务,而对于比较重要的服务,是会影响用户使用的,比如数据库服务等。那么为了杜绝这类事情的发生,我们就需要设置服务为开机自启动,当机房断电,机器重启时,在不需要运维人员的干预下,核心重要的服务能够自动启动,接下来将详细说明在linux centos环境下如何设置开机自启动。
redis是一个开源的使用C语言编写、遵守BSD协议、支持网络、可基于内存支持持久化的Key-Value缓存系统,并提供多种语言的API。它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Map), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。
一般讲到网络通信模型,就会涉及到协议,事件驱动模型(select,poll,epoll等),以及序列化与反序列化实现机制。众所周知,在网络传输中,传输的内容都是字节流的形式,所以在网络编程中序列化与反序列化机制则是比较重要的一个模块,而在amqp-client中是没有考虑序列化与反序列化实现机制,而是将这一模块,交由应用层去实现,只负责数据的传输,所以在amqp-client的API中都是直接传输字节数组的参数。下面将围绕着AMQP协议,Socket网络编程,线程协作wait/notify等来展开说明amqp-client具体实现过程,首先在AMQP协议中有这样几个抽象的概念Connection,Channel,Command,Frame等,而amqp-client则是对AMQP协议的具体实现(如同httpclient实现了http协议一样)。其中一个Connection可以创建多个Channel,每个Channel类似一个会话,我们可以针对Channel开启事务模式,Publisher Confirms确认机制等,多个Channel共用一个TCP连接收发消息。
在研究rabbitmq使用特性时,发现如果在连接connection上一段时间内没有消息流动时,就会出现connection自动断开的现象,后台日志中有大量断连的错误日志,这个时候如果client开启了自动恢复连接的功能时,client会自动尝试重新连接服务器。而且client和broker之间是有heartbeat链路保活机制的,在链路空闲的情况下,默认60秒发送一次心跳。从而确保TCP连接不会由于长时间没有数据流动被防火墙,NAT路由等设备清除转发记录,导致TCP连接断连失效,所以从理论上来说,这种空闲连接自动断连的现象应该是不可能出现的,那么又是什么原因导致这一问题的出现呢?下面将逐步分析问题的原因及解决方法。
随着spring被广泛的使用,越来越多的公共组件都慢慢的支持透明的接入spring中,包括dubbo,rabbitmq,ehcache等,我们只需要像配置普通的bean一样,就可以通过spring容器来统一维护和管理这些组件,方便应用程序的使用。下面将细述如何通过spring来整合rabbitmq。