如何编译安装redisd

50次阅读
没有评论

共计 12297 个字符,预计需要花费 31 分钟才能阅读完成。

自动写代码机器人,免费开通

这篇文章给大家分享的是有关如何编译安装 redisd 的内容。丸趣 TV 小编觉得挺实用的,因此分享给大家做个参考,一起跟随丸趣 TV 小编过来看看吧。

安装方法:yum 安装

查看 yum 仓库 redis 版本

[root@centos ~]# yum list redis
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
Available Packages
redis.x86_64 3.2.12-2.el7 myepel

yum 安装 [root@centos ~]# yum install redis -y

启动服务并设为开机启动

[root@centos ~]# systemctl enable --now redis
Created symlink from /etc/systemd/system/multi-user.target.wants/redis.service to /usr/lib/systemd/system/redis.service.

查看 redis 端口

[root@centos ~]# ss -ntl
State Recv-Q Send-Q Local Address:Port Peer Address:Port 
LISTEN 0 128 127.0.0.1:631 *:* 
LISTEN 0 100 127.0.0.1:25 *:* 
LISTEN 0 128 127.0.0.1:6010 *:* 
LISTEN 0 128 *:54909 *:* 
LISTEN 0 128 127.0.0.1:6379 *:* #  这个是 redis 端口
LISTEN 0 128 *:111 *:* 
LISTEN 0 5 192.168.122.1:53 *:*

测试登录 redis

[root@centos ~]# redis-cli
127.0.0.1:6379  info
# Server
redis_version:3.2.12
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:7897e7d0e13773f
redis_mode:standalone
os:Linux 3.10.0-1062.el7.x86_64 x86_64
arch_bits:64
multiplexing_api:epoll
gcc_version:4.8.5
process_id:2914
run_id:c75137717c54caa78bb05757d05c91471ef5817f
tcp_port:6379
uptime_in_seconds:175
uptime_in_days:0
hz:10
lru_clock:4329484
executable:/usr/bin/redis-server
config_file:/etc/redis.conf
# Clients
connected_clients:1
client_longest_output_list:0
client_biggest_input_buf:0
blocked_clients:0

测试使用

127.0.0.1:6379  set key1 value1
127.0.0.1:6379  get key1
 value1

编译安装

下载当前最新 release 版本 redis 源码包:http://download.redis.io/releases/

编译安装命令

如何编译安装 redisd

官方安装命令:https://redis.io/download

#  源码包存放目录
[root@centos ~]# cd /usr/local/src/
#  下载源码包
[root@centos src]# wget http://download.redis.io/releases/redis-5.0.7.tar.gz
--2020-02-11 10:37:54-- http://download.redis.io/releases/redis-5.0.7.tar.gz
Resolving download.redis.io (download.redis.io)... 109.74.203.151
Connecting to download.redis.io (download.redis.io)|109.74.203.151|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1984203 (1.9M) [application/x-gzip]
Saving to: ‘redis-5.0.7.tar.gz 
100%[===============================================] 1,984,203 6.75KB/s in 3m 35s 
2020-02-11 10:41:39 (9.02 KB/s) - ‘redis-5.0.7.tar.gz  saved [1984203/1984203]
#  查看下载好的源码包
[root@centos src]# ll
total 1940
-rw-r--r-- 1 root root 1984203 Nov 20 01:06 redis-5.0.7.tar.gz

解压源码包

[root@centos src]# tar xf redis-5.0.7.tar.gz 
[root@centos src]# ll
total 1940
drwxrwxr-x 6 root root 334 Nov 20 01:05 redis-5.0.7
-rw-r--r-- 1 root root 1984203 Nov 20 01:06 redis-5.0.7.tar.gz

创建配置文件、日志、数据等目录

[root@centos ~]# mkdir /apps/redis/{etc,logs,data,run} -p
#  查看目录结构
[root@centos ~]# tree /apps/
/apps/
└── redis
 ├── data
 ├── etc
 ├── logs
 └── run

进入 redis 目录编译安装

