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中执行以下命令,从系统安装镜像中安装编译环境:
yum --disablerepo=\* --enablerepo=c6-media groupinstall -y "Development Tools"
2. 安装依赖关系
在Shell中执行以下命令,从系统安装镜像中安装依赖关系:
## 进行make test测试时需要使用
yum --disablerepo=\* --enablerepo=c6-media install -y tcl-devel
## redis的lua组件需要使用
yum --disablerepo=\* --enablerepo=c6-media install -y readline-devel
三、下载和安装Redis
1. 下载Redis源码包
在Shell中执行以下命令,将源码包下载至指定目录中:
cd /root/Downloads
wget http://download.redis.io/releases/redis-3.2.1.tar.gz
2. 解压缩源码包
在Shell中执行以下命令,解压缩源码包:
tar zxvf redis-3.2.1.tar.gz
3. 编译安装Redis
在Shell中运行以下命令,编译安装Redis:
cd redis-3.2.1
mkdir -p /usr/local/Redis
make MALLOC=jemalloc V=1 PREFIX=/usr/local/Redis install
在上述命令中:
MALLOC=jemalloc
:表示Redis使用jemalloc作为内存分配器,jemalloc的内存碎片率和内存性能要比libc好得多。V=1
:表示编译时将会输出更加详细的输出信息。PREFIX=/usr/local/Redis
:表示Redis的安装目录,此处只会将编译后的二进制文件安装至指定的目录中。
编译安装完成之后,在Shell中运行以下命令,测试编译安装是否正确:
make test
若编译安装成功,则上述命令的输出信息如下图所示:
4. 安装服务
上文中的make install
命令只会将编译后的二进制文件安装至指定的目录,但是不会安装Redis的服务管理脚本和配置文件,这样对于使用和管理Redis是极为不便的。Redis的源码包中具有一个用于安装服务管理脚本和配置文件的安装脚本,在Shell中执行以下命令:
cd utils
./install_server.sh
这个脚本会询问几个问题,然后再根据答案执行相应的安装操作,安装成功之后会自动启动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中运行以下命令:
vi /etc/profile
然后,在该文件的末尾新增一行,内容为:
export PATH=$PATH:/usr/local/Redis/bin
保存上述文件之后,使环境变量生效:
source /etc/profile
6. 修改安全配置
在Shell中运行以下命令,编辑redis.conf配置文件:
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服务:
service redis_6379 restart
四、简单测试
1. 检查服务是否在运行
在Shell中运行以下命令,检查Redis服务是否正在运行:
service redis_6379 status
若服务尚未运行,则在Shell中运行以下命令,启动redis服务:
service redis_6379 start
2. 查看服务端的配置和状态
在Shell中运行以下命令,进入Redis命令行:
redis-cli
然后,在Redis命令行中运行以下命令,查看服务端的配置和状态:
info server
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命令行中运行以下命令,退出命令行:
exit
3. 查看内存配置
在Shell中运行以下命令,进入Redis命令行:
redis-cli
然后,在Redis命令行中运行以下命令,查看内存的配置和状态:
info memory
内存的配置和状态如下图所示:
由上图可知,内存具有以下配置和状态:
used_memory
:由Redis分配器分配的内存总量为821432字节;used_memory_human
:以人类可读的格式返回Redis分配的内存总量为802.18KB;used_memory_rss
:从操作系统的角度,返回Redis已分配的内存总量(俗称常驻集大小)为7778304字节。这个值和top
、ps
等命令的输出一致。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_ratio
:used_memory_rss
和used_memory
的比值为9.47;mem_allocator
:Redis使用的内存分配器为jemalloc。
最后,在Redis命令行中运行以下命令,退出命令行:
exit
4. 从本地连接
在Shell中运行以下命令,进入Redis的命令行:
redis-cli
然后,在Redis的命令行中运行以下命令,在本地测试Redis缓存。命令和输出信息如下图所示:
最后,在Redis命令行中运行以下命令,退出命令行:
exit
5. 从客户端连接
在一台Windows主机上安装Redis Desktop Manager,然后运行这个客户端软件。点击软件左下方的Connect to Redis Server
按钮,指定Redis服务端的主机名、IP地址和端口号,然后点击OK
按钮,如下图所示:
然后,在左侧窗口点击已经建立的Redis服务端的主机名,打开数据库列表,可以看到db0~db15的列表。接下来,点击db0,这样便能看到先前本地设置时添加的两个key,如下图所示:
点击db0中的foo
和mycounter
,便能看到这两个key中存储的值了。
至此,Redis便已经在CentOS服务器上成功安装了,并且经过了简单的测试!