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

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

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2026-4-20 12:17:18 | 显示全部楼层 |阅读模式
在 CentOS 8.5 上从源代码安装 Redis 涉及多个步骤,包括安装依赖项、编译和安装 Redis。下面是一个详细的指南:) P% N7 z8 _# J/ f. U
  Z- a7 Z/ e9 l- I7 l" I
步骤 1: 安装依赖项
. V* [9 W, G0 ?% H$ T$ Q+ w首先,你需要安装编译 Redis 所需的依赖项。打开终端并运行以下命令:
" W6 c' q& N1 b1 m
2 k5 o1 W+ X% B[root@asset ~]# dnf install -y gcc make tcl
/ a* I5 o7 h' b+ p4 A& M( Q7 [& E8 p7 u5 d! S
# dnf install -y systemd-devel gcc make
/ C; t/ g4 O# C0 F" P+ I, [$ Z" {, h
步骤 2: 下载 Redis 源码
, Q6 c" h8 b8 N$ g1 n你可以从 Redis 的官方网站或 GitHub 仓库下载最新的源码。使用以下命令下载最新版本的源码:
/ o/ {$ t/ b" l. `. Y4 Y; ]1 I$ f, Q( A" ?. T
7 c9 S+ n+ N. W- d' k
wget https://download.redis.io/releases/redis-8.2.2.tar.gz! s$ ~1 E( r0 G  }+ e( q( j
或者使用 curl:
  Y; p) s: i0 x6 Q% J  f, l" w0 u9 c$ i/ b/ J
curl -O https://download.redis.io/releases/redis-8.2.2.tar.gz. i& b+ h) Y0 a7 w* }/ {6 H' z5 ^
步骤 3: 解压源码包
" }+ }4 }$ T5 |5 F- b% W) v6 q下载完成后,解压源码包:
4 ~! x7 I6 Z% R/ I. y* k
  f4 c( O# r; ~, D+ j+ P* d) Tbash
1 y9 F+ i/ p6 F- e# tar -zxvf redis-8.2.2.tar.gz- {. h3 i# }/ P( k

( t# T* X1 {, i6 S  Q+ Ocd redis-8.2.2/
- F# z2 o, `, S4 t+ s4 g, b( [# h% s/ ]* v9 Y$ _! `
步骤 4: 编译 Redis* U8 ~1 J0 k/ s; l! T# T% g8 b
在源码目录中,运行以下命令来编译 Redis:
4 h# x* Y% Q4 {
; u2 ~* r, W- d$ O& Y& u[root@asset redis-8.2.2]# make PREFIX=/usr/local/redis install & [0 M! _5 m& a) Q* y0 z& F/ O5 ?
make USE_SYSTEMD=yes PREFIX=/usr/local/redis install# y, b! x6 d0 G
步骤 5: 安装 Redis
$ k* j5 p$ G) Z% n8 ~编译完成后,使用以下命令安装 Redis:: v: c: P1 J5 g$ Q# d- M
. @+ B' Q( G  l& c

" j9 K, a7 s! jsudo make install   以上即可安装成功,这步可以不做。 只有上面只执行了make 需要做。/ \- C2 A- b. U1 ~: T4 y; d
步骤 6: 创建 Redis 用户(可选)
) o, ]% H1 C% `9 j为了安全起见,你可以创建一个专门用于运行 Redis 的用户。执行以下命令:
3 s4 n$ @- v" B: n2 P- c7 D  L, T- D0 c( S7 o$ p+ X1 C. `& W8 d$ A
useradd -r -s /sbin/nologin -M redis; R% A$ W/ I7 j* J3 j; e
步骤 7: 配置 Redis(可选)
8 ?1 i. x- M2 [3 N+ `+ f& M/ s你可以通过编辑 /etc/redis/redis.conf 来配置 Redis。如果这个文件不存在,你可以从 /usr/local/bin 中复制一个示例配置文件:, [" u, w2 y; q: G

1 Y. I( B" G7 Q; M# k/ N做软连接,让系统可以调用redis服务:  l" [7 V" v7 A: V9 {9 _

5 B3 v; n% |; w* h/ q- }) J" |+ K) K0 {8 y
[root@asset ~]# ln -s /usr/local/redis/bin/redis-server /usr/bin/: p4 {: g& Z/ A( m* d0 k! x" w
" g( [: J& a# K3 H. N
[root@asset ~]# ln -s /usr/local/redis/bin/redis-cli /usr/bin/# Y" A8 c: e% d; |* A
! m5 o5 }- \/ Y& M
验证命令:
+ y! D" B0 t+ V1 f[root@asset ~]# redis-server # j! c5 v, S6 Q" B4 d
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.  J* f) B/ W% G% M; v  o0 m
1720147:C 20 Mar 2026 20:53:29.549 * oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo3 z1 }  m0 ]# j% n
1720147:C 20 Mar 2026 20:53:29.549 * Redis version=8.2.2, bits=64, commit=00000000, modified=0, pid=1720147, just started
  d# A2 x+ T. J1 N1720147: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
* e8 c; S4 ~$ m1720147:M 20 Mar 2026 20:53:29.550 * Increased maximum number of open files to 10032 (it was originally set to 1024).9 F$ e3 F8 }6 R) i. E7 \4 `7 f
1720147:M 20 Mar 2026 20:53:29.550 * monotonic clock: POSIX clock_gettime
$ x$ ^5 @1 T; F, N7 w                _._                                                  
- A$ w3 @0 P* ]) \: x2 l" \3 l           _.-``__ ''-._                                             ! {1 ^! d# q3 x% w+ P
      _.-``    `.  `_.  ''-._           Redis Open Source              |; Y2 q4 Q6 X) i3 ~/ @- `
  .-`` .-```.  ```\/    _.,_ ''-._      8.2.2 (00000000/0) 64 bit9 W3 j) v% U0 _: ?1 h
(    '      ,       .-`  | `,    )     Running in standalone mode
  X* w, ^' i" j& N% c$ x |`-._`-...-` __...-.``-._|'` _.-'|     Port: 63795 ~( u8 ]) U) f  F- m
