目前多数的NoSql数据库本质上都是键值对形式,Redis也不例外。作为缓存数据库的一种,和Memcached相比,有以下几种主要的优点:
(1)速度上,Redis要比Memcached快,这是基于一些Benchmarks的测试结果得出的,而且在内存使用上,Redis突破了物理内存限制,可以使用虚拟内存;
(2)数据类型比Memcached要多,Redis支持List、Set、SortedSet、HashMap等多种数据结构;
(3)持久化方面,Memcached没有相应的持久化机制,而Redis有RDB快照和AOF日志两种形式结合做持久化,很大限度上保证了数据的持久化和安全性,不像Memcached断电后全都没了。
Redis不失为Memcached的一种良好的替代方案。
MongoDB是一种适合做格式化文档的存储及查询的NoSql数据库,它可以可以用来做海量数据存储,毕竟是一种硬盘数据库,和Redis这种缓存数据库没什么可比性。网上那么多讨论的,这里就不说了,见参考文档1。
Redis也可以在硬盘上存储数据以及跨节点复制数据,也可以用来做队列系统,据说GitHub就采用Redis作为其基础架构。
Ubuntu 12.10下安装Redis(图文详解)+ Jedis连接Redis
CentOS 6.3安装Redis
2 安装部署目前官方发布的最新稳定版是2.8.6,我们就以它为例进行下述的操作及说明。
2.1 Centos安装部署安装步骤如下:
(1)将redis-2.8.6.tar.gz安装包拷贝到我们的指定目录下;
(2)使用命令tar -zxvf redis-2.8.6.tar.gz将tar包解压缩,得到redis-2.8.6目录;
(3)进入redis-2.8.6目录,执行make命令进行编译;
(4)编译结束之后,配置redis.conf文件,将“daemonize”属性设置为“yes”,表示我们会以后台进程形式启动Redis服务;将“port”属性设置为指定的端口,这里默认为“6379”;将“logfile”属性设置为指定的日志路径,其余的属性可以保持默认。
(5)使用命令src/redis-server ./redis.conf启动Redis服务,启动之后,可以在刚才配置的日志路径中看到如下类似信息:
这个帅气的图标就是Redis的LOGO了。
(6)执行客户端命令,验证服务是否正常:
(7)Redis服务停止命令,src/redis-cli shutdown
2.2 conf配置文件说明刚才在部署的时候,提到了redis.conf这个文件,这是整个Redis的最重要的配置文件,对于其中的一些参数,做如下说明:
属性
说明
daemonize
如果值是“yes”,则启动服务的时候是后台守护进程形式,如果值是“no”,则相反
pidfile
指定存储Redis进程号的文件路径
port
指定当前Redis服务的端口,默认为6379
tcp-backlog
此参数确定了TCP连接中已完成队列(完成三次握手之后)的长度, 当然此值必须不大于Linux系统定义的/proc/sys/net/core/somaxconn值,默认是511,而Linux的默认参数值是128。当系统并发量大并且客户端速度缓慢的时候,可以将这二个参数一起参考设定。
timeout
客户端和Redis服务端的连接超时时间,默认是0,表示永不超时。
tcp-keepalive
如果值非0,单位是秒,表示将周期性的使用SO_KEEPALIVE检测客户端是否还处于健康状态,避免服务器一直阻塞,官方给出的建议值是60S。
loglevel
Redis总共支持四个级别:debug、verbose、notice、warning。
Debug:记录很多信息,用于开发和测试;
Varbose:有用的信息,不像debug会记录那么多;
Notice:普通的verbose,常用于生产环境;
Warning:只有非常重要或者严重的信息会记录到日志;
默认是notice级别。
logfile
日志的存储路径
databases