redis简介
redis是一个开源(BSD许可)的使用C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,它可以用作数据库、缓存和消息中间件,并提供多种语言的API。从2010年3月15日起,redis的开发工作由VMware主持。从2013年5月开始,Redis的开发由Pivotal赞助。
redis是一个key-value存储系统。它支持存储的value类型包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。
1、安装redis
1.1使用yum进行安装,这里使用的是yum源,关于如何安装yum仓库请参考我的https://www.cnblogs.com/caesar-id/p/10821105.html
查看阿里源的redis版本
[root@localhost ~]# yum list redis
使用yum安装redis,安装过程非常简单
[root@localhost ~]# yum install redis -y
1.2使用源码安装redis
我们使用yum安装的redis版本是3.2.12,但是截至当前redis版本已经是redis-5.0.4。这里我们就使用最新的版本进行源码安装。
如果你已经使用yum进行了安装,现在想使用最新版本的redis,你最好卸载当前的redis。以免造成不必要的麻烦。
[root@localhost ~]# yum remove redis -y // 卸载yum安装的redis
1.2.1下载redis源码包
[root@localhost ~]# wget -P /opt/source/ http://download.redis.io/releases/redis-5.0.4.tar.gz
1.2.2解包
[root@localhost ~]# tar -zxvf /opt/source/redis-5.0.4.tar.gz -C /opt/
1.2.3安装
[root@localhost ~]# cd /opt/redis-5.0.4/ [root@localhost redis-5.0.4]# make && make install //默认在/usr/local/bin所以就不用我们设置环境变量了
安装后查看redis都有哪些可执行文件
[root@localhost ~]# ls /usr/local/bin/redis-* /usr/local/bin/redis-benchmark // 用于进行redis性能测试的工具 /usr/local/bin/redis-cli // redis的客户端 /usr/local/bin/redis-check-aof // 用于修复出问题的AOF文件 /usr/local/bin/redis-sentinel // 用于集群管理 /usr/local/bin/redis-check-rdb // 用于修复出问题的dump.rdb文件 /usr/local/bin/redis-server // redis的服务端
1.3了解redis服务的配置文件
redis-server 可以指定配置文件来启动服务,这里在redis的安装目录下有个redis.conf模板,我们查看下模板中都有哪些配置
[root@localhost ~]# cat /opt/redis-5.0.4/redis.conf | grep -v "^#" | grep -v "^$ // 过滤掉注释和空行 bind 127.0.0.1 // 绑定服务器IP地址,多个使用空格进行分隔,如果不指定bind默认监听本机所有可用的网络接口 protected-mode yes // 服务器的安全模式 port 6379 // 服务器的端口号 tcp-backlog 511 // TCP连接中已完成队列(完成三次握手之后)的长度 timeout 0 // 客户端空闲n秒后关闭连接(0表示不主动关闭连接) tcp-keepalive 300 // TCP长连接单位秒(300秒没有活动关闭连接) daemonize no // 守护进程建议使用yes启用守护进程,如果是no会阻塞shell窗口 supervised no // 可以通过upstart和systemd管理Redis守护进程,这个参数是和具体的操作系统相关的 pidfile /var/run/redis_6379.pid loglevel notice // 日志级别。可选项有:debug(记录大量日志信息,适用于开发、测试阶段); verbose(较多日志信息); notice(适量日志信息,使用于生产环境);warning(仅有部分重要、关键信息才会被记录)。 logfile "" // 日志文件的位置,当指定为空字符串时,为标准输出,如果redis已守护进程模式运行,那么日志将会输出到 /dev/null 。 databases 16 // 设置数据库的数目 always-show-logo yes save 900 1 // 保存数据到磁盘。格式是:save <seconds> <changes> ,含义是在 seconds 秒之后至少有 changes个keys 发生改变则保存一次 save 300 10 save 60 10000 stop-writes-on-bgsave-error yes // 默认情况下,如果 redis 最后一次的后台保存失败,redis 将停止接受写操作,这样以一种强硬的方式让用户知道数据不能正确的持久化到磁盘, 否则就会没人注意到灾难的发生。 如果后台保存进程重新启动工作了,redis 也将自动的允许写操作。然而你要是安装了靠谱的监控,你可能不希望 redis 这样做,那你就改成 no 好了。 rdbcompression yes // 是否在dump .rdb数据库的时候压缩字符串,默认设置为yes。如果你想节约一些cpu资源的话,可以把它设置为no,这样的话数据集就可能会比较大 rdbchecksum yes // 是否CRC64校验rdb文件,会有一定的性能损失(大概10%)。 dbfilename dump.rdb // dump 的reb文件名字 dir ./ // 数据库的工作目录 replica-serve-stale-data yes //#当副本失去与主服务器的连接时,或当复制仍在进行中,副本可以以两种不同的方式进行操作:1)如果副本服务过时数据设置为“是”(默认值),则副本将仍然答复客户端请求,可能包含过期数据,或者如果这是第一次同步,则数据集可能为空。 // 2)如果副本服务过时数据设置为“否”,则副本将使用对所有类型