Linux下载安装部署Redis

下载Redis

Redis版本 5.0.4
服务器版本 Linux CentOS 7.6 64位
官网下载地址:https://redis.io/download/
中文网下载地址:http://www.redis.cn/download.html

解压并安装Redis

解压
下载完成后需要将压缩文件解压,输入以下命令解压到当前目录

tar -zvxf redis-5.0.4.tar.gz

移动redis目录
一般都会将redis目录放置到 /usr/local/redis目录,所以这里输入下面命令将目前在/root目录下的redis-5.0.4文件夹更改目录,同时更改文件夹名称为redis。
mv /root/redis-5.0.4 /usr/local/redis

cd到/usr/local/redis目录,输入命令make执行编译命令,接下来控制台会输出各种编译过程中输出的内容

make

结果报错了:

因为下载下来的Redis是C语言的源码,不能直接运行,所以要make,所报的错应该是没有gcc环境,
安装 gcc 环境,它是Linux下一个编译器集合

yum install gcc-c++


中间遇到要输入的,一路yes就可以了
安装后,可以使用 gcc –v 查看gcc版本检测是否安装好。

执行 make 命令,它会去远程服务器下载所有需要的文件并配置上,因此该操作需要一点时间,稍等一会儿。
结果还是不尽人意,还是报错了:

针对这个错误,我们可以在README.md 文件中看到解释。

---------

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

Verbose build
-------------

解决办法:清理上次编译残留文件,重新编译

make distclean  && make


等待出现:

导致出现这个错误的原因:错误的本质是我们在开始执行make 时遇到了错误(大部分是由于gcc未安装),然后我们安装好了gcc 后,我们再执行make ,这时就出现了jemalloc/jemalloc.h: No such file or directory。这是因为上次的编译失败,有残留的文件,我们需要清理下,然后重新编译就可以了。

安装

make PREFIX=/usr/local/redis install

这里多了一个关键字: PREFIX= 这个关键字的作用是编译的时候用于指定程序存放的路径。比如我们现在就是指定了redis必须存放在/usr/local/redis目录。假设不添加该关键字Linux会将可执行文件存放在/usr/local/bin目录,库文件会存放在/usr/local/lib目录。配置文件会存放在/usr/local/etc目录。其他的资源文件会存放在usr/local/share目录。这里指定号目录也方便后续的卸载,后续直接rm -rf /usr/local/redis 即可删除redis。

可以将Redis配置文件拷贝一份,以后操作使用拷贝的这个配置文件,原生的配置文件不用变,改完之后还能回到原来的样子,以保证安全。

将配置文件,移动到/etc/目录下

启动redis

根据上面的操作已经将redis安装完成了。在目录/usr/local/redis 输入下面命令启动redis

./bin/redis-server& ./redis.conf


上面的启动方式是采取后台进程方式,下面是采取显示启动方式(如在配置文件设置了daemonize属性为yes则跟后台进程方式启动其实一样)。

./bin/redis-server ./redis.conf

两种方式区别无非是有无带符号&的区别。 redis-server 后面是配置文件,目的是根据该配置文件的配置启动redis服务。redis.conf配置文件允许自定义多个配置文件,通过启动时指定读取哪个即可。

这里列举下比较重要的配置项:

配置项名称 配置项值范围 说明
daemonize yes、no yes表示启用守护进程,默认是no即不以守护进程方式运行。其中Windows系统下不支持启用守护进程方式运行
port 指定 Redis 监听端口,默认端口为 6379
bind 绑定的主机地址,如果需要设置远程访问则直接将这个属性备注下或者改为bind * 即可,这个属性和下面的protected-mode控制了是否可以远程访问 。
protected-mode yes 、no 保护模式,该模式控制外部网是否可以连接redis服务,默认是yes,所以默认我们外网是无法访问的,如需外网连接rendis服务则需要将此属性改为no。
timeout 300 当客户端闲置多长时间后关闭连接,如果指定为 0,表示关闭该功能
loglevel debug、verbose、notice、warning 日志级别,默认为 notice
databases 16 设置数据库的数量,默认的数据库是0。整个通过客户端工具可以看得到
rdbcompression yes、no 指定存储至本地数据库时是否压缩数据,默认为 yes,Redis 采用 LZF 压缩,如果为了节省 CPU 时间,可以关闭该选项,但会导致数据库文件变的巨大。
dbfilename dump.rdb 指定本地数据库文件名,默认值为 dump.rdb
dir 指定本地数据库存放目录
requirepass 设置 Redis 连接密码,如果配置了连接密码,客户端在连接 Redis 时需要通过 AUTH 命令提供密码,默认关闭
maxclients 0 设置同一时间最大客户端连接数,默认无限制,Redis 可以同时打开的客户端连接数为 Redis 进程可以打开的最大文件描述符数,如果设置 maxclients 0,表示不作限制。当客户端连接数到达限制时,Redis 会关闭新的连接并向客户端返回 max number of clients reached 错误信息。
maxmemory XXX 指定 Redis 最大内存限制,Redis 在启动时会把数据加载到内存中,达到最大内存后,Redis 会先尝试清除已到期或即将到期的 Key,当此方法处理 后,仍然到达最大内存设置,将无法再进行写入操作,但仍然可以进行读取操作。Redis 新的 vm 机制,会把 Key 存放内存,Value 会存放在 swap 区。配置项值范围列里XXX为数值。

