【Linux】Redis 部署

1、卸载

shell 复制代码
# 查看 Redis 是否还在运行
[appuser@localhost redis]$ ps -ef|grep redis
appuser  135694 125912  0 14:24 pts/1    00:00:00 ./bin/redis-server *:6379
appuser  135731 125912  0 14:24 pts/1    00:00:00 grep --color=auto redis

# 停止 Redis 
[appuser@localhost redis]$ redis-cli SHUTDOWN

# 删除 Redis 安装的相关文件
[root@localhost ~]# find / -name redis  
[root@localhost ~]# rm -rf /xxx/xxx/xxx

2、安装

shell 复制代码
# 依赖安装
[appuser@localhost ~]$yum -y install gcc gcc-c++ libstdc++-devel

# redis下载:https://redis.io/download
[appuser@localhost ~]$ tar -zxvf redis-6.2.3.tar.gz -C /app

# 编译
[appuser@localhost ~]$cd /app/redis-6.2.3
[appuser@localhost redis-6.2.3]$ make

# 编译可能报错:
zmalloc.h:50:31: error: jemalloc/jemalloc.h: No such file or directory
zmalloc.h:55:2: error: #error "Newer version of jemalloc required"
make[1]: *** [adlist.o] Error 1
make[1]: Leaving directory `/data0/src/redis-2.6.2/src'
make: *** [all] Error 2

# 报错原因:分配器 allocator会使用 jemalloc,而不是 libc,因为相比于libc,jemalloc 有更少的 fragmentation problems。但是如果目前环境没有jemalloc,只有 libc,所以 make 出错
# 解决方法:使用环境变量 MALLOC 来建立Redis
[appuser@localhost redis-6.2.3]$ make MALLOC=libc

# 安装
[appuser@localhost redis-6.2.3]$ make PREFIX=/app/redis install

Reids 的默认安装路径在/usr/local/bin,关键字 PREFIX 作用是编译的时候用于指定程序存放的路径。如果不添加该关键字,Linux会将可执行文件存放在/usr/local/bin目录,库文件会存放在/usr/local/lib目录。配置文件会存放在/usr/local/etc目录。其他的资源文件会存放在usr/local/share目录。这里指定好目录也方便后续的卸载,后续直接rm -rf /app/redis即可删除Redis

3、配置

4、启动Redis 服务器

Redis启动方式有两种:直接启动、通过初始化脚本启动,分别适用于开发环境和生产环境

  • 直接启动
shell 复制代码
# 拷贝一份配置文件
[appuser@localhost ~]$ cd /app/redis/bin
[appuser@localhost bin]$ ./redis-server ../redis.conf

配置文件redis.conf中设置daemonize=yes,则Redis将采取后台进程方式启动

  • 通过初始化脚本启动

在Linux中可以通过初始化脚本启动Redis,使得Reds能随系统自动运行,在生产环境中推荐使用该方式运行Redis。具体步骤如下:

① 配置初始化脚本:在redis-6.2.3/utils文件夹下有一个初始化脚本文件redis_init_script,将该脚本复制到ect/init.d目录中,文件重命名为redis_端口号,并将脚本中REDISPORT变量值改为同样的端口号。

② 创建文件夹:/etc/redis(存储redis的配置文件)、/var/redis/端口号(存放redis持久化文件)

③ 修改配置文件:将配置文件模板复制到/etc/redis目录中,重命名为端口号.conf,并修改一下参数:

shell 复制代码
# 使Redis以守护进程模式进行
daemonize=yes
# 设置Redis的PID文件位置
pidfile=/var/run/redis_端口号.pid
# 设置Redis监听的端口号
port=端口号
# 设置持久化文件存放位置
dir=/var/redis/端口号

现在就可以使用/etc/init.d/redis_端口号 start 来启动Redis了,而后需要执行下面的命令使Redis随系统自动启动:

shell 复制代码
[root@localhost ~]# sudo update_rc.d redis_端口号 default

5、停止 Redis

Redis 有可能正在将内存中的数据同步到硬盘中,强行终止Redis进程可能会丢失数据,正确方式是向Redis发送 SHUTDOWN命令

shell 复制代码
[appuser@localhost bin]$ ./redis-cli SHUTDOWN

当 Redis收到 SHUTDOWN命令后会先断开所有客户端链接,然后根据配置执行持久化,最后退出。

Redis 可以妥善处理SIGTERM信号,所以使用kill Redis进程的PID 也可以正常结束 Redis,效果同 SHUTDOWN命令。

6、客户端

通过 redis-cli 向 Redis 发送命令有两种方式:

  • 将命令作为redis-cli的参数执行
shell 复制代码
[appuser@localhost bin]$ ./redis-cli -h 127.0.0.1 -p 6379 PING
  • 交互模式
shell 复制代码
# 不携带参数进入交互模式
[appuser@localhost bin]$ ./redis-cli
127.0.0.1:6379> auth 123456@rds
127.0.0.1:6379> PING
相关推荐
行思理37 分钟前
centos crontab 设置定时任务访问链接
linux·运维·centos
阳光明媚大男孩42 分钟前
24.0.2 双系统ubuntu 安装显卡驱动黑屏,系统启动界面键盘失灵
linux·ubuntu·计算机外设
再玩一会儿看代码1 小时前
[特殊字符] 深入理解 WSL2:在 Windows 上运行 Linux 的极致方案
linux·运维·windows·经验分享·笔记·学习方法
有谁看见我的剑了?2 小时前
centos7.9 升级 gcc
linux
良许Linux2 小时前
FreeRTOS大家都是怎么学的呀?
linux
良许Linux2 小时前
类似于STM32之类的MCU,使用RTOS真的比裸机编程有那么大优势?
linux
良许Linux2 小时前
为什么越来越多的人要转行做嵌入式呢?
linux
良许Linux2 小时前
单片机中有FLASH为啥还需要EEROM?
linux
良许Linux2 小时前
嵌入式rtos中哪一个更加值得去学习?
linux
良许Linux2 小时前
为什么招聘单片机工程师的时候要求精通C/C++?
linux