Redis源码编译安装

Redis源码编译安装

Redis简介

Redis 是完全开源免费的,遵守BSD协议,是一个高性能(NOSQL)的key-value数据库,Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主持。从2013年5月开始,Redis的开发由Pivotal赞助。(Vmware在资助着redis项目的开发和维护)

BSD是”Berkeley Software Distribution”的缩写,意思是”伯克利软件发行版”。

BSD开源协议是一个给于使用者很大自由的协议。可以自由的使用,修改源代码,也可以将修改后的代码作为开源或者专有软件再发布。BSD代码鼓励代码共享,但需要尊重代码作者的著作权。BSD由于允许使用者修改和重新发布代码,也允许使用或在BSD代码上开发商业软件发布和销售,因此是对商业集成很友好的协议。

安装Redis

下载Redis源码包,这里使用的是redis-5.0.14,官网下载地址:http://download.redis.io/releases/

1. 解压源码包

1、把下载好的redis源码包解压到当前目录中

1
2
3
4
5
6
7
8
root@VM-0-7-ubuntu:~# cd /app/soft/
root@VM-0-7-ubuntu:/app/soft# tar xf redis-5.0.14.tar.gz
root@VM-0-7-ubuntu:/app/soft# ll
total 1111
drwxr-xr-x 5 ubuntu ubuntu 4096 Dec 30 18:03 ./
drwxr-xr-x 6 ubuntu ubuntu 4096 Dec 30 18:17 ../
drwxrwxr-x 7 root root 4096 Dec 30 18:04 redis-5.0.14/
-rw-r--r-- 1 root root 2000179 Dec 30 17:00 redis-5.0.14.tar.gz

2. 编译安装

编译Redis,需要加上PREFIX=/path/ 指定安装路径,不值得的话默认是在当前目录下中的src里

1
2
3
4
5
6
7
8
9
10
11
12
13
# 进入解压目录
root@VM-0-7-ubuntu:/app/soft# cd redis-5.0.14/
# 指定安装目录
root@VM-0-7-ubuntu:/app/soft/redis-5.0.14# make PREFIX=/app/redis install
...
Hint: It's a good idea to run 'make test' ;)

INSTALL install
INSTALL install
INSTALL install
INSTALL install
INSTALL install
make[1]: Leaving directory '/app/soft/redis-5.0.14/src'

3. 配置Redis

创建所需要的数据目录和用户

1
2
root@VM-0-7-ubuntu:/app/soft/redis-5.0.14# cd /app/redis/
root@VM-0-7-ubuntu:/app/redis# mkdir etc logs data run

拷贝Redis配置文件到创建好的etc目录下

1
root@VM-0-7-ubuntu:/app/redis# cp /app/soft/redis-5.0.14/redis.conf /app/redis/etc/

创建redis 用户用来启动redis

1
root@VM-0-7-ubuntu:/app/redis# groupadd -g 2022 redis && useradd -r -u 2022 -g 2022 redis -s /sbin/nologin

修改redis配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
root@VM-0-7-ubuntu:/app/redis# cd etc/
root@VM-0-7-ubuntu:/app/redis/etc# ls
redis.conf
root@VM-0-7-ubuntu:/app/redis/etc# vim redis.conf
bind 0.0.0.0
port 6379
tcp-keepalive 300
daemonize yes
supervised no
pidfile /app/redis/run/redis_6379.pid
loglevel notice
logfile "/app/redis/logs/redis_6379.log"
databases 16
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
dir /app/redis/data
requirepass xxxxxxxxx
maxmemory 2147483648
...

4. 编辑service启动文件

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
root@VM-0-7-ubuntu:/app/redis/etc# vim /usr/lib/systemd/system/redis.service
[Unit]
Description=Redis persistent key-value database
After=network.target
After=network-online.target
Wants=network-online.target

[Service]
ExecStart=/app/redis/bin/redis-server /app/redis/etc/redis.conf --supervised systemd
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
Type=notify
User=redis
Group=redis
RuntimeDirectory=redis
RuntimeDirectoryMode=0755

