【Redis篇】linux 7.6安装单机Redis7.0(参数优化详解)
💫《博主主页》:
🔎 CSDN主页
🔎 IF Club社区主页
🔥《擅长领域》:擅长阿里云AnalyticDB for MySQL(分布式数据仓库)、Oracle、MySQL、Linux、prometheus监控;并对SQLserver、NoSQL(MongoDB)有了解
💖如果觉得文章对你有所帮助,欢迎点赞收藏加关注💖
这篇文章主要是分享一下安装单机Redis7.0,其实网上有很多关于Redis的安装教程,也都写的非常详细和优秀。博主很少写安装部署的文章,写这篇文章的原因是因为博主其他的文章中使用到了Redis,所以博主就按照自己的安装习惯分享一下Redis的单机安装,希望这篇文章能为需要安装 Redis 的朋友提供一些帮助,毕竟每个人的安装过程和习惯都有些不同,整理一下自己用过的安装方式也许能对你有所启发。
Redis官网:
Redis - The Real-time Data Platform
目录
一、官网下载步骤:
二、系统层面配置
三、安装所需的依赖包
四、解压Redis安装包并进行make和make install安装
五、拷贝redis.conf配置文件到默认的安装路径下并配置参数(make install安装Redis时,默认不会生成Redis的配置文件redis.conf)
六、root用户添加bin路径的环境变量
七、启动Redis数据库
八、连接Redis进行测试
上车须知:
主机名 | IP地址 | 配置 | 系统 | 描述 |
redis7 | 110.120.100.30 | 4C 16G | Red Hat Linux 7.6 | redis7版本 |
一、官网下载步骤:
官网:Redis - The Real-time Data Platform
历史版本下载地址:Index of /releases/
目前在“官网”还没有找到下载的入口,先通过“历史版本下载地址”进行下载
注意:通过“历史版本下载地址”下载的Redis都只能在linux上安装部署,不适用其他系统(如windows)
二、系统层面配置
添加hosts解析:
[root@redis7 ~]# vi /etc/hosts 110.120.100.30 redis7
禁用SELINUX(SELinux 主要作用就是最大限度地减小系统中服务进程可访问的资源)
[root@redis7 ~]# echo "SELINUX=disabled" > /etc/selinux/config [root@redis7 ~]# echo "#SELINUXTYPE=targeted " >> /etc/selinux/config [root@redis7 ~]# setenforce 0 [root@redis7 ~]# more /etc/selinux/config
关闭防火墙(数据库都是在内网,如果开启防火墙每次连接都要判断):
[root@redis7 ~]# systemctl stop firewalld.service [root@redis7 ~]# systemctl disable firewalld.service [root@redis7 ~]# systemctl status firewalld.service
配置ntp时间同步服务器
[root@redis7 ~]# vi /etc/crontab 0 0 * * * root /usr/sbin/ntpdate 10.2.1.240;/sbin/hwclock -w ###编辑自动计划任务,将系统时间同步到指定的NTP 服务器(10.2.1.240),并将同步后的时间写入硬件时钟。
修改系统默认对资源或者行为限制参数:
[root@redis7 ~]# vi /etc/security/limits.conf* soft nproc 16384 * hard nproc 16384 * soft nofile 65536 * hard nofile 65536 * soft stack 32768 * hard stack 32768
控制给用户分配的资源
[root@redis7 ~]# vi /etc/pam.d/loginsession required pam_limits.so
修改共享内核参数
[root@redis7 ~]# vi /etc/sysctl.conf #MongoDB SETTING fs.aio-max-nr = 1048576 fs.file-max = 6815744 kernel.sem = 250 32000 100 128 net.ipv4.ip_local_port_range = 9000 65500 net.core.rmem_default = 262144 net.core.rmem_max = 4194304 net.core.wmem_default = 262144 net.core.wmem_max = 1048586 kernel.panic_on_oops = 1
三、安装所需的依赖包
# 安装gcc。Redis是基于c语言编写的
[root@redis7 ~]# yum install gcc-c++
# 检查gcc
[root@redis7 ~]# gcc -v
四、解压Redis安装包并进行make和make install安装
[root@redis7 ~]# tar -zxvf redis-7.0.9.tar.gz
#进入 Redis 源代码目录
[root@redis7 ~]# cd redis-7.0.9
#执行 make 命令:make 是用于编译源代码的命令,它会根据 Makefile 文件中的指示,将 Redis 的源代码编译成可执行的程序文件
[root@redis7 ~]# make
输出了安装流程,并提示Leaving directory(离开目录)才算安装成功
#执行make install 命令:make install 用于将编译后的文件安装到系统的标准位置,通常是一些系统目录,如 /usr/local/bin/ 或 /usr/bin/(linux系统上,Redis默认安装路径 /usr/local/bin/)
[root@redis7 ~]# mkdir -p /liu_data/redis7.0 [root@redis7 ~]# make PREFIX=/liu_data/redis7.0 install ###如果不加的话直接执行make install的话,默认安装二进制命令就会生成到/usr/local/bin下
安装到系统的标准位置后,默认Redis是不会自动生成服务启动项的,需要手动配置systemctl服务启动项
#进入到Redis的默认安装路径,查看可执行的命令
[root@redis7 ~]# cd /liu_data/redis7.0/bin [root@redis7 ~]# ll
小提示:
1)make 是将源代码编译成二进制文件,生成 Redis 执行文件。
2)make install 是将这些执行文件复制到标准目录,使得 Redis 可以在系统中全局使用。
五、拷贝redis.conf配置文件到默认的安装路径下并配置参数(make install安装Redis时,默认不会生成Redis的配置文件redis.conf)
# 先创建配置文件文件夹(方便后续管理,之后会用这个文件启动redis)
[root@redis7 ~]# cd /liu_data/redis7.0/bin [root@redis7 ~]# mkdir redisconfig
#创建Redis日志文件文件夹
[root@redis7 ~]# cd /liu_data/redis7.0/bin [root@redis7 ~]# mkdir redislog
# 复制配置文件
[root@redis7 ~]# cp /software/redis-7.0.9/redis.conf /liu_data/redis7.0/bin/redisconfig/
#编辑配置文件
[root@redis7 ~]# vi /liu_data/redis7.0/bin/redisconfig/redis.conf ###修改如下参数配置
- 配置文件中的参数和单位对大小写不敏感
- 配置文件中可以再包含配置文件:比如# include /path/to/local.conf
###basic###
bind 0.0.0.0 ###bind:这个配置项指定 Redis 服务器绑定的 IP 地址,默认情况下,它是 127.0.0.1,即只允许从本地访问 Redis。如果希望 Redis 能从远程访问(注意安全性问题),需要修改这个配置为外部 IP 或 0.0.0.0(表示监听所有网络接口)。
protected-mode yes ###protected-mode:默认开启保护模式(yes),这意味着如果 Redis 绑定到所有 IP 地址(0.0.0.0)时,未设置密码会阻止外部访问,以防止 Redis 被公开暴露。
requirepass 密码 ###requirepass:这个选项允许为 Redis 设置密码。默认情况下,Redis 没有密码保护,任何人都可以访问。强烈建议在生产环境中启用密码,尤其是当允许远程连接时。在Redis 3.x/4.x/5.x中,没有内置的用户权限管理功能,也就是没有数据库用户这个概念。在 Redis 6.x 或更高版本中支持了用户权限管理功能,才能为数据库创建用户。
port 6379 ###port:默认情况下,Redis 监听端口是 6379。如果不想使用端口,可以将其设置为 0,Redis 将不会启动网络服务(即只作为本地进程使用)。
maxmemory 2GB ###maxmemory:设置 Redis 使用的最大内存量。如果 Redis 的内存使用超过这个限制,它将按照指定的maxmemory-policy淘汰策略进行处理(例如,删除最旧的数据)。
maxmemory-policy allkeys-lru ###用于确定当达到 maxmemory 设置的最大内存限制时,应该使用哪种淘汰策略,默认是 noeviction(不淘汰数据)。Redis 提供了6种不同的淘汰策略:
- noeviction:该策略意味着当内存限制达到时,不会再存储新的值,也不淘汰数据。这在使用复制时可能适用。
- allkeys-lru:该策略会从数据库中驱逐最少最近使用(LRU)的键,以便为新数据腾出空间。
- allkeys-lfu:该策略会在内存限制达到时,删除数据库中最少频繁使用(LFU)的键。
- allkeys-random:该策略在内存限制达到时,随机删除数据库中的键。
- volatile-lru:该策略会删除那些设置了过期时间(即“易失”键)的最少最近使用的键,以便为新数据腾出空间。
- volatile-lfu:该策略会删除那些设置了过期时间(即“易失”键)的最少频繁使用的键。
选择合适的淘汰策略非常重要,应该根据应用程序的数据访问模式和需求来决定。
daemonize yes ###daemonize:控制 Redis 是否以守护进程(daemon)模式运行。默认为no,Redis不会以守护进程模式运行,它将在前台运行(也就是只能在前台运行,执行启动redis命令时会一直处于运行状态,命令行不返回,除非Ctrl+C终止),并且日志会直接输出到控制台。设置为yes时,Redis 会在后台运行,不会占用终端,日志会写入到配置文件中指定的日志文件(通过logfile参数设置)。
logfile /liu_data/redis7.0/bin/redislog/redis-server.log ###logfile:日志文件的存储路径。如果不希望日志输出到文件,可以设置为空字符串(""),此时日志将仅输出到标准输出(通常是控制台)。
loglevel notice ###loglevel:此项决定 Redis 的日志级别,默认是 notice。你可以根据需要调整日志级别,常见的有:
- debug:输出详细的调试信息。
- verbose:输出较为详细的日志信息。
- notice:默认级别,适合生产环境。
- warning:只输出警告及错误信息。
###Default Database###
#databases 16 ###Redis 默认有 16 个数据库,编号从 0 到 15。 需要注意在 Redis 中,不能手动创建数据库。Redis 的数据库数量是在启动时通过配置文件 (
redis.conf
) 中的databases
参数预先定义的,默认是 16 个(编号从 0 到 15)。这些数据库在 Redis 启动时就已经初始化好了,无法在运行时动态创建新的数据库。不过可以通过配置文件redis.conf
中的databases
参数调整数量。
###持久化(RDB)###
#save ###
save
参数用于配置RDB持久化,决定何时将内存中的数据快照保存到磁盘。可以在配置文件中设置多个save
指令。格式如下:save <seconds> <changes>
- <seconds>:时间间隔(秒)。
- <changes>:键的修改次数。
当在指定时间内键的修改次数达到设定值,Redis会自动触发快照保存。
示例:save 900 1 ###900秒内有至少1个键被修改时,保存快照。
save 300 10 ###300秒内有至少10个键被修改时,保存快照。
save 60 10000 ###60秒内有至少10000个键被修改时,保存快照。
如果没有在 Redis 配置文件中开启
save
配置项(例如save 3600 1 300 100 60 10000
),Redis 将不会自动触发 RDB 持久化。1. RDB 持久化行为
- 默认行为:如果没有配置任何 save 规则,Redis 不会自动生成 RDB 快照。
- 手动触发:仍然可以通过以下方式手动触发 RDB 持久化:
执行 SAVE 命令:阻塞主进程,直到 RDB 文件生成完成。
执行 BGSAVE 命令:在后台异步生成 RDB 文件,不会阻塞主进程。
- 关闭时触发:如果 Redis 正常关闭(例如通过 SHUTDOWN 命令),Redis 仍然会生成一个 RDB 文件(除非配置了 SHUTDOWN NOSAVE)。
2. AOF 持久化行为
- AOF 不受影响:如果没有配置 save 规则,AOF 持久化(如果已启用)仍然会正常工作。AOF 会记录所有写操作,并在重启时重放这些操作来恢复数据。
- AOF 重写:即使没有 RDB 持久化,AOF 重写(BGREWRITEAOF)仍然会生成一个包含当前数据集的最小 AOF 文件。
3. 数据丢失风险
- 无持久化:如果既没有配置 save 规则,也没有启用 AOF,Redis 将完全依赖内存存储数据。一旦服务器进程退出(如崩溃或重启),所有数据都会丢失。
- 缓存场景:这种配置通常用于纯缓存场景,数据丢失是可以接受的。
4. 如何检查当前配置
- 可以通过以下命令检查 Redis 的持久化配置: CONFIG GET save 。如果返回空值或未设置 save 规则,说明 RDB 自动持久化未启用。
5. 总结:如果没有配置 save 规则
- Redis 不会自动触发 RDB 持久化。
- 数据恢复依赖于手动触发的 RDB 快照或 AOF 文件(如果启用)。
- 如果未启用任何持久化机制,数据将完全存储在内存中,服务器重启或崩溃会导致数据丢失。
理解一下时间间隔(秒)的概念:
dir "/liu_data/redis7.0/bin" ###
dir
参数用于指定工作目录,即Redis服务器运行时生成的持久化文件(影响着持久化RDB和AOF文件的存放目录,RDB 配置的路径是在哪里,AOF 配置的路径也就是在哪里)和日志文件的存储路径。默认情况下,Redis会将文件保存在当前工作目录下,可以通过配置dir
参数来指定一个自定义目录。dir "./"
表示将Redis的工作目录设置为当前目录(即Redis服务器启动时所在的目录)使用systemctl启动的话,定义
dir "./"
,那么默认的工作目录就成了根目录/,也就是说文件会存储到跟目录/下。
如果通过手动启动redis-server服务器,定义
dir "./"
,那么目录会是/liu_data/redis7.0/bin/路径下的redisconfig目录
dbfilename dump.rdb ###指定RDB文件的名称(默认
dump.rdb
),文件会保存在dir
目录下,同样影响着AOF。stop-writes-on-bgsave-error yes ###用于控制当 Redis 的持久化操作(RDB 快照)失败时,是否停止接受写请求,默认为yes。此参数仅影响 RDB 持久化,如果同时启用了 AOF(Append-Only File)持久化,AOF 的写入不受此参数影响。
- 值为yes(默认值):如果后台保存(BGSAVE)RDB 快照时发生错误,Redis 会停止接受写请求。这是一种保护机制,避免数据在内存中修改但无法持久化到磁盘的情况。这是一种“宁可拒绝写入,也不丢失数据”的策略。
- 值为no:即使后台保存 RDB 快照失败,Redis 仍然会继续接受写请求。这种配置可能会导致数据丢失,因为 Redis 无法将数据持久化到磁盘。
rdbcompression yes ###用于控制 RDB 持久化文件是否启用压缩的参数,默认为yes。此参数仅影响 RDB 持久化文件,如果同时启用了 AOF(Append-Only File)持久化,AOF 文件的写入不受此参数影响。
- 值为yes(默认值):在生成 RDB 快照文件时,Redis 会对文件进行压缩。压缩可以减少 RDB 文件的大小,节省磁盘空间,尤其是在存储大量数据时。Redis 使用 LZF 压缩算法对 RDB 文件进行压缩。LZF 是一种轻量级的压缩算法,压缩速度较快,但压缩率相对较低。
- 值为no:在生成 RDB 快照文件时,Redis 不会对文件进行压缩。这样可以减少 CPU 的开销,但 RDB 文件会更大。
rdbchecksum yes ###用于控制 RDB 持久化文件是否启用校验和的参数,默认为yes。此参数仅影响 RDB 持久化文件,如果同时启用了 AOF(Append-Only File)持久化,AOF 文件的写入不受此参数影响。
- 值为yes(默认值):在生成 RDB 文件时,Redis 会在文件末尾添加一个 CRC64 校验和。在加载 RDB 文件时,Redis 会验证校验和,以确保文件的完整性和正确性。校验和机制可以防止因磁盘故障、网络传输错误或其他原因导致的 RDB 文件损坏。这是一种数据保护机制,确保 Redis 加载的数据是完整和正确的。Redis 使用 CRC64 算法计算 RDB 文件的校验和。CRC64 是一种高效的校验算法,能够快速检测数据错误。如果 RDB 文件损坏且校验和验证失败,Redis 会拒绝加载该文件,并输出错误日志,此时需要手动修复或恢复 RDB 文件。
- 值为no:在生成 RDB 文件时,Redis 不会添加校验和。在加载 RDB 文件时,Redis 也不会验证校验和。
###持久化(AOF)###
appendonly no ###默认是不开启AOF模式的,默认使用RDB这种持久化方式,在大多数情况了RDB完全够用。需要注意当 Redis 同时开启 AOF(Append Only File) 和 RDB(Redis Database) 时,Redis 在数据恢复时会优先使用 AOF 文件,因为 AOF 文件记录了所有写操作,数据更完整和精确。只有在 AOF 文件不可用(如文件损坏或不存在)时,Redis 才会使用 RDB 文件进行恢复。
appendfilename "appendonly.aof" ###指定AOF文件的名称(默认
appendonly.aof
),文件也会保存在dir
目录下,同样影响着RDB。需要注意:在 Redis 7.0 中,如果启用了 AOF 持久化但没有生成
appendonly.aof
文件,而是生成了一个appendonlydir
目录,这通常是因为 Redis 7.0 引入了 Multi-Part AOF(MP-AOF) 机制,默认会使用 MP-AOF 机制。AOF 文件会被分成多个部分存储,而不是传统的单个文件。MP-AOF 是 Redis 7.0 的一项新特性,用于改进 AOF 文件的管理和性能。Multi-Part AOF(MP-AOF)机制:
在 Redis 7.0 中,AOF 文件被分为多个部分存储,而不是传统的单个
appendonly.aof
文件。这些部分文件会被存储在一个专门的目录中,默认目录名为appendonlydir
。MP-AOF 的主要优势包括:
- 更高效的重写:AOF 重写时不会阻塞主线程。
- 更好的文件管理:AOF 文件被分为多个部分,便于管理和维护。
- 更高的可靠性:通过校验和机制确保文件的完整性。
appendonlydir
目录的内容:
- appendonly.aof.1.base.rdb:基础 AOF 文件(RDB 格式)。
- appendonly.aof.1.incr.aof:增量 AOF 文件(记录增量操作)。
- appendonly.aof.manifest:清单文件,用于管理 AOF 文件的元数据。
Redis 7.0 的 Multi-Part AOF(MP-AOF) 机制是强制启用的,无法完全禁用。在 Redis 7.0 中,MP-AOF 是默认且推荐的方式,传统的单文件模式(
appendonly.aof
)已经被弃用(deepseek说在Redis7.0关闭相关参数就可以禁用,但实际还是没有生成appendonly.aof
文件,还是生成了一个appendonlydir
目录。所以需要降到Redis7.0之前的版本再测试测试)appendfsync everysec ###用于控制AOF(Append-Only File)持久化模式下,数据写入磁盘的频率和方式。AOF持久化通过记录所有写操作命令来保证数据的持久性,而
appendfsync
参数决定了这些写操作何时同步到磁盘。appendfsync
有以下三种可选值:
作用
性能影响
数据丢失风险
操作系统缓存
与RDB持久化的关系
总结
always
每次写操作都会同步到磁盘。
数据安全性最高,但性能最差,因为每次写操作都会触发磁盘I/O。
适用于对数据安全性要求极高的场景。
会显著降低性能,因为每次写操作都会触发磁盘I/O。
几乎不会丢失数据。
即使设置为
always
,数据也可能先写入操作系统的缓存,再同步到磁盘。因此,完全避免数据丢失还需要确保操作系统的稳定性。AOF和RDB可以同时启用,
appendfsync
仅影响AOF的行为。最高数据安全性,性能较差。
everysec
(默认值)每秒同步一次数据到磁盘。
在性能和数据安全性之间取得平衡。
最多可能丢失1秒的数据。
是一个较好的折中方案,适合大多数场景。
最多丢失1秒的数据。
平衡数据安全性和性能。
no
不主动同步数据到磁盘,由操作系统决定何时同步。
性能最好,但数据安全性最低,可能丢失较多数据。
性能最好,但数据丢失风险最高。
可能丢失较多数据,取决于操作系统的同步策略。
最高性能,数据安全性最低。
no-appendfsync-on-rewrite no ###用于控制在 AOF 重写期间是否允许进行
fsync
操作。Redis 的 AOF 持久化机制会记录所有写操作到 AOF 文件中,以确保数据的安全性。为了确保数据真正写入磁盘,Redis 会定期调用 fsync 将缓冲区中的数据刷到磁盘。在 AOF 重写期间,Redis 会生成一个新的 AOF 文件,同时仍然需要处理客户端的写请求。这些写请求会被记录到旧的 AOF 文件和新的 AOF 文件中。
- 值为
no
(默认值):在 AOF 重写期间,Redis 会继续对旧的 AOF 文件进行fsync
操作。这样可以确保即使在进行 AOF 重写时,数据也能及时持久化到磁盘,保证数据的安全性。但可能会对性能产生一定影响,因为fsync
是一个阻塞操作。适用于对数据安全性要求较高的场景,确保即使在 AOF 重写期间,数据也能及时持久化。- 值为
yes
:在 AOF 重写期间,Redis 会禁止对旧的 AOF 文件进行fsync
操作。这样可以提高性能,因为在 AOF 重写期间不需要等待fsync
完成。但可能会增加数据丢失的风险,因为在 AOF 重写期间,如果 Redis 崩溃,未同步到磁盘的数据可能会丢失。适用于对性能要求较高,且可以容忍少量数据丢失的场景。auto-aof-rewrite-percentage 100 ###表示当前 AOF 文件大小相对于上一次重写后 AOF 文件大小的增长百分比。当 AOF 文件的增长达到这个百分比时,Redis 会触发 AOF 重写。如果设置为 100,意味着当 AOF 文件的大小比上一次重写后的 AOF 文件大小增长了 100%(即翻倍)时,Redis 会自动触发 AOF 重写。
auto-aof-rewrite-min-size 64mb ###表示 AOF 文件重写的最小文件大小。即使 AOF 文件的增长达到了
auto-aof-rewrite-percentage
指定的百分比,但如果 AOF 文件的当前大小小于这个值,Redis 也不会触发 AOF 重写。如果设置为 64MB,意味着即使 AOF 文件的增长达到了 100%,但如果 AOF 文件的当前大小小于 64MB,Redis 也不会触发 AOF 重写。
###client###
#maxclients 10000 ###maxclients:限制最大并发客户端连接数,也就是能连接上Redis的最大客户端数量,默认情况下是 10000。
timeout 300 ###用于设置客户端连接的空闲超时时间。如果一个客户端在指定的时间内没有进行任何操作(即没有发送任何命令),Redis会自动关闭该连接。这个参数的主要作用是释放闲置的连接资源,避免连接数过多导致资源浪费。默认值为
0
,表示禁用超时功能(即不会自动关闭空闲连接)。timeout
参数的设置应根据具体场景决定:
- 长连接场景(如 Pub/Sub):建议设置为
0
(禁用超时)。- 普通客户端连接:建议设置为
300
(5分钟)。- 高并发或资源敏感场景:可以设置为
60
(1分钟)或更小。在生产环境中,通常推荐设置为
300
,以在性能和资源占用之间取得平衡。如果需要更严格的控制,可以根据实际情况调整。client-output-buffer-limit normal 0 0 0 ###client-output-buffer-limit:限制客户端输出缓冲区大小,用于防止大量连接占用过多内存,尤其是在大量客户端使用 PUBLISH/SUBSCRIBE 或其他长连接时。
###other###
#always-show-logo yes ###always-show-logo:是否在启动Redis时显示 ASCII 艺术风格的 Redis 标志(logo),默认为no。其实就是在日志文件中(logfile参数)输出ASCII 艺术风格的 Redis 标志(logo),没多大用处,所以设置为yes或者no都可以。
六、root用户添加bin路径的环境变量
[root@redis7 ~]# vi ~/.bash_profileexport PATH=/liu_data/redis7.0/bin:$PATH[root@redis7 ~]# source ~/.bash_profile [root@redis7 ~]# which redis-cli
七、启动Redis数据库
将Redis启动写入到linux的启动服务项
[root@redis7 ~]# cd /usr/lib/systemd/system [root@redis7 ~]# vi redis.service[Unit] Description=Redis In-Memory Data Store After=network.target[Service] Type=forking ExecStart=/liu_data/redis7.0/bin/redis-server /liu_data/redis7.0/bin/redisconfig/redis.conf User=root Group=root Restart=always[Install] WantedBy=multi-user.target[root@redis7 ~]# systemctl daemon-reload [root@redis7 ~]# systemctl start redis.service [root@redis7 ~]# systemctl enable redis.service [root@redis7 ~]# systemctl status redis.service
systemctl status redis.service查询服务的PID,并且通过ps -ef | grep redis查看Redis数据库的PID是否一致
八、连接Redis进行测试
[root@redis7 ~]# redis-cli -p 6379 -a 123456 ###通过redis-cli命令连接到Redis,默认端口6379 127.0.0.1:6379> auth 123456 ###如果设置了密码认证,则通过redis-cli命令连接到Redis后,还需要使用 AUTH 命令输入密码进行认证,返回“OK”就可以正常使用Redis命令了。如果密码忘记了可以在配置文件中寻找:more /liu_data/redis7.0/bin/redisconfig/redis.conf | grep requirepass
🎉 Redis 7.0 单机部署安装完成!✨
相关文章:

