Redis 编译安装

2018年3月13日

Redis的安装

官网:http://redis.io

步骤一:

下载安装包:

cd /usr/local/src
wget  http://download.redis.io/releases/redis-3.0.7.tar.gz

步骤二:

编译源代码:

tar zxf redis-3.0.7.tar.gz
cd redis-3.0.7
mv redis-3.0.7 redis
make

mkdir -p /usr/local/redis/{etc,bin}

注:make完成后,有产生可执行文件

redis-benchmark //用于进行redis性能测试的工具
redis-check-dump //用于修复出问题的dump.rdb文件
redis-cli //redis的客户端
redis-server //redis的服务端
redis-check-aof //用于修复出问题的AOF文件
redis-sentinel //用于集群管理

拷贝默认配置 到指定位置 便于管理

cp *.conf  /usr/local/redis/etc

拷贝执行文件 到指定位置 便于管理

cd src/
cp mkreleasehdr.sh redis-benchmark redis-check-aof redis-check-dump redis-cli  redis-server redis-sentinel  /usr/local/redis/bin/

此时  Redis 已经算是完成 安装了

启动 Redis

/usr/local/redis/bin/redis-server  /usr/local/redis/etc/redis.conf

[root@seoseo04 etc]# /usr/local/redis/bin/redis-server  /usr/local/redis/etc/redis.conf
[1] 3391
[root@seoseo04 etc]# 3391:M 25 Feb 15:51:28.162 * Increased maximum number of open files to 10032 (it was originally set to 1024).
_._
_.-``__ ''-._
_.-``    `.  `_.  ''-._           Redis 3.0.7 (00000000/0) 64 bit
.-`` .-```.  ```/    _.,_ ''-._
(    '      ,       .-`  | `,    )     Running in standalone mode
|`-._`-...-` __...-.``-._|'` _.-'|     Port: 6379
|    `-._   `._    /     _.-'    |     PID: 3391
`-._    `-._  `-./  _.-'    _.-'
|`-._`-._    `-.__.-'    _.-'_.-'|
|    `-._`-._        _.-'_.-'    |           http://redis.io
`-._    `-._`-.__.-'_.-'    _.-'
|`-._`-._    `-.__.-'    _.-'_.-'|
|    `-._`-._        _.-'_.-'    |
`-._    `-._`-.__.-'_.-'    _.-'
`-._    `-.__.-'    _.-'
`-._        _.-'
`-.__.-'

3391:M 25 Feb 15:51:28.163 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
3391:M 25 Feb 15:51:28.163 # Server started, Redis version 3.0.7
3391:M 25 Feb 15:51:28.163 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
3391:M 25 Feb 15:51:28.163 * DB loaded from disk: 0.000 seconds
3391:M 25 Feb 15:51:28.163 * The server is now ready to accept connections on port 6379

不过我们还是需要修改一些配置来完善优化redis 的

1) 修改系统配置文件,执行命令

 echo vm.overcommit_memory=1 >> /etc/sysctl.conf
sysctl -w vm.overcommit_memory=1

或执行

echo vm.overcommit_memory=1 >>/proc/sys/vm/overcommit_memory

使用数字含义:

0,表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用进程。

1,表示内核允许分配所有的物理内存,而不管当前的内存状态如何。

2,表示内核允许分配超过所有物理内存和交换空间总和的内存

2) 修改redis配置文件

vim  /usr/local/redis/etc/redis.conf

修改 daemonize yes---目的使进程在后台运行

如果修改dir  logfile  要确保目录是否存在不存在 创建

参数介绍:

属性    说明
daemonize如果值是"yes",则启动服务的时候是后台守护进程形式,如果值是"no",则相反

pidfile指定存储Redis进程号的文件路径

port指定当前Redis服务的端口,默认为6379

tcp-backlog此参数确定了TCP连接中已完成队列(完成三次握手之后)的长度, 当然此值必须不大于Linux系统定义的/proc/sys/net/core/somaxconn值,默认是511,而Linux的默认参数值是128。当系统并发量大并且客户端速度缓慢的时候,可以将这二个参数一起参考设定。

timeout    客户端和Redis服务端的连接超时时间,默认是0,表示永不超时。

tcp-keepalive    如果值非0,单位是秒,表示将周期性的使用SO_KEEPALIVE检测客户端是否还处于健康状态,避免服务器一直阻塞,官方给出的建议值是60S。

loglevel    Redis总共支持四个级别:debug、verbose、notice、warning。

Debug:记录很多信息,用于开发和测试;

Varbose:有用的信息,不像debug会记录那么多;

Notice:普通的verbose,常用于生产环境;

Warning:只有非常重要或者严重的信息会记录到日志;

默认是notice级别。

logfile    日志的存储路径

databases    可用的数据库数,默认值为16,默认数据库为0,数据库范围在0-(database-1)之间,个人觉得DB的概念类似于命名空间

save    保存数据库快照信息到磁盘,其对应的值有两个,比如save 300 10表示:300秒内至少有300个key被改变时,触发保存信息到磁盘的事件。

stop-writes-on-bgsave-error    当持久化出现错误之后,是否继续提供写服务

rdbcompression    持久化到RDB文件时,是否压缩,"yes"为压缩,"no"则反之

rdbchecksum    读取和写入的时候是否支持CRC64校验,默认是开启的

dbfilename    镜像文件的名字

dir    当前工作目录,配置文件和镜像文件等都在此目录下

masterauth    设置访问master服务器的密码

requirepass foobared 设置Redis连接密码,如果配置了连接密码,客户端在连接Redis时需要通过AUTH 命令提供密码,默认关闭 注意此处有坑 密码有些特殊字符不能使用目前知道的是 ! 感叹号 不能用

slave-serve-stale-data    当slave服务器和master服务器失去连接后,或者当数据正在复制传输的时候,如果此参数值设置"yes",slave服务器可以继续接受客户端的请求,否则,会返回给请求的客户端如下信息"SYNC with master in progress"

slave-read-only    是否允许slave服务器节点只提供读服务

repl-disable-tcp-nodelay    指定向slave同步数据时,是否禁用socket的NO_DELAY选 项。若配置为"yes",则禁用NO_DELAY,则TCP协议栈会合并小包统一发送,这样可以减少主从节点间的包数量并节省带宽,但会增加数据同步到 slave的时间。若配置为"no",表明启用NO_DELAY,则TCP协议栈不会延迟小包的发送时机,这样数据同步的延时会减少,但需要更大的带宽。 通常情况下,应该配置为no以降低同步延时,但在主从节点间网络负载已经很高的情况下,可以配置为yes。

slave-priority    指定slave的优先级。在不只1个slave存在的部署环境下,当master宕机时,Redis Sentinel会将priority值最小的slave提升为master。需要注意的是,若该配置项为0,则对应的slave永远不会自动提升为master。

appendonly    开启append only 模式之后,redis 会把所接收到的每一次写操作请求都追加到appendonly.aof 文件中,当redis 重新启动时,会从该文件恢复出之前的状态。但是这样会造成appendonly.aof 文件过大,所以redis 还支持了BGREWRITEAOF 指令,对appendonly.aof 进行重新整理。默认是不开启的。

appendfilename    默认为appendonly.aof。

appendfsync    设置aof的同步频率,有三种选择always、everysec、no,默认是everysec表示每秒同步一次。

no-appendfsync-on-rewrite    指定是否在后台aof文件rewrite期间调用fsync,默认为no,表示要调用fsync(无论后台是否有子进程在刷盘)。Redis在后台写RDB文件或重写afo文件期间会存在大量磁盘IO,此时,在某些linux系统中,调用fsync可能会阻塞。

auto-aof-rewrite-percentage    指定Redis重写aof文件的条件,默认为100,表示与上次rewrite的aof文件大小相比,当前aof文件增长量超过上次afo文件大小的100%时,就会触发background rewrite。若配置为0,则会禁用自动rewrite

auto-aof-rewrite-min-size    指定触发rewrite的aof文件大小。若aof文件小于该值,即使当前文件的增量比例达到auto-aof-rewrite-percentage的配置值,也不会触发自动rewrite。即这两个配置项同时满足时,才会触发rewrite。

lua-time-limit    一个Lua脚本最长的执行时间,单位为毫秒,如果为0或负数表示无限执行时间,默认为5000

notify-keyspace-events    见参考3,按键通知事件

aof-rewrite-incremental-fsync    aof rewrite过程中,是否采取增量文件同步策略,默认为"yes"。 rewrite过程中,每32M数据进行一次文件同步,这样可以减少aof大文件写入对磁盘的操作次数

启动脚本 单实例

启动脚本 多实例

根据自己的 redis 配置修改启动脚本

没有评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注