[Install]
WantedBy=multi-user.target
# 给Redis安装目录授予Redis用户权限
root@VM-0-7-ubuntu:/app/redis/etc# chown -R redis.redis /app/redis/
root@VM-0-7-ubuntu:/app/redis/etc# ll
total 72
drwxr-xr-x 2 redis redis 4096 Dec 31 14:19 ./
drwxr-xr-x 7 redis redis 4096 Dec 30 18:26 ../
-rw-r--r-- 1 redis redis 63173 Dec 31 14:19 redis.conf

5. 启动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
# 资源限制优化
root@VM-0-7-ubuntu:~# vim /etc/security/limits.conf
* soft core unlimited
* hard core unlimited
* soft nproc 1000000
* hard nproc 1000000
* soft nofile 1000000
* hard nofile 1000000
* soft memlock 32000
* hard memlock 32000
* soft msgqueue 8192000
* hard msgqueue 8192000

root soft core unlimited
root hard core unlimited
root soft nproc 1000000
root hard nproc 1000000
root soft nofile 1000000
root hard nofile 1000000
root soft memlock 32000
root hard memlock 32000
root soft msgqueue 8192000
root hard msgqueue 8192000

root@VM-0-7-ubuntu:/app/redis# echo never > /sys/kernel/mm/transparent_hugepage/enabled
root@VM-0-7-ubuntu:~# vim /etc/sysctl.conf
vm.overcommit_memory = 1
fs.file-max = 6553600
net.core.somaxconn = 8096
root@VM-0-7-ubuntu:~# sysctl -p

启动Redis服务

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
root@VM-0-7-ubuntu:/app/redis/etc# systemctl daemon-reload
root@VM-0-7-ubuntu:/app/redis/etc# systemctl enable redis
Created symlink /etc/systemd/system/multi-user.target.wants/redis.service → /lib/systemd/system/redis.service.
root@VM-0-7-ubuntu:/app/redis/etc# systemctl restart redis
root@VM-0-7-ubuntu:/app/redis/etc# ss -tnl
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 10 172.20.0.7:53 0.0.0.0:*
LISTEN 0 10 127.0.0.1:53 0.0.0.0:*
LISTEN 0 4096 127.0.0.53%lo:53 0.0.0.0:*
LISTEN 0 4096 127.0.0.1:953 0.0.0.0:*
LISTEN 0 128 127.0.0.1:6010 0.0.0.0:*
LISTEN 0 128 0.0.0.0:12224 0.0.0.0:*
LISTEN 0 511 0.0.0.0:6379 0.0.0.0:*
LISTEN 0 4096 0.0.0.0:111 0.0.0.0:*
LISTEN 0 10 [fe80::5054:ff:fe59:d076]%eth0:53 [::]:*
LISTEN 0 10 [::1]:53 [::]:*
LISTEN 0 4096 [::1]:953 [::]:*
LISTEN 0 128 [::1]:6010 [::]:*
LISTEN 0 128 [::]:12224 [::]:*
LISTEN 0 900 *:3306 *:*
LISTEN 0 4096 [::]:111 [::]:*

6. 查看Redis信息

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
root@VM-0-7-ubuntu:~# /app/redis/bin/redis-cli 
127.0.0.1:6379> AUTH xxxxxxxx
OK
127.0.0.1:6379> info
# Server
redis_version:5.0.14
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:cef3eb236cae2aee
redis_mode:standalone
os:Linux 5.4.0-135-generic x86_64
arch_bits:64
multiplexing_api:epoll
atomicvar_api:atomic-builtin
gcc_version:9.4.0
process_id:641817
run_id:e834dd4e114b5d8789be2dcec128fd2f7507fe55
tcp_port:6379
uptime_in_seconds:180
uptime_in_days:0
hz:10
configured_hz:10
lru_clock:11524879
executable:/app/redis/bin/redis-server
config_file:/app/redis/etc/redis.conf
...

Redis源码编译安装
https://www.dklwj.com/2022/12/redis-install.html
作者
阿伟
发布于
2022年12月30日
许可协议