[root@centos ~]# cd /usr/local/src/redis-5.0.7/
[root@centos redis-5.0.7]# make PREFIX=/apps/redis install
cd src   make install
make[1]: Entering directory `/usr/local/src/redis-5.0.7/src 
 CC Makefile.dep
make[1]: Leaving directory `/usr/local/src/redis-5.0.7/src 
make[1]: Entering directory `/usr/local/src/redis-5.0.7/src 
 CC adlist.o
/bin/sh: cc: command not found
make[1]: *** [adlist.o] Error 127
make[1]: Leaving directory `/usr/local/src/redis-5.0.7/src 
make: *** [install] Error 2
#  出现以上报错是没有 gcc 编译器导致的
#  下载 gcc 编译器
[root@centos redis-5.0.7]# yum install gcc
#  记得这里要把之前的 redis 目录删除重新解压
[root@centos src]# rm -rf redis-5.0.7
[root@centos src]# tar xf redis-5.0.7.tar.gz 
#  重新进入目录进行编译
[root@centos src]# cd redis-5.0.7/
[root@centos redis-5.0.7]# make PREFIX=/apps/redis install #  指定安装目录
cd src   make install
make[1]: Entering directory `/usr/local/src/redis-5.0.7/src 
 CC Makefile.dep
make[1]: Leaving directory `/usr/local/src/redis-5.0.7/src 
make[1]: Entering directory `/usr/local/src/redis-5.0.7/src 
rm -rf redis-server redis-sentinel redis-cli redis-benchmark redis-check-rdb redis-check-aof *.o *.gcda *.gcno *.gcov redis.info lcov-html Makefile.dep dict-benchmark
(cd ../deps   make distclean)
make[2]: Entering directory `/usr/local/src/redis-5.0.7/deps 
(cd hiredis   make clean)   /dev/null || true
(cd linenoise   make clean)   /dev/null || true
(cd lua   make clean)   /dev/null || true
(cd jemalloc   [ -f Makefile ]   make distclean)   /dev/null || true
(rm -f .make-*)
make[2]: Leaving directory `/usr/local/src/redis-5.0.7/deps 
(rm -f .make-*)
....(省略)
Hint: It s a good idea to run  make test  ;)
 INSTALL install
 INSTALL install
 INSTALL install
 INSTALL install
 INSTALL install
make[1]: Leaving directory `/usr/local/src/redis-5.0.7/src 
#  最后报这个就是编译完成 

拷贝配置文件

[root@centos redis-5.0.7]# ll 
total 276
-rw-rw-r-- 1 root root 115100 Nov 20 01:05 00-RELEASENOTES
-rw-rw-r-- 1 root root 53 Nov 20 01:05 BUGS
-rw-rw-r-- 1 root root 2381 Nov 20 01:05 CONTRIBUTING
-rw-rw-r-- 1 root root 1487 Nov 20 01:05 COPYING
drwxrwxr-x 6 root root 192 Feb 11 11:32 deps
-rw-rw-r-- 1 root root 11 Nov 20 01:05 INSTALL
-rw-rw-r-- 1 root root 151 Nov 20 01:05 Makefile
-rw-rw-r-- 1 root root 6888 Nov 20 01:05 MANIFESTO
-rw-rw-r-- 1 root root 20555 Nov 20 01:05 README.md
-rw-rw-r-- 1 root root 61797 Nov 20 01:05 redis.conf
-rwxrwxr-x 1 root root 275 Nov 20 01:05 runtest
-rwxrwxr-x 1 root root 280 Nov 20 01:05 runtest-cluster
-rwxrwxr-x 1 root root 373 Nov 20 01:05 runtest-moduleapi
-rwxrwxr-x 1 root root 281 Nov 20 01:05 runtest-sentinel
-rw-rw-r-- 1 root root 9710 Nov 20 01:05 sentinel.conf
drwxrwxr-x 3 root root 8192 Feb 11 11:33 src
drwxrwxr-x 11 root root 182 Nov 20 01:05 tests
drwxrwxr-x 8 root root 4096 Nov 20 01:05 utils
[root@centos redis-5.0.7]# cp redis.conf /apps/redis/etc/

启动 redis(这个启动方式)