【Redis篇】linux 7.6安装单机Redis7.0(参数优化详解)
💫《博主主页》: 🔎 CSDN主页 🔎 IF Club社区主页 🔥《擅长领域》:擅长阿里云AnalyticDB for MySQL(分布式数据仓库)、Oracle、MySQL、Linux、prometheus监控;并对SQLserver、NoSQL(MongoDB)有了…...

信号的概念及产生
信号的概念 信号(signal)是一种软件中断机制,用于通知进程发生了特定的事件。信号可以由系统、其他进程或进程自身发送。 在现实生活中,也有许多的信号,比如说:红绿灯、闹钟、上课铃、父母喊你回家吃饭等等…...

巧用python之--模仿PLC(PLC模拟器)
工作中用到了VM(VisionMaster4.3)有时候需要和PLC打交道,但是PLC毕竟是别人的,不方便修改别人的程序,这时候需要一个灵活的PLC模拟器是多么好呀! 先说背景: PLC型号 汇川Easy521: Modbus TCP 192.168.1.10:502 在汇川Easy521中Modbus保持寄存器D寄存器 ,在modbus协议中 0-4区…...

【计算机网络】用户从输入网址到网页显示,期间发生了什么?
1.URL解析 浏览器分解URL:https://www.example.com/page 协议:https域名:www.example.com路径:/page 2.DNS查询: 浏览器向DNS服务器发送查询请求,将域名解析为对应的IP地址。 3.CDN检查(如果有)&#…...
【计算机哲学故事1-3】默认设置:在有限的系统里,决定你想成为什么
她盯着屏幕上熟悉的蓝色窗户,语气里透着一丝无奈:“我发现,不管买多少次新电脑,开机那一刻,看到的永远是同一张桌面。” 我坐在她旁边,看着那台刚装好的电脑,笑了笑:“所以你在感慨…...
【嵌入式开发-UART】
嵌入式开发-UART ■ UART简介 ■ UART简介...

