在此之前,我已经安装好redis了.在启动方式上直接执行redis编译好的服务器端程序即可,这样只适合在初步了解redis的基本功能时使用。如果要部署到测试或生产环境,肯定需要修改一些默认的配置,这是这种启动方式就有些不适用了。
当然redis除了直接执行服务器程序启动,同样支持使用脚本文件启动。
配置文件
先简单说下redis的配置文件,在上一节安装redis的编译目录下有一个redis的配置文件–redis.conf.
这个文件里列出了redis的一些参数配置的默认值和相关解释。redis的配置文件中可设置的参数有很多,这里只列出部分,有个初步留个初步印象。
参数 | 含义 | 默认值 |
---|---|---|
daemonize | Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程 | no |
pidfile | 如以后台进程运行,则需指定一个pid | /var/run/redis_6379.pid |
port | Redis监听端口 | 6379 |
tcp-backlog | 在高并发的环境中,为避免慢客户端的连接问题,需要设置一个高速后台日志 | 511 |
timeout | 客户端超时关闭连接。0为无限制 | 0 |
tcp-keepalive | 在 Linux 上,指定值(秒)用于发送 ACKs 的时间。注意关闭连接需要双倍的时间。 | 0 |
loglevel | 日志记录级别,Redis总共支持四个级别:debug、verbose、notice、warning | verbose |
logfile | 日志记录方式,默认为标准输出,如果配置Redis为守护进程方式运行,而这里又配置为日志记录方式为标准输出,则日志将会发送给/dev/null | “” |
databases | 设置数据库的数量,默认数据库为0 | 16 |
save | 指定在多长时间内,有多少次更新操作,就将数据同步到数据文件,可以多个条件配合 | |
dbfilename | 本地持久化数据库文件名 | dump.rdb |
dir | 指定本地数据库存放目录 | ./ |
slave-serve-stale-data | 设置当本机为slav服务时,设置master服务的IP地址及端口,在Redis启动时,它会自动从master进行数据同步 | yes |
appendonly | 启用aof持久化方式,因为redis本身同步数据文件是按上面save条件来同步的,所以有的数据会在一段时间内只存在于内存中。 | no |
appendfilename | 更新日志文件名 | “appendonly.aof” |
appendfsync | 写入磁盘时间,参数有everysec:每秒写入一次,always:收到命令立即写入磁盘,最慢,但保证完全持久化,no:性能最好,持久化没保证 | everysec |
no-appendfsync-on-rewrite | 部署在同一机器的redis实例,把auto-aof-rewrite打开,因为cluster环境下内存占用基本一致 ,关闭在aof rewrite的时候对新的写操作进行fsync | no |
cluster-enabled | 打开redis集群 | yes |
hash-max-ziplist-entries | 指定在超过一定的数量或者最大的元素超过某一临界值时,采用一种特殊的哈希算法 | 512 |
activerehashing | 指定是否激活重置哈希,默认为开启 | yes |
启动配置
首先,在redis的utils目录下提供了一个初始化的脚本–redis_init_script。这使得我们可以通过这个脚本让redis随系统启动,这也是生产环境下建议使用的方式。说明一下,我的系统是Ubuntu,就以Ubuntu为例。
初始化脚本redis_init_script的内容如下:
#!/bin/sh
#
# Simple Redis init.d script conceived to work on Linux systems
# as it does use of the /proc filesystem.
REDISPORT=6379
EXEC=/usr/local/bin/redis-server
CLIEXEC=/usr/local/bin/redis-cli
PIDFILE=/var/run/redis_${REDISPORT}.pid
CONF="/etc/redis/${REDISPORT}.conf"
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
;;
stop)
if [ ! -f $PIDFILE ]
then
echo "$PIDFILE does not exist, process is not running"
else
PID=$(cat $PIDFILE)
echo "Stopping ..."
$CLIEXEC -p $REDISPORT shutdown
while [ -x /proc/${PID} ]
do
echo "Waiting for Redis to shutdown ..."
sleep 1
done
echo "Redis stopped"
fi
;;
*)
echo "Please use start or stop as first argument"
;;
esac
可以看出,初始化脚本redis_init_script里定义了redis的端口,运行方式,持久化文件、日志文件的存储位置等。REDISPORT指定端口,CONF指定配置文件路径。配置的具体步骤如下。
- 配置初始化脚本。首先将初始化脚本复制到/etc/init.d目录中,并将文件名改为redis_6379。其中6379表示redis要监听的端口号,这里使用默认端口号6379。如果要使用别的端口也可以,不过需要交上面的脚本的REDISPORT改为相应的端口号。
- 下面就是修改配置redis的配置文件–redis.conf。为了使用的方便,通常会指定redis的配置文件和持久化文件的存放位置,这里建立两个目录分别来存放着些文件。如我在/usr/local/下建立了两个目录/usr/local/redis和/usr/local/redis/6379分别用来存储redis的配置文件和持久化文件。
首先,将redis.conf复制到/usr/local/redis,并改为6379.conf。同样,如果端口不是6379需要修改为实际使用的端口号。需要注意的是:这里的配置文件的路径需要和初始化脚本redis_init_script的CONF路径要是一致的。然后修改配置,如:
daemonize改为yes,是redis以守护进程的方式运行;
如果没有使用默认端口6379,需要将pidfile的属性/var/run/redis_端口号.pid及port属性改为相应的端口。
还有一个就是dir属性值改为/usr/local/redis/6379,这个是存放指定本地数据库存放目录,即持久化文件用的。
比较基础的就是这些属性吧。
启动
通过上面的配置后,就可以通过以下命令来启动redis了。
sudo /etc/init.d/redis_6379 start
然后可以通过以下命令验证启动。
redis-cli ping
回应PONG即启动成功。
补充一点,如果希望redis随Linux系统启动的话,还需要执行以下如下命令:
sudo update-rc.d redis_6379 defaults
至此,redis通过配置文件启动的相关配置就完成了。