找回密码
 注册
查看: 168|回复: 2

centos8.5系统安装redis8.2.2版本全过程

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2026-4-20 12:17:18 | 显示全部楼层 |阅读模式
在 CentOS 8.5 上从源代码安装 Redis 涉及多个步骤,包括安装依赖项、编译和安装 Redis。下面是一个详细的指南:
( W$ Z& ]5 S* r
! Z: d% m/ l, V1 a; C6 l. Z步骤 1: 安装依赖项
3 a1 |& b7 K# d首先,你需要安装编译 Redis 所需的依赖项。打开终端并运行以下命令:' Q2 L3 i1 w; v- t* `5 B* e& m8 X

+ L7 Z; S  ^7 v2 K  p+ H' r[root@asset ~]# dnf install -y gcc make tcl + F& h7 G0 ^9 p/ ^$ d9 n7 n
9 w8 m# H# r1 n9 O- l6 P. s
# dnf install -y systemd-devel gcc make
, q- ]2 n5 W/ H  k7 ~9 e$ a. Q- Y3 H" s+ C
步骤 2: 下载 Redis 源码" M: ^* F3 E% v
你可以从 Redis 的官方网站或 GitHub 仓库下载最新的源码。使用以下命令下载最新版本的源码:" H& S$ @1 H# J6 _+ v- x9 d

) i9 `# L& Q, ^7 M! M( M9 n+ `; h, g, Z+ L. n+ O9 {5 z4 y5 i
wget https://download.redis.io/releases/redis-8.2.2.tar.gz8 a5 h% g4 n* d8 \7 P& O( b. Y1 p
或者使用 curl:
: `5 k- S7 W8 ~. C, |
/ s5 p( b. i$ Y; G  ~/ ~curl -O https://download.redis.io/releases/redis-8.2.2.tar.gz
' ^1 Z0 z) x: C; P* ?$ v步骤 3: 解压源码包4 K' e7 N2 w, F9 G# Q
下载完成后,解压源码包:9 X: k$ @7 V$ f/ L

& R! Q" |7 V6 E% f( `$ rbash. b" l1 F9 I9 D, ~# L/ c. U
# tar -zxvf redis-8.2.2.tar.gz
. [, ^6 F: ]5 B0 T# H  P2 D$ l. U
1 c: m0 B- C: T* r2 @" Acd redis-8.2.2/
8 a$ x# B; T4 J" L; K0 x6 W. z1 p( Q& A: y" ]9 W  J! U0 b
步骤 4: 编译 Redis+ p  b2 w. ~  n
在源码目录中,运行以下命令来编译 Redis:
) L! e) Y) ?$ [4 ^5 \& g2 i+ }) Q6 @& D% w2 B! n' N1 B
[root@asset redis-8.2.2]# make PREFIX=/usr/local/redis install   }0 c# ?% E$ M# {
make USE_SYSTEMD=yes PREFIX=/usr/local/redis install
- h) t! J/ Q% Q! v: P步骤 5: 安装 Redis- H9 P$ ]- v6 |* e/ e: ~4 w
编译完成后,使用以下命令安装 Redis:
2 D' r& s4 h5 ?5 T2 [
6 C4 y! {3 M! ]! H) B$ K) Y9 d$ \% p6 P/ X+ T
sudo make install   以上即可安装成功,这步可以不做。 只有上面只执行了make 需要做。
, a3 D, J. R7 D/ ~2 \! D9 O步骤 6: 创建 Redis 用户(可选)
5 q) `, e* c4 o  A2 u& X为了安全起见,你可以创建一个专门用于运行 Redis 的用户。执行以下命令:
% [9 X5 p+ g* G( P
6 C" S! D7 T% |* a useradd -r -s /sbin/nologin -M redis
/ e2 m! G8 V  L6 C& N: G, s步骤 7: 配置 Redis(可选)
" z& ?' I8 }1 @" x, |: M你可以通过编辑 /etc/redis/redis.conf 来配置 Redis。如果这个文件不存在,你可以从 /usr/local/bin 中复制一个示例配置文件:
% z1 O% v0 S1 f) N- }' H% I8 q( k, r( E  E. E
做软连接,让系统可以调用redis服务:0 U8 A+ _$ X4 F# I5 O  _# R

. T' D- ^* N  E  t+ M6 w8 `5 B' `7 j
[root@asset ~]# ln -s /usr/local/redis/bin/redis-server /usr/bin/
0 c" G; s2 U' X( L7 ^
: N: {! U/ J( ^8 d- ^# i[root@asset ~]# ln -s /usr/local/redis/bin/redis-cli /usr/bin/
. ]9 d9 _* I/ S5 |" Z6 k$ @5 ~" N- s. x0 B; y5 V, c5 ^! f9 {' E
验证命令:" ]8 L" |! B2 b; D  d" {
[root@asset ~]# redis-server 3 I' w/ L( ]4 R4 Q
1720147:C 20 Mar 2026 20:53:29.549 # WARNING Memory overcommit must be enabled! Without it, a background save or replication may fail under low memory condition. Being disabled, it can also cause failures without low memory condition, see https://github.com/jemalloc/jemalloc/issues/1328. 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.
$ t, |4 \8 \6 F1 v1720147:C 20 Mar 2026 20:53:29.549 * oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
/ C% Q! \9 J2 O8 T1720147:C 20 Mar 2026 20:53:29.549 * Redis version=8.2.2, bits=64, commit=00000000, modified=0, pid=1720147, just started
1 A; t# R! @6 \1720147:C 20 Mar 2026 20:53:29.549 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.conf
* Y+ S9 h$ L; u! y+ g1720147:M 20 Mar 2026 20:53:29.550 * Increased maximum number of open files to 10032 (it was originally set to 1024).
8 v9 k( S8 ]: N5 U1720147:M 20 Mar 2026 20:53:29.550 * monotonic clock: POSIX clock_gettime
3 \3 L  y3 I; }% J  p9 y. {                _._                                                  
8 m& }+ P( w, f2 g5 c           _.-``__ ''-._                                             
3 T6 `8 q8 b: e) N8 h0 l9 i: F6 x4 {      _.-``    `.  `_.  ''-._           Redis Open Source            
7 z4 E! G4 ?: o" S1 @4 R1 t# O  .-`` .-```.  ```\/    _.,_ ''-._      8.2.2 (00000000/0) 64 bit3 A" t! H. {2 l% o- U" I* }5 W
(    '      ,       .-`  | `,    )     Running in standalone mode1 R1 ^+ w5 w: n  A0 a9 i7 ^* s
|`-._`-...-` __...-.``-._|'` _.-'|     Port: 63793 l3 I; a  ~& o
|    `-._   `._    /     _.-'    |     PID: 1720147
( E) H* j5 e5 D7 g  e9 c, a  `-._    `-._  `-./  _.-'    _.-'                                   : h- d! F4 @( w( Q0 i
|`-._`-._    `-.__.-'    _.-'_.-'|                                  7 z  a4 n/ p: g
|    `-._`-._        _.-'_.-'    |           https://redis.io      
8 c9 c- X2 ]! ?9 Z' v/ b  `-._    `-._`-.__.-'_.-'    _.-'                                   
) ]. o! n) L# W! `2 ^. y! Q( f |`-._`-._    `-.__.-'    _.-'_.-'|                                  9 I- u2 s$ `: w- N& u
|    `-._`-._        _.-'_.-'    |                                  3 j7 J' _" g. b
  `-._    `-._`-.__.-'_.-'    _.-'                                   
' A. T- Z8 I, q4 [' c" Y      `-._    `-.__.-'    _.-'                                       ) W5 z2 ]$ k- G: ?9 j: j
          `-._        _.-'                                           : ^  l. @5 d: O' Z$ P& v5 I- z
              `-.__.-'                                               ; g/ P/ n1 K# ]' z8 t

5 l4 |) J: L; l5 E3 q1720147:M 20 Mar 2026 20:53:29.551 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.7 W0 _7 Q4 A* s8 R0 J: k
1720147:M 20 Mar 2026 20:53:29.551 * Server initialized. _$ @, \0 F/ H+ d
1720147:M 20 Mar 2026 20:53:29.551 * Ready to accept connections tcp
! z& `4 G! e( s4 Q+ e3 \- A$ M^C1720147:signal-handler (1774011210) Received SIGINT scheduling shutdown...
. \4 F& E: f% N1 ~, _1720147:M 20 Mar 2026 20:53:30.962 * User requested shutdown.../ A$ j# B% [3 o8 {  u
1720147:M 20 Mar 2026 20:53:30.962 * Saving the final RDB snapshot before exiting.
+ L: W7 L# N: }4 [1 Y: V; H1720147:M 20 Mar 2026 20:53:30.964 * DB saved on disk% s6 Q# K. j# I: x. a* D3 w
1720147:M 20 Mar 2026 20:53:30.964 # Redis is now ready to exit, bye bye...
, T0 L% {3 z6 ?6 z[root@asset ~]# redis-cli
! o2 n1 J# ?) u  e/ }Could not connect to Redis at 127.0.0.1:6379: Connection refused/ y( ?5 J# C+ P* |8 k# K
not connected> quit" U! x' @6 X: T. c, q) ^1 r( H

4 }7 |, R* h. Q7 k  v; s# g( X' y" ~2 u. v
+ u. X) m% w; K1 o  H
新建redis的目录:
9 V3 M7 ^$ C: C  P% X
, F( C# A8 C" P* F1 G. ]2 ~9 jmkdir /etc/redis/
( v8 o( h  N0 _, Y: V5 D" P5 e0 j
! a" q+ j$ N% o% U& a cp /usr/src/redis-8.2.2/redis.conf /etc/redis/$ U# D' Q9 J/ j2 R
ls -al /etc/redis/redis.conf " _, U3 W8 E4 q
-rw-r--r-- 1 root root 111227 3月  20 20:56 /etc/redis/redis.conf+ p9 [% |+ }6 _3 K
# ?. s- o5 k: B$ J

, x6 a- q. K# }& R5 Z& {3 I, r% F- A4 N% c2 b7 M% M& k+ d
chown redis:redis /etc/redis/redis.conf/ w6 B  N5 O5 k! z$ w; ]

$ E* t. u0 r7 F2 F* x% w步骤 8: 启动 Redis 服务(可选)/ ^, R; I$ ~/ R7 Z
你可以使用以下命令手动启动 Redis 服务:
( c9 n5 h/ }* g( ~4 ?
- i- m. E* C/ L, F' {; k redis-server /etc/redis/redis.conf
6 X! ~5 y5 Z( [1 s
* f$ U6 K7 \4 @3 K: C或者,你也可以编写一个 systemd 服务单元来管理 Redis 服务。; y9 n3 m( Y$ A/ k  f
2 N! F; O$ F0 g6 m" n9 f
创建一个新的 systemd 服务文件:$ a  R  ?) q( _/ p- }6 m
  y2 G8 s7 P8 ~  }

6 @; |( b4 I# ?5 b2 k% x4 g7 _ vim /etc/systemd/system/redis.service: @% J! ^: W; K: f, s
在文件中添加以下内容:
+ ~5 c' S+ B3 t( Z
  Q) ~% `0 g: m& R" d5 [5 Q- |
- f. g5 Q: Q% l" [' k[Unit]
7 f- p' B+ V0 C, Z$ X3 }Description=Redis In-Memory Data Store. f$ m! h& [# v- V, v* c
After=network.target# P4 E1 Y/ ]9 ~! p

+ b/ }. x5 M+ N' d/ E1 L* a& s( r[Service]+ q8 d$ |3 p) M6 J
User=redis& ^. e3 ~  F" B# I& m
Group=redis5 g& U& D2 i3 V2 L
ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf
9 A" {& f/ s2 Q. _% @, D' P4 A9 JExecStop=/bin/kill -s TERM $MAINPID
% O8 ^: W# ^' g& T9 m. j6 ^Restart=on-failure
- {/ H' |% l0 a: aType=notify
. @8 p  j" }/ l3 d/ \PIDFile=/var/run/redis_6379.pid  # 根据需要修改端口号和PID文件位置  F8 }9 F3 E$ I- E
PermissionsStartOnly=true
# ?' _' h9 b, t/ wRestart=always
$ K( M+ c7 n3 K4 [/ U0 ZLimitNOFILE=65535  # 根据需要调整文件描述符限制,默认是10240,Redis可能需要更多。8 h6 R8 O! Q% M9 v
LimitCORE=infinity  # 让Redis可以产生core dump,以便于调试。根据需要调整。* d0 ^8 t7 ~/ ?+ A! H5 _
TimeoutStopSec=0    # 不等待正常停止,直接杀掉进程。根据需要调整。: ^- U9 f. C* J! n" K" C  [' A7 X
PrivateTmp=true     # 使用临时目录。根据需要调整。
/ v9 c/ t0 i) ^+ {# MPrivateDevices=yes  # 不允许访问设备文件。根据需要调整。. |8 H. Y* T9 C# l1 s. f
ProtectHome=true    # 不允许访问home目录。根据需要调整。! [1 P8 Y0 y7 {# c
ProtectSystem=full  # 不允许访问系统目录。根据需要调整。5 U5 u# H5 h% v7 ]# h; f
ProtectControlGroups=true  # 不允许访问控制组。根据需要调整。
- H: B7 f0 r! P1 v& X# V1 p- xProtectKernelTunables=yes  # 不允许修改内核参数。根据需要调整。
% v* q+ U" l3 `  T+ l, F& TProtectKernelModules=yes   # 不允许装载内核模块。根据需要调整。
+ A, v3 V. ?" e# LProtectKernelLogs=yes      # 不允许访问内核日志。根据需要调整。
, T  S) g( y6 |) a/ J; a4 qNoNewPrivileges=yes        # 不允许提升权限。根据需要调整。
* h) s# }: A) h  w. pReadWriteDirectories=-/var/lib/redis -/var/log/redis # 设置可读写的目录。根据需要调整。8 W# _; R' H) s3 i
ReadOnlyDirectories=-/etc/redis # 设置只读的目录。根据需要调整。  # 设置2 x9 C9 R8 K, S& a

: s1 U3 r* S6 l! N6 V
( }0 ?8 U/ J" I( w- m5 R
# {( T8 S" Q8 O
5 \6 @( B1 J) ]$ X# y最终的:8 b! A* I2 F8 s9 {' {& N
5 m6 }3 Y. k- x* a8 r# q% \$ P
/etc/systemd/system/redis.service
  Q: u4 z$ }1 N) X; o7 `% [& I; q# g+ M7 v4 L  m; f
cat /etc/systemd/system/redis.service 4 ~( ~5 o5 ]) s$ e3 `
ini - p# ~0 L- @7 [: ?
[Unit]
# A$ Z) ~  L4 L- w) o! E. rDescription=Redis In-Memory Data Store
" A6 T9 s$ D$ q+ D7 I: W4 ~After=network.target7 b2 l) C+ ?$ L! X
# z! F1 @& n- Z0 F
[Service]+ Z$ @$ L' p9 ~
User=redis% M& ]2 w: y8 U& Q
Group=redis3 U- r2 @: ?' }7 D) b# D9 o' o
ExecStart=/usr/bin/redis-server /etc/redis/redis.conf
' Y# m% H/ |2 X, @$ k/ CExecStop=/bin/kill -s TERM $MAINPID: J" F$ r9 |* H$ Q
Restart=on-failure6 N0 T1 |9 M) H' w6 f* Z+ `# N
Type=notify( @& v: |# {2 L3 E+ M
PIDFile=/var/run/redis/redis_6379.pid  
9 q3 Q' e! V  Y' K% I3 n7 T3 @#PermissionsStartOnly=true: Z. x$ M# t9 y8 j# L  I$ d/ E
Restart=always  I" j/ t4 t0 \: q' G: m% O( o
LimitNOFILE=65535  + v1 B: o- _0 y3 ?! B6 Z( ^
LimitCORE=infinity
! z0 X% C0 A: a7 Y- r; C" }9 UTimeoutStopSec=0   
% p5 Y9 O! [$ W/ }' u( f* yPrivateTmp=true   
' J; S" o' h: `, m) Q0 T, WPrivateDevices=yes
  @+ D* _5 X& w1 SProtectHome=true   , ?& \  ~( o* u* h
ProtectSystem=full
$ Y4 ~, F3 u3 I: v' TProtectControlGroups=true 8 S5 V- d0 ^/ E+ S
ProtectKernelTunables=yes  
0 I' y% W, K3 F; z' R# k/ yProtectKernelModules=yes   8 f9 n/ C. }. r
NoNewPrivileges=yes      
2 H5 P, E+ N  K/ nReadWritePaths=-/var/lib/redis -/var/log/redis 8 h. p, i, _, I4 Z
ReadOnlyPaths=-/etc/redis
  }8 F9 s$ j/ F8 D* J* y# E; W! N! F; n

" i, s# ~* U) I+ ~4 a* x
0 C* }/ P. M* g8 [4 W6 z* q. I$ [* H+ _3 f; a6 ~# I: s8 O

: x; C# {$ D+ m! q( C7 i4 d. E4 {& Y- \5 A( K) U. e

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2026-4-20 19:36:20 | 显示全部楼层
[root@asset log]# touch /var/log/redis.log
/ H! v+ G$ b) @7 ~: @[root@asset log]# chown redis:redis  /var/log/redis.log* s: r# f4 h. j4 W

0 E- }* `  e& A1 k( b# u& z1 c. B
* |& V- D4 h. Y/ [. R[root@asset log]# touch /var/run/redis_6379.pid7 F3 r- B7 b( f8 H% i! C
[root@asset log]# chown redis:redis /var/run/redis_6379.pid
8 H# W; q, H; ^$ V  t4 h# j4 |& P+ A: d2 J

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2026-4-20 19:52:01 | 显示全部楼层
[root@asset log]# mkdir -p /var/lib/redis 7 ]' V' h" {8 b( t* K, V' j
[root@asset log]# chown redis:redis /var/lib/redis& s% S7 u: q1 l6 Y! e3 T
9 i3 ^7 m5 T+ K4 \
[root@asset log]# mkdir -p /var/run/redis/( v3 v1 Z0 x/ m( X# \+ ?3 [
[root@asset log]# chown -R redis:redis /var/run/redis/
9 |" g! F0 i0 S5 w: u2 s# r) N" n$ ~7 ?+ e
2 Y# B9 Q$ j  {
修改redis.conf文件:$ u# X. d' Y7 b8 S) ]
bind 0.0.0.0
7 q7 H5 g$ U& M) P) T. R/ Kdir /var/lib/redis
5 }1 ^: j2 Z) j) r4 ~3 w1 Xsupervised systemd+ v* S  ]( F; B+ U
logfile "/var/log/redis.log"; E1 [8 ]' Q& I$ N* V3 v$ V
pidfile /var/run/redis/redis_6379.pid3 M" a, U4 P* Y# |
requirepass password
+ [" L' G2 p0 I: Z6 J8 i
7 r4 `: p& g( _" }- p: U; j
, D5 m+ K- d. e  b" f6 D6 |/ K: ~9 E; N$ j' `

+ s/ X/ |, a8 t' E: b4 c0 f; o
  a. V* d$ S* o
# x3 a* x1 m% Q
) e7 |. S- {: f" p& s2 p9 z
您需要登录后才可以回帖 登录 | 注册

本版积分规则

返回首页|Archiver|手机版|小黑屋|易陆发现技术论坛 ( 蜀ICP备2026014127号-1 )

GMT+8, 2026-6-12 01:47 , Processed in 0.017412 second(s), 22 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表