C++ 算法学习之旅:从入门到精通的秘籍
在编程的浩瀚宇宙中,C 算法宛如璀璨的星辰,照亮我们前行的道路。作为一名 C 算法小白,或许你和我一样,怀揣着对算法的好奇与憧憬,却又在学习的道路上感到迷茫。别担心,今天我就和大家分享一下如何学习各种基…...

计算机网络常识:缓存、长短连接 网络初探、URL、客户端与服务端、域名操作 tcp 三次握手 四次挥手
缓存: 缓存是对cpu,内存的一个节约:节约的是网络带宽资源 节约服务器的性能 资源的每次下载和请求都会造成服务器的一个压力 减少网络对资源拉取的延迟 这个就是浏览器缓存的一个好处 表示这个html页面的返回是不要缓存的 忽略缓存 需要每次…...

软件逆向工程核心技术:脱壳原理与实战分析
目录 一、脱壳技术概述:从保护到还原的逆向之旅 1.1 脱壳技术的本质与核心价值 1.2 壳的分类与核心技术解析 1.3 学习路径:从压缩壳到加密壳的渐进式突破 二、脱壳三步法:系统化逆向工程框架 2.1 核心流程总览 2.2 实战案例࿱…...
前端面经 作用域和作用域链
含义:JS中变量生效的区域 分类:全局作用域 或者 局部作用域 局部作用域:函数作用域 和 块级作用域ES6 全局作用域:在代码中任何地方都生效 函数中定义函数中生效,函数结束失效 块级作用域 使用let或const 声明 作用域链:JS查…...

