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 ...