Redis(全称:Remote Dictionary Server 远程字典服务)是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、高性能的Key-Value数据库
1. 安装
获取Redis安装包并且解压下载好的安装包
# 下载
wget http://download.redis.io/releases/redis-5.0.5.tar.gz
# 解压
tar -xzvf redis-5.0.5.tar.gz
进入Redis目录编译,然后进入src目录进行安装
cd redis-5.0.5
# 编译
make
cd src
# 安装,并且指定安装目录为/usr/local/redis
make install PREFIX=/usr/local/redis
然后我们将配置文件移动到安装目录下
mv /usr/local/redis-5.0.5/redis.conf /usr/local/redis/
2. 配置
我们打开redis配置文件并更改几个配置项
# 绑定IP地址
bind 本机公网ip OR 内网ip
# 是否后台运行,默认为no
daemonize yes
# 关闭保护模式(默认开启)
# 保护模式确保只有【本机】可以访问redis,其他任何都不可以访问redis。并且有三个条件
# 1 protected-mode yes(处于开启) 2 没有使用bind 3 没有设置密码
protected-mode no
# 数据库(持久化)会写入此目录。rdf, aof文件也会写入此目录
dir /data/redisDatabase/
# 日志目录
logfile /data/redisLog/redis.log
关于配置内的bind选项有一篇文章写的很详细,大家可以去看看bind并非只接收来自于该IP地址的请求
接下来我们启动Redis服务
# 启动Redis
/usr/local/redis/redis-server [redis config file]
# 关闭Redis (或者使用kill -15)
# 如果配置了密码加上 -a [password]选项 (-a必须为第一个选项)
# 如果根据端口关闭则是 -p [port]
# 为了不影响集群或主从可以加上 -c 选项
/usr/local/redis/redis-cli shutdown
至此Redis的安装结束。
以下是Redis配置文件说明
#redis.conf
# Redis configuration file example.
# ./redis-server /path/to/redis.conf
################################## INCLUDES ###################################
#这在你有标准配置模板但是每个redis服务器又需要个性设置的时候很有用。
# include /path/to/local.conf
# include /path/to/other.conf
################################ GENERAL #####################################
#是否在后台执行,yes:后台运行;no:不是后台运行(老版本默认)
daemonize yes
#3.2里的参数,是否开启保护模式,默认开启。要是配置里没有指定bind和密码。开启该参数后,redis只会本地进行访问,拒绝外部访问。要是开启了密码 和bind,可以开启。否 则最好关闭,设置为no。
protected-mode yes
#redis的进程文件
pidfile /var/run/redis/redis-server.pid
#redis监听的端口号。
port 6379
#此参数确定了TCP连接中已完成队列(完成三次握手之后)的长度, 当然此值必须不大于Linux系统定义的/proc/sys/net/core/somaxconn值,默认是511,而Linux的默认参数值是128。当系统并发量大并且客户端速度缓慢的时候,可以将这二个参数一起参考设定。该内核参数默认值一般是128,对于负载很大的服务程序来说大大的不够。一般会将它修改为2048或者更大。在/etc/sysctl.conf中添加:net.core.somaxconn = 2048,然后在终端中执行sysctl -p。
tcp-backlog 511
#指定 redis 只接收来自于该 IP 地址的请求,如果不进行设置,那么将处理所有请求
bind 127.0.0.1
#配置unix socket来让redis支持监听本地连接。
# unixsocket /var/run/redis/redis.sock
#配置unix socket使用文件的权限
# unixsocketperm 700
# 此参数为设置客户端空闲超过timeout,服务端会断开连接,为0则服务端不会主动断开连接,不能小于0。
timeout 0
#tcp keepalive参数。如果设置不为0,就使用配置tcp的SO_KEEPALIVE值