华为OD机试真题——荒岛求生(2025A卷:200分)Java/python/JavaScript/C/C++/GO最佳实现
2025 A卷 200分 题型 本专栏内全部题目均提供Java、python、JavaScript、C、C、GO六种语言的最佳实现方式; 并且每种语言均涵盖详细的问题分析、解题思路、代码实现、代码详解、3个测试用例以及综合分析; 本文收录于专栏:《2025华为OD真题目录…...
【Python 字符串】
Python 中的字符串(str)是用于处理文本数据的基础类型,具有不可变性、丰富的内置方法和灵活的操作方式。以下是 Python 字符串的核心知识点: 一、基础特性 定义方式: s1 单引号字符串 s2 "双引号字符串" s…...
基础编程题目集 6-9 统计个位数字
本题要求实现一个函数,可统计任一整数中某个位数出现的次数。例如-21252中,2出现了3次,则该函数应该返回3。 函数接口定义: int Count_Digit ( const int N, const int D ); 其中N和D都是用户传入的参数。N的值不超过int的范围&…...
LeetCode[226] 翻转二叉树
思路: 使用递归,归根结底还是左右节点互相倒,那么肯定需要一个temp节点在中间传递,最后就是递归,没什么说的 代码: /*** Definition for a binary tree node.* public class TreeNode {* int …...

【CTFer成长之路】举足轻重的信息搜集
举足轻重的信息搜集 信息搜集 常见的搜集 题目描述: 一共3部分flag docker-compose.yml version: 3.2services:web:image: registry.cn-hangzhou.aliyuncs.com/n1book/web-information-backk:latestports:- 80:80启动方式 docker-compose up -d 题目Flag n1book{info_…...
AI——认知科学中的认知架构建立步骤与方法
认知科学中的认知架构建立步骤与方法 认知架构(Cognitive Architecture)是模拟人类心智活动的计算框架,旨在整合感知、记忆、推理、学习等核心认知功能。其建立需结合心理学理论、神经科学证据和计算建模技术。以下是建立认知架构的系统方法…...

Linux开发工具【中】
目录 一、vim 1.1 插入模式 1.2 底行模式 1)set nu 2)set nonu 3) /XXX n 4)!command 5)vs other 1.3 补充 1) 批量化操作 2)批量化替换 : 3)快速定位&am…...
Ceph PG unfound/lost 问题排查与解决
Ceph PG unfound/lost 问题排查与解决 背景现象排查过程经验总结参考命令结语 背景 Ceph 集群出现 HEALTH_ERR,提示有 PG 对象丢失(unfound),并且 repair 无法自动修复。 现象 ceph health detail 显示: HEALTH_ERR …...

MySQL OCP 认证限时免费活动 7 月 31 日 前截止!!!
为庆祝 MySQL 数据库发布 30 周年,Oracle 官方推出限时福利:2025 年 4 月 20 日至 7 月 31 日期间,所有人均可免费报考 MySQL OCP(Oracle Certified Professional)认证考试。该认证验证持证者在 MySQL 数据库管理、优化…...
Python Cookbook-7.8 使用 Berkeley DB 数据库
任务 你想将一些数据做持久化处理,而且也想体验一下BerkeleyDB数据库的简洁和高效。 解决方案 如果以前在你的计算机中安装过 BerkeleyDB,Python标准库附带的bsddb包(以及可选的 bsddb3,用于访间Berkeley DBrelease 3.2数据库)可以被用来作…...
STM32智能手表:基于FreeRTOS
引言 随着物联网和可穿戴设备的快速发展,智能手表作为典型代表,集成了传感器数据采集、实时显示、无线通信等多项功能。本文将深入剖析一个基于STM32和FreeRTOS的智能手表项目,从硬件架构到软件设计,逐步讲解如何构建一个完整的嵌…...

学习笔记:数据库——事务
1.内容: 基于现有数据库设计检查点实验,观察比较提交前后执行结果并分析。 2.实现 源码 -- 开启事务 START TRANSACTION;-- 插入一条订单记录(客户ID为10002) INSERT INTO orders (o_date, c_id) VALUES (NOW(), 10002);-- 获…...
C++命名空间、内联与捕获
命名空间namespace 最常见的命名空间是std,你一定非常熟悉,也就是: using namespace std;命名空间的基本格式 注意,要在头文件里面定义! namespace namespace_name{data_type function_name(data_type parameter){data_type result;//function contentreturn result;}…...

UE5 Daz头发转Blender曲线再导出ABC成为Groom
先安装Daz to Blender Import插件 【神器】 --DAZ一键导入blender插件的详细安装和使用,自带骨骼绑定和控制器,多姿势动画,Importer桥接插件_哔哩哔哩_bilibili 然后安装DAZHairConverter插件 一分钟将DAZ头发转化成Blender粒子毛发_哔哩哔…...
【进阶】C# 委托(Delegate)知识点总结归纳
1. 委托的基本概念 定义:委托是一种类型安全的函数指针,用于封装方法(静态方法或实例方法)。 核心作用:允许将方法作为参数传递,实现回调机制和事件处理。 类型安全:委托在编译时会检查方法签…...

【贪心算法】贪心算法四
贪心算法四 1.最长回文串2.增减字符串匹配3.分发饼干4.最优除法点赞👍👍收藏🌟🌟关注💖💖 你的支持是对我最大的鼓励,我们一起努力吧!😃😃 1.最长回文串 题目链接: 409. 最长回文串 题目分析: 给一个包含大小字母的字符串,从里面挑选出来一些字母构成一个…...
【漫话机器学习系列】240.真正类率(True Positive Rate,TPR)
理解真正类率(True Positive Rate,TPR):公式、意义与应用 在机器学习与深度学习模型评估中,"真正类率"(True Positive Rate,简称TPR)是一个非常重要的指标。TPR反映了分类…...

Linux的基础开发工具
目录 前言: 1、包管理器yum 1.1 软件包的依赖 1.2 镜像源 1.3 查找/安装/卸载软件 2、编辑器vim 2.1 命令模式(默认) 2.1.1 撤销与反撤销 2.1.2 光标定位 2.1.3 复制&&剪切(删除)&&粘贴 2.1.4 替换 2.1.5 插入模式 2.1.6 V-Block模式 …...

【Electron】electron-vue 借助 element-ui UI 库助力桌面应用开发
前面文章我们讲过 electron 让可以用 HTML、JS、CSS 开发桌面应用程序。而 electron-vue 是一个结合了 electron 与 vue 的套件。这样我们就能方便地使用 vue 快速开发桌面应用。但是,vue 只是在 js 这层面做了大量的便捷的操作。对 UI 并未过多涉及。此时如果您在开…...

Linux基础(最常用基本命令)
1.查看文件ls 1.1 格式 ls 选项 参数,如:ls -lah ~/ 1.2 选项设置: -l:list 以列表方式显示文件 -h:human-readable 以人类可读的方式显示文件大小(会将纯数字转换为kb,mb) -a:all 显示所有的…...