官网:http://redis.io

redis定义:是开源、BSD许可、高级的key-value存储系统。可以用来存储字符串、哈希结构、链表、集合,因此常用来提供数据结构服务。

1. 在主机上安装

名称 操作
下载redis源代码 wget http://t.cn/Eqw5XJ3
解压 tar -zxvf 5.0.2.tar
进入目录 cd redis-5.0.2
编译 make
安装指定目录 make install PREFIX=/usr/local/redis install
复制配置文件 cp redis.conf /usr/local/redis/

(1) 修改后修改配置文件

1
2
3
4
5
6
7
8
9
10
11
# 打开配置文件
vim /usr/local/redis/redis.conf

# 使redis启动后在后台运行
daemonize yes

# 设置密码,默认密码为空
requirepass 123456

# 允许远程连接,取消绑定本机
#bind 127.0.0.1

(2) 设置开机启动

在自启动/etc/init.d/文件夹下新建名字为redis的启动脚本,内容如下:

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
51
52
53
54
#!/bin/sh

# chkconfig: 2345 90 10
# description: Redis is a persistent key-value database

PATH=/usr/local/bin:/sbin:/usr/bin:/bin

REDISPORT=6379
EXEC=/usr/local/redis/bin/redis-server
REDIS_CLI=/usr/local/redis/bin/redis-cli

PIDFILE=/var/run/redis_6379.pid
CONF="/usr/local/redis/redis.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
if [ "$?"="0" ]
then
echo "Redis is running..."
fi
;;
stop)
if [ ! -f $PIDFILE ]
then
echo "$PIDFILE does not exist, process is not running"
else
PID=$(cat $PIDFILE)
echo "Stopping ..."
$REDIS_CLI -p $REDISPORT SHUTDOWN
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

exit 0
1
2
3
4
5
6
7
8
9
10
11
# 设置脚本文件的可执行权限
chmod +x /etc/init.d/redis

# 添加服务到service,开机启动
chkconfig --add /etc/init.d/redis

#启动服务
service redis start

# 停止服务
service redis stop

(3) 将redis的bin命令添加到PATH

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 打开profile文件
vim /etc/profile
# 在文件末尾添加内容如下:
export PATH=$PATH:/usr/local/redis/bin

# 使profile生效
source /etc/profile

# 停止无密码redis服务
redis-cli shutdown
# 停止有密码redis服务
redis-cli -a 123456 shutdown
# 启动客户端
redis-cli
# 授权
auth 123456

2. 在docker安装redis

(1) 无持久化方式

操作的数据只在内存中,容器关闭了,数据会消失。

docker-compose.yml配置内容如下:

1
2
3
4
5
6
7
8
9
version: "3"
services:
redis:
image: redis:latest
restart: always
container_name: "redis-app"
command: redis-server --requirepass 123456
ports:
- 6379:6379

其中参数–requirepass表示客户端连接redis服务端时需要密码。

(2) 有持久化方式

AOF模式持久化,每秒钟强制写入磁盘一次。

docker-compose.yml配置内容如下:

1
2
3
4
5
6
7
8
9
10
11
version: "3"
services:
redis:
image: redis:latest
restart: always
container_name: "redis-app"
command: redis-server --requirepass 123456 --appendonly yes --appendfsync everysec
ports:
- 6379:6379
volumes:
- /data/redis:/data

其中–requirepass 表示客户端连接redis服务端时需要密码; –appendonly表示使用AOF模式持久化, –appendfsync表示多长时间把数据写入硬盘

(3) 自定义redis配置

docker-compose.yml配置内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
version: "3"
services:
redis:
image: redis:latest
restart: always
container_name: "redis-app"
command: redis-server /usr/local/etc/redis/redis.conf
ports:
- 6379:6379
volumes:
- ./redis.conf:/usr/local/etc/redis/redis.conf
- /data/redis:/data

自定义配置文件,为了支持远程连接,在默认的配置修改了以下信息:

  • bind:默认绑定本机,已取消
  • protected-mode:默认开启,已取消
  • requirepass:默认密码为空,已开启和设置密码