|    `-._   `._    /     _.-'    |     PID: 1720147
) g$ z7 N6 A+ V0 B2 r  `-._    `-._  `-./  _.-'    _.-'                                   0 I# h- m9 Y1 v! f# ^
|`-._`-._    `-.__.-'    _.-'_.-'|                                  - X/ w! j- `' @5 Z' E$ z
|    `-._`-._        _.-'_.-'    |           https://redis.io       % l: b0 h) I3 R  _
  `-._    `-._`-.__.-'_.-'    _.-'                                   
- \4 G" D9 k9 ~ |`-._`-._    `-.__.-'    _.-'_.-'|                                 
$ c) m+ G9 O2 G1 V: Y& Y; z, c |    `-._`-._        _.-'_.-'    |                                  ; j3 o3 w4 X. N( G4 E
  `-._    `-._`-.__.-'_.-'    _.-'                                   
# `% h6 F5 @) r$ O$ f& x+ q      `-._    `-.__.-'    _.-'                                       
- e; t! Q2 e# S) W+ [          `-._        _.-'                                           ) y0 P: p# j6 K- h$ N
              `-.__.-'                                               
: e; {; S+ L% ^. P
# H3 ?3 [# A" S2 l. i9 B1720147: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.: V/ N' q% G% v0 p5 G4 v
1720147:M 20 Mar 2026 20:53:29.551 * Server initialized
" s& D. D3 }% G8 l& V6 G1720147:M 20 Mar 2026 20:53:29.551 * Ready to accept connections tcp
- g4 Q& h" p" P- u) c; Z$ ~^C1720147:signal-handler (1774011210) Received SIGINT scheduling shutdown...
* A. G& f2 x  `: H1720147:M 20 Mar 2026 20:53:30.962 * User requested shutdown...
$ \" |5 S' {% y  {1720147:M 20 Mar 2026 20:53:30.962 * Saving the final RDB snapshot before exiting.4 k8 R6 X5 a+ B
1720147:M 20 Mar 2026 20:53:30.964 * DB saved on disk
2 E- g. u1 e7 L" m/ p1720147:M 20 Mar 2026 20:53:30.964 # Redis is now ready to exit, bye bye...5 Y# h1 y. @! A9 ^( E# @# B: c' M: Q
[root@asset ~]# redis-cli
. x: `3 d, g* w0 v( n; uCould not connect to Redis at 127.0.0.1:6379: Connection refused
4 x2 ?* E9 ?3 H  |not connected> quit
- \3 A2 }1 X  B* O* M& c. c6 h8 b; Q1 a( t" @8 P
. ?: O- e! w* b% Y+ V, q9 S- d3 P, ~
3 o/ K2 Z: y4 N7 ]
新建redis的目录:
* N5 m. V& M' _# G
  e7 A1 K0 G& w  hmkdir /etc/redis/" w1 E3 i; a# ~* z; v
3 {/ _  c- E8 @/ O/ e
cp /usr/src/redis-8.2.2/redis.conf /etc/redis/6 r& z7 c. X4 ^2 A: h
ls -al /etc/redis/redis.conf 2 |* r9 [: P8 t6 N: g: C7 ]
-rw-r--r-- 1 root root 111227 3月  20 20:56 /etc/redis/redis.conf' A$ W8 b. |6 p: _2 x/ D$ t+ m
" p0 j8 o/ l% U4 s* Z

4 ^& h! z/ w7 V% V( a$ r
7 x' H; ]) J, `! {; c: Z2 N" f9 v+ D chown redis:redis /etc/redis/redis.conf
& N) }. h) z* x; t$ ], v9 x6 S1 d" v9 o0 s' f9 ~
步骤 8: 启动 Redis 服务(可选)6 F" x; f6 I7 X3 N2 z
你可以使用以下命令手动启动 Redis 服务:4 P! l9 {  e0 ]7 e  Q# \
/ L& N3 |' v9 |( K
redis-server /etc/redis/redis.conf
# k+ U: U' B8 b0 J) y, ~0 n8 V
  M5 ], b2 x6 v+ n8 O或者,你也可以编写一个 systemd 服务单元来管理 Redis 服务。( T  Y' E" n9 U5 j0 l' Y

! j2 a& S# g6 M* O( D创建一个新的 systemd 服务文件:
5 y' H. m" |2 }2 ?" v
; x$ r- W2 z7 R* z0 `/ b0 K* d8 {( ^% u6 e! u+ Q+ u! u
vim /etc/systemd/system/redis.service
: _" u' x: ~0 \8 v$ T5 I在文件中添加以下内容:* \- M' v7 V9 r* B

+ T! A+ y+ p! E  R( @$ t6 e4 Z; o' I8 ]/ F, i
[Unit]; {- ~3 e, n( m8 {& b) k2 J
Description=Redis In-Memory Data Store6 Q7 {3 @* m2 v8 V3 r& ^2 E  N) g
After=network.target$ o5 \" p" ^2 y$ A* e  D

2 |& i4 O/ t, P/ N8 @[Service]  X! z% W. Q6 A  ~* p* S4 U6 n& ~% `
User=redis
( p- m) o& J1 a  [Group=redis4 w. }" z0 F. S7 J9 U8 q' R
ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf4 W$ s7 ~2 N! X$ ?  c8 v
ExecStop=/bin/kill -s TERM $MAINPID
, J# E% d% p$ y+ D$ b+ K. G' vRestart=on-failure
9 q' D# T" w2 [) R9 ^, m  |( W8 z8 pType=notify
  |0 ?  b9 k3 uPIDFile=/var/run/redis_6379.pid  # 根据需要修改端口号和PID文件位置/ t6 V( x- c* k/ D7 G4 `4 b1 y% n
PermissionsStartOnly=true5 `' s) r* ^7 T  q2 w. n! i# Q# J
Restart=always% _. P! ^) h; P3 N/ `; q
LimitNOFILE=65535  # 根据需要调整文件描述符限制,默认是10240,Redis可能需要更多。* r2 Z0 \: l1 ?" O
LimitCORE=infinity  # 让Redis可以产生core dump,以便于调试。根据需要调整。+ Q3 G4 V# F- k6 P* P" A+ m
TimeoutStopSec=0    # 不等待正常停止,直接杀掉进程。根据需要调整。! |: P$ q2 n' D6 v
PrivateTmp=true     # 使用临时目录。根据需要调整。
( h! r# M" Z6 J% u( b* b$ sPrivateDevices=yes  # 不允许访问设备文件。根据需要调整。- [3 w( D: D& w" F+ H, G  [% Z
ProtectHome=true    # 不允许访问home目录。根据需要调整。
1 B/ F* `" T& I. v) K6 M' `% _3 XProtectSystem=full  # 不允许访问系统目录。根据需要调整。& V7 V7 z' s0 Q+ d: i
ProtectControlGroups=true  # 不允许访问控制组。根据需要调整。
- {  L6 W. A/ A6 PProtectKernelTunables=yes  # 不允许修改内核参数。根据需要调整。/ l0 U# p: o; ~3 Y; U2 p- f
ProtectKernelModules=yes   # 不允许装载内核模块。根据需要调整。
+ \8 |" ]3 \8 D7 ^% T8 r0 dProtectKernelLogs=yes      # 不允许访问内核日志。根据需要调整。8 a) m, y* T7 U4 M6 ]% u& ^
NoNewPrivileges=yes        # 不允许提升权限。根据需要调整。
/ C9 b( a0 @) x7 i. NReadWriteDirectories=-/var/lib/redis -/var/log/redis # 设置可读写的目录。根据需要调整。7 Z! l/ n4 w" X. n
ReadOnlyDirectories=-/etc/redis # 设置只读的目录。根据需要调整。  # 设置
3 K4 l( r) a' C  _/ m
0 c. h; }, x# e8 o( o. ]: p+ Z* k& E7 d6 M! Y

2 B1 Y3 k" G0 ^4 X3 U4 P" z* L. ~/ A6 Y
最终的:; {9 `% V+ t& P+ ?$ Q  _- a

! h; H: }7 \3 Z+ W4 z% O$ Z- l* W/etc/systemd/system/redis.service. p) ]" H. k, G) X0 S

+ j* N  R$ W4 {- u$ t& O  l# C+ i: ]7 K cat /etc/systemd/system/redis.service
+ z# f$ J0 j6 r; b5 N4 I6 Nini 8 c6 O5 y- D/ _  y/ T1 \
[Unit]
1 I* {4 E! ?" C7 \) f* r1 }Description=Redis In-Memory Data Store: D  M# m2 k3 r, J) b
After=network.target
  z4 F+ C% P  g9 c& r- b) P
7 y, {& U& j4 s, {9 a% r[Service]
# j' [; y  C: ^# `) nUser=redis
' F5 h% q6 V. J! }" A6 pGroup=redis
8 {9 R2 R( O5 C" l0 |2 V' ?9 }! oExecStart=/usr/bin/redis-server /etc/redis/redis.conf
6 }/ N5 t4 r/ E! Z1 R1 V; V. ]ExecStop=/bin/kill -s TERM $MAINPID
( X8 Y+ U" Y2 [  J/ `9 E/ [2 lRestart=on-failure. k8 c1 j( l& ^$ U( a
Type=notify
- e: s" H6 _9 [) x- NPIDFile=/var/run/redis/redis_6379.pid  % z3 p2 F5 u# Y" p. P  N  I
#PermissionsStartOnly=true+ y4 Y! g- ?+ Y! w
Restart=always3 `' \- s5 }5 ]7 S" N7 Z* b
LimitNOFILE=65535  
8 ~7 h& j/ J3 s! a6 J: [- }, }LimitCORE=infinity
7 \4 `* R, Q- z4 D  O, [TimeoutStopSec=0   5 |& r( K- Q1 z8 j
PrivateTmp=true    5 p4 ]8 F3 Z( q# A: ]0 J
PrivateDevices=yes
" n' |" b* ^% a; ]' XProtectHome=true   
& T0 w# \3 Z2 m- C+ l- @ProtectSystem=full
) \& M. q: x1 E: EProtectControlGroups=true ; {  m. E, r* w! K6 ]: W4 B
ProtectKernelTunables=yes  
1 f" i0 `7 H6 l! Y/ K6 aProtectKernelModules=yes   0 I9 ?2 ?! v3 v1 d! |2 [
NoNewPrivileges=yes       ) r! R3 ^* v' l% l; ?1 b. `
ReadWritePaths=-/var/lib/redis -/var/log/redis
( X5 i0 s7 k% P/ I" rReadOnlyPaths=-/etc/redis* L9 C: A+ v2 Z

! m. P8 B$ j8 B+ e9 Y7 _
* u9 K2 B- k# g8 a+ {) \7 ~5 h
7 L6 e# J/ x( V0 G0 @: H- T3 c+ r, i! T! e

, `# ~: H7 N" R9 P9 n" o4 O# ^" @# C. K

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2026-4-20 19:36:20 | 显示全部楼层
[root@asset log]# touch /var/log/redis.log
+ u# {6 w( ]: w2 x/ H2 X- j- O% i[root@asset log]# chown redis:redis  /var/log/redis.log( j+ B- l  k6 s2 p

% S0 q( G% [2 G  j" }/ m7 M! A; e  {' N- X/ q# h8 Z( U; l. ^
[root@asset log]# touch /var/run/redis_6379.pid
2 c6 P9 U$ t% m! {4 d+ K[root@asset log]# chown redis:redis /var/run/redis_6379.pid
4 @( ?( b' h5 B" a; A/ L: W  G1 B9 ~- V' I

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2026-4-20 19:52:01 | 显示全部楼层
[root@asset log]# mkdir -p /var/lib/redis
4 |$ g, [) x* w1 R2 F( J1 t8 v0 w( _, t[root@asset log]# chown redis:redis /var/lib/redis$ z+ H) q1 c+ z+ L2 D

1 X# E' A" ]' ^; y4 Q[root@asset log]# mkdir -p /var/run/redis/
" d- b- K# F& B/ D[root@asset log]# chown -R redis:redis /var/run/redis/# M0 c3 W+ B! @$ @
9 P8 r- ?, J: O3 E
% ]! b5 N3 D% x
修改redis.conf文件:
. C2 p  H4 f, m0 b2 D% obind 0.0.0.0
9 U# n  b1 p. hdir /var/lib/redis
3 v) P" t, L  S% d1 G. E( u7 |supervised systemd* L6 w/ Y5 \/ |2 l+ j; v7 a8 a  w
logfile "/var/log/redis.log"
( W8 e7 X, J, dpidfile /var/run/redis/redis_6379.pid4 p( j/ p4 h7 T$ T8 c
requirepass password
, Z) }3 U- ~% k. K% w- v( ~" x) A
" m$ {: d% H: N0 z2 i) i  @/ u
! A$ q/ C) ^4 z8 v- m7 G4 C% U' `- d8 R/ p# m) @$ n

9 P- F8 x, L* t8 C# r/ m
2 N. J: f- q5 e% [& m! e6 I- A) y5 o! ^5 Y. D
. |5 L0 S5 E. g
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-12 00:40 , Processed in 0.017271 second(s), 21 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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