这里我要将daemonize改为yes,不然我每次启动都得在redis-server命令后面加符号&,不这样操作则只要回到Linux控制台则redis服务会自动关闭,同时也将bind注释,将protected-mode设置为no。
这样启动后我就可以在外网访问了。

设置密码的流程如下:

vim  /etc/redis.conf

requirepass foobared去掉注释,foobared改为自己的密码,我在这里改为

requirepass 123456

后台启动命令:

./bin/redis-server ./redis.conf

查看redis运行

ps aux|grep redis

进入redis的客户端:

redis-cli

进入redis的帮助

redis-cli --help

核心配置

# 服务端配置
 
# 设置服务器以守护进程方式运行,默认为no
daemonize yes
 
# 绑定主机地址,绑定后只能通过ip访问
# bind 127.0.0.1 
 
# 设置服务器端口号,默认6379
# port 6379
 
# 设置数据库数量,默认16
databases 16
 
 
 
 
# 日志配置
 
# 设置服务器以指定日志记录级别,可选项为
# debug
# verbose 默认
# notice 生产环境建议使用这个级别,简化日志输出,降低io频率
# warning
loglevel verbose
 
# 日志记录文件名
# logfile 3306.log
 
 
 
 
# 客户端配置
 
# 同一时间最大客户端数,默认无限制
maxclients 0
 
# 客户端闲置等待最大时长,达到最大值后关闭连接(单位为秒)。设置0表示关闭该功能
timeout 300
 
 
 
 
# 多服务器快捷配置
 
# 用于导入一些公共配置
include /path/server-端口号.conf
 
 
 
 
# 持久化配置
 
# 打开aof持久化方式,默认不开启
appendonly yes
 
# aof写数据策略,有三个可选项
# always:来一条就存一条
# everysec:每一分钟将缓冲区中的命令同步到aof文件中
# no:由系统控制
appendfsync everysec
 
# aof文件名
# 建议appendonly-端口号.aof
appendfilename appendonly.aof
 
# aof自动出发重写条件
# aof最小重写尺寸,单位为字节
# auto-aof-rewrite-min-size 1048576
 
# aof文件大小超过基准百分之多少后出发重写
# auto-aof-rewrite-percentage 100
 
# 设置rdb备份的名称,默认值为dump.rdb
# 经验:通常设置为dump-端口号.rdb
dbfilename dump.rdb
 
# 配置rdb文件的存储位置
# dir /data
 
# 存储至本地库时是否使用数据压缩,默认为yes。
# 不压缩可以节省cpu运行事件,但是文件巨大
rdbcompression yes
 
# 加载rdb文件前是否校验,默认yes
# 如果不校验可以节省10%读写性能,但有数据损坏风险
rdbchecksum yes
 
# 后台进行rdb存储过程出现错误,是否停止保存操作
# 默认开启
# stop-writes-on-bgsave-error yes
 
# rdb自动执行的条件
# 900秒内有1个键发生变化就进行后台rdb存储
save 900 1
save 300 10
save 60 10000
 
 
 
 
# 删除策略与驱逐算法
 
# 最大空用内存,默认时全用
maxmemory 256mb
 
# 每次选取待删除数据的个数
maxmemory-samples 100
 
# 删除策略(逐出算法)
# 可选操作
# 检查易失数据(有过期时间的数据)
# volatile-lru: 挑选最近最少使用的数据淘汰
# volatile-lfu: 挑选最近使用次数最少的数据淘汰
# volatile-ttl: 按将要过期的数据淘汰
# volatile-random: 随机淘汰有过期时间的数据
# 检测全库数据(所有的key,不管有没有过期时间)
# allkeys-lru
# allkeys-lfu
# allkeys-random
# 放弃数据驱逐
# no-enviction
maxmemory-policy volatile-lru
 
 
 
# 主从复制
 
# 设置密码
# requirepass 123456
 
# 如果当前redis是从机,可以配置连接的master的密码
# masterauth 123456
 
# 如果当前redis是slave, 可以配置连接master的信息
# 分别是master的ip与端口号
# slaveof 127.0.0.1 6379
 
# 设置master的复制缓冲区大小
# repl-backlog-size 1mb
 
# 主从复制中,从服务器是否可以响应客户端请求
# slave-serve-stale-data no
 
# 对于master,设置当slave存货数量小于2,或者slave的延迟都大于10秒,则关闭数据同步
# min-slaves-to-write 2
# min-slaves-max-lag 10
 
# 对于master,如果60秒(默认)slave没有响应,则释放slave
# repl-timeout 60

参考:
https://blog.csdn.net/bai_shuang/article/details/122945185
https://www.cnblogs.com/operationhome/p/10342258.html
https://juejin.cn/post/7036253002117677064
https://www.icode9.com/content-2-392899.html

posted on 2022-05-08 21:46  铃之森  阅读(710)  评论(0编辑  收藏  举报

导航