[root@centos redis-5.0.7]# /apps/redis/bin/redis-server /apps/redis/etc/redis.conf 
8315:C 11 Feb 2020 11:40:12.016 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
8315:C 11 Feb 2020 11:40:12.016 # Redis version=5.0.7, bits=64, commit=00000000, modified=0, pid=8315, just started
8315:C 11 Feb 2020 11:40:12.016 # Configuration loaded
8315:M 11 Feb 2020 11:40:12.017 * Increased maximum number of open files to 10032 (it was originally set to 1024).
 _._ 
 _.-``__  -._ 
 _.-`` `. `_.  -._ Redis 5.0.7 (00000000/0) 64 bit
 .-`` .-```. ```\/ _.,_  -._ 
 (   , .-` | `, ) Running in standalone mode
 |`-._`-...-` __...-.``-._| ` _.- | Port: 6379
 | `-._ `._ / _.-  | PID: 8315
 `-._ `-._ `-./ _.-  _.-  
 |`-._`-._ `-.__.-  _.- _.- | 
 | `-._`-._ _.- _.-  | http://redis.io 
 `-._ `-._`-.__.- _.-  _.-  
 |`-._`-._ `-.__.-  _.- _.- | 
 | `-._`-._ _.- _.-  | 
 `-._ `-._`-.__.- _.-  _.-  
 `-._ `-.__.-  _.-  
 `-._ _.-  
 `-.__.-  
8315:M 11 Feb 2020 11:40:12.017 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
8315:M 11 Feb 2020 11:40:12.017 # Server initialized
8315:M 11 Feb 2020 11:40:12.017 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add  vm.overcommit_memory = 1  to /etc/sysctl.conf and then reboot or run the command  sysctl vm.overcommit_memory=1  for this to take effect.
8315:M 11 Feb 2020 11:40:12.017 # WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command  echo never   /sys/kernel/mm/transparent_hugepage/enabled  as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled.
8315:M 11 Feb 2020 11:40:12.018 * Ready to accept connections

解决当前的警告提示

tcp-backlog
The backlog argument defines the maximum length to which the queue of pending connections for sockfdmay grow. If a connection request arrives when the queue is full, the client may receive an error with an indication of ECONNREFUSED or, if the underlying protocol supports retransmission, the request may be ignored so that a later reattempt at connection succeeds.

backlog 参数控制的是三次握手的时候 server 端收到 client ack 确认号之后的队列值。

[root@centos ~]# echo 511   /proc/sys/net/core/somaxconn
vm.overcommit_memory

0、表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用进程。1、表示内核允许分配所有的物理内存,而不管当前的内存状态如何。2、表示内核允许分配超过所有物理内存和交换空间总和的内存

[root@centos ~]# echo  vm.overcommit_memory = 1   /etc/sysctl.conf
transparent hugepage
大页内存动态分配,需要关闭让 redis  负责内存管理。[root@centos ~]# echo never   /sys/kernel/mm/transparent_hugepage/enabled

重启一下服务

#  再次启动服务,警告信息没有了。[root@centos ~]# /apps/redis/bin/redis-server /apps/redis/etc/redis.conf 
1847:C 13 Feb 2020 12:03:59.281 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
1847:C 13 Feb 2020 12:03:59.281 # Redis version=5.0.7, bits=64, commit=00000000, modified=0, pid=1847, just started
1847:C 13 Feb 2020 12:03:59.281 # Configuration loaded
1847:M 13 Feb 2020 12:03:59.282 * Increased maximum number of open files to 10032 (it was originally set to 1024).
 _._ 
 _.-``__  -._ 
 _.-`` `. `_.  -._ Redis 5.0.7 (00000000/0) 64 bit
 .-`` .-```. ```\/ _.,_  -._ 
 (   , .-` | `, ) Running in standalone mode
 |`-._`-...-` __...-.``-._| ` _.- | Port: 6379
 | `-._ `._ / _.-  | PID: 1847
 `-._ `-._ `-./ _.-  _.-  
 |`-._`-._ `-.__.-  _.- _.- | 
 | `-._`-._ _.- _.-  | http://redis.io 
 `-._ `-._`-.__.- _.-  _.-  
 |`-._`-._ `-.__.-  _.- _.- | 
 | `-._`-._ _.- _.-  | 
 `-._ `-._`-.__.- _.-  _.-  
 `-._ `-.__.-  _.-  
 `-._ _.-  
 `-.__.-  
1847:M 13 Feb 2020 12:03:59.282 # Server initialized
1847:M 13 Feb 2020 12:03:59.282 * DB loaded from disk: 0.000 seconds
1847:M 13 Feb 2020 12:03:59.282 * Ready to accept connections

编辑 redis 服务启动脚本

[root@centos ~]# cat /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=/usr/bin/redis-server /etc/redis.conf --supervised systemd
ExecStart=/apps/redis/bin/redis-server /apps/redis/etc/redis.conf --supervised systemd
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
Type=notify
User=redis
Group=redisRuntimeDirectory=redis
RuntimeDirectoryMode=0755
[Install]
WantedBy=multi-user.target

添加 redis 用户

