在CentOS上安装Redis缓存系统

Redis是一个使用ANSI C语言编写的开源的NoSQL数据库,它不仅基于内存工作,而且还支持数据持久化,可以在生产环境中作为一种非易失性的存储系统使用。Redis支持通过网络读写数据,它是一种日志型的数据库,能够以Key-Value的形式访问数据,并且还提供了多种语言的API。

本文将描述如何在CentOS系统上搭建Redis缓存系统,并且还会进行简单的测试。

一、环境描述

  • 操作系统:CentOS 6.6 x86_64 Minimal

  • YUM软件仓库:CentOS-6.6-x86_64-bin-DVD1.iso

  • IP地址:10.24.17.26

  • GCC版本:4.4.7

  • Redis版本:3.2.1

二、安装编译环境和依赖关系

1. 安装编译环境

在Shell中执行以下命令,从系统安装镜像中安装编译环境:

  1. yum --disablerepo=\* --enablerepo=c6-media groupinstall -y "Development Tools"

2. 安装依赖关系

在Shell中执行以下命令,从系统安装镜像中安装依赖关系:

  1. ## 进行make test测试时需要使用
  2. yum --disablerepo=\* --enablerepo=c6-media install -y tcl-devel
  3. ## redis的lua组件需要使用
  4. yum --disablerepo=\* --enablerepo=c6-media install -y readline-devel

三、下载和安装Redis

1. 下载Redis源码包

在Shell中执行以下命令,将源码包下载至指定目录中:

  1. cd /root/Downloads
  2. wget http://download.redis.io/releases/redis-3.2.1.tar.gz

2. 解压缩源码包

在Shell中执行以下命令,解压缩源码包:

  1. tar zxvf redis-3.2.1.tar.gz

3. 编译安装Redis

在Shell中运行以下命令,编译安装Redis:

  1. cd redis-3.2.1
  2. mkdir -p /usr/local/Redis
  3. make MALLOC=jemalloc V=1 PREFIX=/usr/local/Redis install

在上述命令中:

  • MALLOC=jemalloc:表示Redis使用jemalloc作为内存分配器,jemalloc的内存碎片率和内存性能要比libc好得多。
  • V=1:表示编译时将会输出更加详细的输出信息。
  • PREFIX=/usr/local/Redis:表示Redis的安装目录,此处只会将编译后的二进制文件安装至指定的目录中。

编译安装完成之后,在Shell中运行以下命令,测试编译安装是否正确:

  1. make test

若编译安装成功,则上述命令的输出信息如下图所示:

检查编译安装的结果

4. 安装服务

上文中的make install命令只会将编译后的二进制文件安装至指定的目录,但是不会安装Redis的服务管理脚本和配置文件,这样对于使用和管理Redis是极为不便的。Redis的源码包中具有一个用于安装服务管理脚本和配置文件的安装脚本,在Shell中执行以下命令:

  1. cd utils
  2. ./install_server.sh

这个脚本会询问几个问题,然后再根据答案执行相应的安装操作,安装成功之后会自动启动Redis服务,如下图所示:

安装Redis服务器

由上图可知:

  • Redis的端口号为6379
  • Redis配置文件的路径为/usr/local/Redis/etc/redis.conf;
  • Redis配置文件的路径为/usr/local/Redis/log/redis.log
  • Redis的数据目录为/usr/local/Redis/data
  • Redis的可执行文件为/usr/local/Redis/bin/redis-server
  • Redis的CLI可执行文件为/usr/local/Redis/bin/redis-cli
  • Redis的服务管理脚本为/etc/init.d/redis_6379
  • Redis服务的运行级别为345

5. 配置环境变量

在Shell中运行以下命令:

  1. vi /etc/profile

然后,在该文件的末尾新增一行,内容为:

  1. export PATH=$PATH:/usr/local/Redis/bin

保存上述文件之后,使环境变量生效:

  1. source /etc/profile

6. 修改安全配置

在Shell中运行以下命令,编辑redis.conf配置文件:

  1. vi /usr/local/Redis/etc/redis.conf

在上述文件中:

  • 找到bind 127.0.0.1(第62行),改为# bind 127.0.0.1,也就是关闭IP绑定,使得Redis服务端能够接受所有的TCP连接;
  • 找到protected-mode yes(第81行),改为protected-mode no,也就是禁用安全模式,否则Redis服务端只会接受本地的TCP连接。然后,重新启动Redis服务:
  1. service redis_6379 restart

