第一步:下载安装包
访问https://redis.io/download 到官网进行下载。我这里是下载的5.0.7版本
注意:centos7默认的gcc版本为4.8.5,安装Redis6.0需要将gcc版本升级到5.3以上
第二步:安装
1.通过远程管理工具,将压缩包拷贝到Linux服务器中,执行解压操作
,我这边是拷贝到/opt目录下
进入opt目录然后执行解压操作
tar -zxf redis-4.0.9.tar.gz
2.进入解压文件目录使用make对解压的Redis文件进行编译
make MALLOC=libc
编译完成之后,可以看到解压文件redis-5.0.7 中会有对应的src、conf等文件夹
3.编译成功后,进入src文件夹,执行make install进行Redis安装。
make install
一般安装很快的,界面如下:
第三步:部署
1.为了方便管理,将Redis文件中的conf配置文件和常用命令移动到统一文件中
1)、创建bin和etc文件
如图示:
2)、回到刚刚安装目录,找到redis.conf,将其复制移动到 /opt/redis-5.0.7/etc 下
执行命令如下:
mv redis.conf /opt/redis-5.0.7/etc
进入src目录,移动mkreleasehdr.sh redis-benchmark redis-check-aof redis-check-rdb redis-cli redis-server到/usr/local/redis/bin/
执行命令 :mv mkreleasehdr.sh redis-benchmark redis-check-aof redis-check-rdb redis-cli redis-server /opt/redis-5.0.7/bin/
依次查看移动后文件
2、执行redis-server 启动redis
碰到的问题:
1.解压执行make命令,出现了如下报错信息:
make[1]: *** [server.o] Error 1
make[1]: Leaving directory `/root/redis-6.0.1/src'
make: *** [install] Error 2
出现这个问题需要先确认GCC的版本,命令如下:
gcc -v
发现CentOS7默认的gcc版本为4.8.5,安装Redis6.0需要将gcc版本升级到5.3以上,则升级gcc命令如下:
yum -y install centos-release-scl
yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
#临时修改gcc版本
scl enable devtoolset-9 bash
#永久修改gcc版本
echo "source /opt/rh/devtoolset-9/enable" >>/etc/profile
升级版本之后再执行则成功编译。
2.编译出错
make[3]: 进入目录“/usr/local/redis-3.2.8/deps/hiredis”
gcc -std=c99 -pedantic -c -O3 -fPIC -Wall -W -Wstrict-prototypes -Wwrite-strings -g -ggdb net.c
make[3]: gcc:命令未找到
make[3]: *** [net.o] 错误 127
make[3]: 离开目录“/usr/local/redis-3.2.8/deps/hiredis”
make[2]: *** [hiredis] 错误 2
make[2]: 离开目录“/usr/local/redis-3.2.8/deps”
make[1]: [persist-settings] 错误 2 (忽略)
CC adlist.o
/bin/sh: cc: 未找到命令
make[1]: *** [adlist.o] 错误 127
make[1]: 离开目录“/usr/local/redis-3.2.8/src”
make: *** [all] 错误 2
提示gcc命令未找到,这是因为redis没有安装gcc编译器没安装
这时候只要安装编译器即可
yum install -y gcc g++ gcc-c++ make
编译器安装完成之后再redis-5.0.7目录下执行make命令
[root@bogon redis-3.2.8]# make
cd src && make all
make[1]: 进入目录“/usr/local/redis-3.2.8/src”
CC adlist.o
In file included from adlist.c:34:0:
zmalloc.h:50:31: 致命错误:jemalloc/jemalloc.h:没有那个文件或目录
#include <jemalloc/jemalloc.h>
^
编译中断。
make[1]: *** [adlist.o] 错误 1
make[1]: 离开目录“/usr/local/redis-3.2.8/src”
make: *** [all] 错误 2
又出现错误,上网查了之后说是
原因分析
在README 有这个一段话。
Allocator
---------
Selecting a non-default memory allocator when building Redis is done by setting
the `MALLOC` environment variable. Redis is compiled and linked against libc
malloc by default, with the exception of jemalloc being the default on Linux
systems. This default was picked because jemalloc has proven to have fewer
fragmentation problems than libc malloc.
To force compiling against libc malloc, use:
% make MALLOC=libc
To compile against jemalloc on Mac OS X systems, use:
% make MALLOC=jemalloc
说关于分配器allocator, 如果有MALLOC 这个 环境变量, 会有用这个环境变量的 去建立Redis。
而且libc 并不是默认的 分配器, 默认的是 jemalloc, 因为 jemalloc 被证明 有更少的 fragmentation problems 比libc。
但是如果你又没有jemalloc 而只有 libc 当然 make 出错。 所以加这么一个参数。
我应该就是这个问题
没有jemalloc 而只有 libc 当然 make 出错。
这时候在编译过程时增加一个参数
make MALLOC=libc
redis.conf 配置解析(设置红色的基本就可以自己用了,bind配置0.0.0.0后要在/etc/sysconfig/iptables配置相应的端口):
daemonize:如需要在后台运行,把该项的值改为yes
pdifile:把pid文件放在/var/run/redis.pid,可以配置到其他地址
bind:指定redis只接收来自该IP的请求,如果不设置,那么将处理所有请求,在生产环节中最好设置该项
(设置0.0.0.0 则改为用iptables来控制访问权限)
port:监听端口,默认为6379
timeout:设置客户端连接时的超时时间,单位为秒
loglevel:等级分为4级,debug,revbose,notice和warning。生产环境下一般开启notice
logfile:配置log文件地址,默认使用标准输出,即打印在命令行终端的端口上
database:设置数据库的个数,默认使用的数据库是0
save:设置redis进行数据库镜像的频率
rdbcompression:在进行镜像备份时,是否进行压缩
dbfilename:镜像备份文件的文件名
dir:数据库镜像备份的文件放置的路径
slaveof:设置该数据库为其他数据库的从数据库
masterauth:当主数据库连接需要密码验证时,在这里设定
requirepass:设置客户端连接后进行任何其他指定前需要使用的密码
maxclients:限制同时连接的客户端数量
maxmemory:设置redis能够使用的最大内存
appendonly:开启appendonly模式后,redis会把每一次所接收到的写操作都追加到appendonly.aof文件中,当redis重新启动时,会从该文件恢复出之前的状态
appendfsync:设置appendonly.aof文件进行同步的频率
vm_enabled:是否开启虚拟内存支持
vm_swap_file:设置虚拟内存的交换文件的路径
vm_max_momery:设置开启虚拟内存后,redis将使用的最大物理内存的大小,默认为0
vm_page_size:设置虚拟内存页的大小
vm_pages:设置交换文件的总的page数量
vm_max_thrrads:设置vm IO同时使用的线程数量