#  添加用户和组
[root@centos ~]# groupadd -g 1001 redis   useradd -u 1001 -g 1001 redis -s /sbin/nologin
#  数据目录设置所有者所属组
[root@centos ~]# chown redis.redis -R /apps/redis/
system 启动测试
#  开启 redis 并设为开机启动
[root@centos ~]# systemctl enable --now redis
Created symlink from /etc/systemd/system/multi-user.target.wants/redis.service to /usr/lib/systemd/system/redis.service.
#  查看端口
[root@centos ~]# ss -tnl
State Recv-Q Send-Q Local Address:Port Peer Address:Port 
LISTEN 0 128 127.0.0.1:631 *:* 
LISTEN 0 100 127.0.0.1:25 *:* 
LISTEN 0 128 127.0.0.1:6010 *:* 
LISTEN 0 128 127.0.0.1:6011 *:* 
LISTEN 0 128 *:43108 *:* 
LISTEN 0 511 127.0.0.1:6379 *:* #  这个为 redis 端口  
LISTEN 0 128 *:111 *:* 
LISTEN 0 5 192.168.122.1:53 *:* 
LISTEN 0 128 *:22 *:* 
LISTEN 0 128 [::1]:631 [::]:* 
LISTEN 0 100 [::1]:25 [::]:* 
LISTEN 0 128 [::1]:6010 [::]:* 
LISTEN 0 128 [::1]:6011 [::]:* 
LISTEN 0 128 [::]:59279 [::]:* 
LISTEN 0 128 [::]:111 [::]:* 
LISTEN 0 128 [::]:22 [::]:*

客户端连接 redis 测试

#  这里还没有把这个命令加到 PATH 变量里
[root@centos ~]# /apps/redis/bin/redis-cli 
127.0.0.1:6379  info
# Server
redis_version:5.0.7
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:b0887378c143d6e9
redis_mode:standalone
os:Linux 3.10.0-1062.el7.x86_64 x86_64
arch_bits:64
multiplexing_api:epoll
atomicvar_api:atomic-builtin
gcc_version:4.8.5
process_id:2088
run_id:e0bbd2dc1561d1610565c6c8fb61aa817e30924c
tcp_port:6379

创建命令软连接(也可以把这个路径加到 PATH 变量里面)

[root@centos ~]# ln -sv /apps/redis/bin/redis-* /usr/bin/‘/usr/bin/redis-benchmark  -  ‘/apps/redis/bin/redis-benchmark‘/usr/bin/redis-check-aof  -  ‘/apps/redis/bin/redis-check-aof‘/usr/bin/redis-check-rdb  -  ‘/apps/redis/bin/redis-check-rdb‘/usr/bin/redis-cli  -  ‘/apps/redis/bin/redis-cli‘/usr/bin/redis-sentinel  -  ‘/apps/redis/bin/redis-sentinel‘/usr/bin/redis-server  -  ‘/apps/redis/bin/redis-server 
#  命令连接测试
[root@centos ~]# redis-cli 
127.0.0.1:6379  info
# Server
redis_version:5.0.7
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:b0887378c143d6e9
redis_mode:standalone
os:Linux 3.10.0-1062.el7.x86_64 x86_64
arch_bits:64
multiplexing_api:epoll
atomicvar_api:atomic-builtin
gcc_version:4.8.5
process_id:2088
run_id:e0bbd2dc1561d1610565c6c8fb61aa817e30924c
tcp_port:6379
uptime_in_seconds:755
uptime_in_days:0
[root@centos ~]# ll /apps/redis/bin/
total 32772
-rwxr-xr-x 1 redis redis 4366824 Feb 11 11:33 redis-benchmark # redis 性能测试工具
-rwxr-xr-x 1 redis redis 8125216 Feb 11 11:33 redis-check-aof # AOF 文件检查工具
-rwxr-xr-x 1 redis redis 8125216 Feb 11 11:33 redis-check-rdb # RDB 文件检查工具  
-rwxr-xr-x 1 redis redis 4807896 Feb 11 11:33 redis-cli #  客户端工具
lrwxrwxrwx 1 redis redis 12 Feb 11 11:33 redis-sentinel -  redis-server #  哨兵软连接到 server
-rwxr-xr-x 1 redis redis 8125216 Feb 11 11:33 redis-server # redis  服务启动命令 

感谢各位的阅读!关于“如何编译安装 redisd”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

向 AI 问一下细节

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-12-04发表,共计12297字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)