Linux下安装Redis
1、 获取redis
[root@localhost ~]# cd /usr/local/
[root@localhost local]# wget https://download.redis.io/releases/redis-6.0.9.tar.gz
2、 解压
[root@localhost local]# tar xzf redis-6.0.9.tar.gz
3、 进入目录并编译
[root@localhost local]# cd redis-6.0.9
[root@localhost redis-6.0.9]# make
# 因为系统默认的gcc版本为4.4.7,make时会导致失败
make[2]: Leaving directory `/home/imdb/gcc-4.8.2/gcc-build-4.8.2'
make[1]: *** [stage1-bubble] 错误 2
make[1]: Leaving directory `/home/imdb/gcc-4.8.2/gcc-build-4.8.2'
make: *** [all] 错误 2
# 解决版本:升级gcc版本到5.3以上
4、进入src目录安装redis
[root@localhost redis-6.0.9]# cd src
[root@localhost src]# make install PREFIX=/usr/local/redis
# 安装在/usr/local/redis目录下
5、在redis目录下创建etc目录
[root@localhost local]# mkdir /usr/local/redis/etc
6、复制redis.conf文件到etc下
[root@localhost local]# cd redis-6.0.9
[root@localhost redis-6.0.9]# mv redis.conf /usr/local/redis/etc
7、配置redis
我们在配置文件redis.conf中进行相关的配置(在redis安装路径的etc目录下)
[root@localhost redis-6.0.9]# cd ../redis/etc/
[root@localhost etc]# vi redis.conf
按‘i’进入编辑模式,按‘Esc’,输入‘:set nu’显示所有行号
按‘i’进入编辑模式,按‘Esc’,输入‘:/单词’查找自己需要的单词
进入文档后,输入行号,按‘Shift+G’定位到某一行
1 设置后台启动
在 GENERAL下,将daemonize no改为yes(大约224行)
2 设置远程访问权限
在NETWORK下,将 bind 127.0.0.1注掉(大约68行),将 protected-mode yes改为no(大约87行)
3 设置访问密码
在SECURITY下,将 requirepass foobared的注释去掉(大约790行),将 foobared 改为自己的密码
4 增加redis连接数据库都的个数
redis默认支持16个数据库,可以通过调整redis的配置文件redis/redis.conf中的databases来修改这一个值,设置完毕后重启redis便完成配置
在 GENERAL 下,将databases 16改成自己需要的数字(大约在275行)
redis配置参数说明
属性 | 说明 |
---|---|
daemonize | 如果值是“yes”,则启动服务的时候是后台守护进程形式,如果值是“no”,则相反 |
pidfile | 指定存储Redis进程号的文件路径 |
port | 指定当前Redis服务的端口,默认为6379 |
bind 127.0.0.1 | 绑定的主机地址 |
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被改变时,触发保存信息到磁盘的事件。 Redis默认配置文件中提供了三个条件: save 900 1 save 300 10 save 60 10000 分别表示900秒(15分钟)内有1个更改,300秒(5分钟)内有10个更改以及60秒内有10000个更改。 |
stop-writes-on-bgsave-error | 当持久化出现错误之后,是否继续提供写服务 |
rdbcompression | 持久化到RDB文件时,是否压缩,“yes”为压缩,“no”则反之 |
rdbchecksum | 读取和写入的时候是否支持CRC64校验,默认是开启的 |
dbfilename | 镜像文件的名字 |
dir | 指定本地数据库存放目录;当前工作目录,配置文件和镜像文件等都在此目录下 |
masterauth | 设置访问master服务器的密码 |
slaveof | 设置当本机为slav服务时,设置master服务的IP地址及端口,在Redis启动时,它会自动从master进行数据同步 |
slave-serve-stale-data | 当slave服务器和master服务器失去连接后,或者当数据正在复制传输的时候,如果此参数值设置“yes”,slave服务器可以继续接受客户端的请求,否则,会返回给请求的客户端如下信息“SYNC with master in progress” |
requirepass foobared | 设置Redis连接密码,如果配置了连接密码,客户端在连接Redis时需要通过AUTH password命令提供密码,默认关闭 |
maxclients 128 | 设置同一时间最大客户端连接数,默认无限制; Redis可以同时打开的客户端连接数为Redis进程可以打开的最大文件描述符数,如果设置 maxclients 0,表示不作限制。 当客户端连接数到达限制时,Redis会关闭新的连接并向客户端返回max number of clients reached错误信息 |
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 |
aof-rewrite-incremental-fsync | aof rewrite过程中,是否采取增量文件同步策略,默认为“yes”。 rewrite过程中,每32M数据进行一次文件同步,这样可以减少aof大文件写入对磁盘的操作次数 |
8、 启动redis
[root@localhost local]# /usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf
9、查看redis进程
[root@localhost local]# ps -ef |grep redis
# 如果需要关闭redis,直接kill掉redis进程即可
10、开机启动redis
建议使用方法二进行配置
方法一
在/etc/rc.local文件中加入redis的启动命令
[root@localhost local]# vi /etc/rc.local
如果没有成功,请查看下 /etc/rc.d/rc.local 有没有执行权限,如果没有,请进行授权
chmod +x /etc/rc.d/rc.local
然后重启。
方法二
前提:需要将 redis.conf 中 daemonize 为 yes ,确保守护进程开启
1、编辑开机启动脚本
1、在 /etc/init.d 目录下创建 redis 文件
vi /etc/init.d/redis
# chkconfig: 2345 10 90
# description: Start and Stop redis
# PATH=/usr/local/redis/bin # redis安装路径,下文如果使用变量时使用
REDISPORT=6379 #redis的默认端口, 要和下文中的redis.conf中一致
EXEC=/usr/local/redis/bin/redis-server #redis服务端的命令
# EXEC=${PATH}/redis-server # 使用变量
REDIS_CLI=/usr/local/redis/bin/redis-cli #redis客户端的命令 这两个一般都在 PATH目录下
# REDIS_CLI=${PATH}/redis-cli # 使用变量
PIDFILE=/var/run/redis.pid #reids的进程文件生成的位置(可以在redis.conf文件中查看 pidfile 的值)
CONF="/usr/local/redis/etc/redis.conf" #redis的配置文件所在的目录
#AUTH="1234" 这句没什么用可以不要
case "$1" in
start)
if [ -f $PIDFILE ]
then
echo "$PIDFILE exists, process is already running or crashed."
else
echo "Starting Redis server..."
$EXEC $CONF
fi
if [ "$?"="0" ]
then
echo "Redis is running..."
fi
;;
stop)
if [ ! -f $PIDFILE ]
then
echo "$PIDFILE exists, process is not running."
else
PID=$(cat $PIDFILE)
echo "Stopping..."
$REDIS_CLI -p $REDISPORT SHUTDOWN
sleep 2
while [ -x $PIDFILE ]
do
echo "Waiting for Redis to shutdown..."
sleep 1
done
echo "Redis stopped"
fi
;;
restart|force-reload)
${0} stop
${0} start
;;
*)
echo "Usage: /etc/init.d/redis {start|stop|restart|force-reload}" >&2
exit 1
esac
编写完成后,按 Esc,再输入:wq退出并保存
2、修改文件权限为775
chmod +x /etc/init.d/redis
3、测试redis启动
/etc/init.d/redis start
启动成功,说成设置成功
4、设置自启动
chkconfig redis on