redis的启动方式

直接启动

进入redis根目录,执行命令:

1
./redis-server &

加上‘&’号使redis以后台程序方式运行

通过指定配置文件启动

可以为redis服务启动指定配置文件,例如配置为/etc/redis/6379.conf
进入redis根目录,输入命令:

1
./redis-server /etc/redis/6379.conf

如果更改了端口,使用redis-cli客户端连接时,也需要指定端口,例如:

1
./redis-cli -p 6380

使用redis启动脚本设置开机自启动

启动脚本 redis_init_script 位于位于Redis的 /utils/目录下,redis_init_script脚本代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#!/bin/sh
#
# Simple Redis init.d script conceived to work on Linux systems
# as it does use of the /proc filesystem.
#redis服务器监听的端口
REDISPORT=6379
#服务端所处位置
EXEC=/usr/local/bin/redis-server
#客户端位置
CLIEXEC=/usr/local/bin/redis-cli
#redis的PID文件位置,需要修改
PIDFILE=/var/run/redis_${REDISPORT}.pid
#redis的配置文件位置,需将${REDISPORT}修改为文件名
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

根据启动脚本,将修改好的配置文件复制到指定目录下,用root用户进行操作:

1
2
mkdir /etc/redis
cp redis.conf /etc/redis/6379.conf

将启动脚本复制到/etc/init.d目录下,本例将启动脚本命名为redisd(通常都以d结尾表示是后台自启动服务)。

1
cp redis_init_script /etc/init.d/redisd

设置为开机自启动,直接配置开启自启动 chkconfig redisd on 发现错误: service redisd does not support chkconfig

解决办法,在启动脚本开头添加如下注释来修改运行级别:

1
2
#!/bin/sh
# chkconfig: 2345 90 10

再设置即可

1
2
3
4
5
6
#设置为开机自启动服务器
chkconfig redisd on
#打开服务
service redisd start
#关闭服务
service redisd stop

消息订阅

redis的发布订阅系统有点类似于我们生活中的电台,电台可以在某一个频率上发送广播,而我们可以接收任何一个频率的广播,Android中的broadcast也和这类似。

订阅消息的方式如下:

1
2
3
4
5
6
7
8
9
10
11
127.0.0.1:12001> SUBSCRIBE c1 c2 c3
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "c1"
3) (integer) 1
1) "subscribe"
2) "c2"
3) (integer) 2
1) "subscribe"
2) "c3"
3) (integer) 3

这个表示接收c1,c2,c3三个频道传来的消息,发送消息的方式如下:

1
2
127.0.0.1:12001> PUBLISH c1 "I am lvshen"
(integer) 1

当c1这个频道上有消息发出时,此时在消息订阅控制台可以看到如下输出:

1
2
3
1) "message"
2) "c1"
3) "I am lvshen"

在redis中,我们也可以使用模式匹配订阅,如下:

1
2
3
4
5
127.0.0.1:12001> PSUBSCRIBE c*
Reading messages... (press Ctrl-C to quit)
1) "psubscribe"
2) "c*"
3) (integer) 1

此时可以接收到所有以c开头的频道发来的消息。