四、简单测试

1. 检查服务是否在运行

在Shell中运行以下命令,检查Redis服务是否正在运行:

  1. service redis_6379 status

若服务尚未运行,则在Shell中运行以下命令,启动redis服务:

  1. service redis_6379 start

2. 查看服务端的配置和状态

在Shell中运行以下命令,进入Redis命令行:

  1. redis-cli

然后,在Redis命令行中运行以下命令,查看服务端的配置和状态:

  1. info server

Redis服务端的配置和状态如下图所示:

Redis服务端的配置和状态

由上图可知,服务端具有以下配置和状态:

  • redis_version:使用的Redis版本为3.2.1;
  • redis_git_sha1:Redis使用GIT SHA1保证文件完整性;
  • redis_git_dirty:Redis的脏数据标志;
  • redis_mode:Redis的运行模式为单机模式;
  • os:宿主机操作系统为Linux 2.6.32-504.el6.x86_64 x86_64;
  • arch_bits:宿主机架构为64位;
  • multiplexing_api:Redis使用的事件循环机制为epoll;
  • gcc_version:编译使用的gcc版本为4.4.7;
  • process_id:Redis的进程号为1479;
  • run_id:Redis服务器的随机标识符(用于 Sentinel 和集群);
  • tcp_port:运行的TCP端口号为6379;
  • uptime_in_seconds:自Redis服务端运行至今的时间,以秒为单位;
  • uptime_in_days:自Redis服务端运行至今的时间,以天为单位;
  • lru_clock:以分钟为单位进行自增的时钟,用于LRU管理;
  • executable:Redis服务端的可执行文件为/usr/local/Redis/bin/redis-server;
  • config_file:Redis命令行的可执行文件为/usr/local/Redis/etc/redis.conf

最后,在Redis命令行中运行以下命令,退出命令行:

  1. exit

3. 查看内存配置

在Shell中运行以下命令,进入Redis命令行:

  1. redis-cli

然后,在Redis命令行中运行以下命令,查看内存的配置和状态:

  1. info memory

内存的配置和状态如下图所示:

Redis内存的配置和状态

由上图可知,内存具有以下配置和状态:

  • used_memory:由Redis分配器分配的内存总量为821432字节;
  • used_memory_human:以人类可读的格式返回Redis分配的内存总量为802.18KB;
  • used_memory_rss:从操作系统的角度,返回Redis已分配的内存总量(俗称常驻集大小)为7778304字节。这个值和topps等命令的输出一致。
  • used_memory_rss_human:从操作系统的角度,以人类可读的格式返回Redis分配的内存总量为7.42M;
  • used_memory_peak: Redis的内存消耗峰值为821432字节;
  • used_memory_peak_human:以人类可读的格式返回Redis的内存消耗峰值为802.18KB;
  • total_system_memory:主机内存总量为1952247808字节;
  • total_system_memory_human:以人类可读的格式返回主机的内存总量为1.82GB;
  • used_memory_lua:Lua引擎所使用的内存大小为37888字节;
  • used_memory_lua_human:以人类可读的格式返回Lua引擎所使用的内存大小为37.00KB;
  • mem_fragmentation_ratioused_memory_rssused_memory的比值为9.47;
  • mem_allocator:Redis使用的内存分配器为jemalloc。

最后,在Redis命令行中运行以下命令,退出命令行:

  1. exit

4. 从本地连接

在Shell中运行以下命令,进入Redis的命令行:

  1. redis-cli

然后,在Redis的命令行中运行以下命令,在本地测试Redis缓存。命令和输出信息如下图所示:

本地测试Redis

最后,在Redis命令行中运行以下命令,退出命令行:

  1. exit

5. 从客户端连接

在一台Windows主机上安装Redis Desktop Manager,然后运行这个客户端软件。点击软件左下方的Connect to Redis Server按钮,指定Redis服务端的主机名、IP地址和端口号,然后点击OK按钮,如下图所示:

创建Redis客户端连接

然后,在左侧窗口点击已经建立的Redis服务端的主机名,打开数据库列表,可以看到db0~db15的列表。接下来,点击db0,这样便能看到先前本地设置时添加的两个key,如下图所示:

打开Redis的db0数据库

点击db0中的foomycounter,便能看到这两个key中存储的值了。

  • foo键值对:
    Redis的foo键值对

  • mycounter键值对:
    Redis的mycounter键值对

至此,Redis便已经在CentOS服务器上成功安装了,并且经过了简单的测试!