当前位置: 主页 > 建站知识 > 软件开发

星空体育入口:美味的饭菜不怕吃晚,逐一检查Redis配置文件确保一切井井有条是一种愉悦;忙碌是一种幸福,让我们无暇体会痛苦;奔波是一种快乐,让我们真切地感受生活;疲劳是一种享受,让我们无空虚之感。

发布时间:2024-06-22 14:43   浏览次数:次   作者:zoc7RcITctunhMtq7EzA
最近我的工作和生活可以用几句话简单概括。有很多小伙伴给我发私信催我更新,今天终于来啦!为了向阿Q表达歉意,特意赠送一本《亿级流量Java高并发与网络编程实战》,详细规定请参考文末。在之前的文章中,我们已经介绍了Redis的概念和基本命令。今天我们将探讨它的配置文件,在开发和实际应用中,Redis的配置文件扮演着非常重要的角色。我们可以在安装目录中找到redis.conf的配置文件,使用vim命令来查看。为了防止配置文件的更改,使用前务必先备份一份!本文介绍的是Redis 5.0.7版本。单位方面,1k => 1000bytes, 1kb => 1024bytes, 1m => 1000000bytes, 1mb => 1024*1024bytes, 1g => 1000000000bytes, 1gb => 1024*1024*1024bytes。注意单位不区分大小写,只支持bytes。和structs2配置文件相似,包含可以通过includes实现。redis.Conf" 可以充当主开关,包括其他。redis.conf可以作为总开关,用于包含其他文件。

星空体育APP

include /path/to/local.conf  include /path/to/other.conf 

MODULES

loadmodule /path/to/my_module.so loadmodule /path/to/other_module.so 

在启动时,Redis可以通过loadmodule选项加载模块,如果服务端无法加载模块,服务端将停止运行。您可以使用多个loadmodule选项来加载多个模块。在默认情况下,如果没有指定“bind”配置指令,Redis将监听服务器上所有可用网络接口的连接。

可以使用"bind"命令进行配置,然后跟上一个或多个IP地址,从而仅监听一个或多个指定接口。比如说,当设置多个bind地址后,Redis内部会保持多个Socket同时存在,每个Socket用于一个网络接口。「保护模式是开启的」:这个选项默认是启用的。如果Redis服务器不使用bind选项来明确指定要监听的网络接口,并且没有设置密码,那么Redis服务器只会接受来自127.0.0.1和::1地址以及Unix域Socket的客户端连接。「端口 6379」:用于设定Redis监听的TCP端口,默认为6379,将其设为0表示不监听TCP端口 「超时时间 0」:指示空闲多少秒后关闭连接,"0"表示不关闭 「TCP保活 300」:以秒为单位,设为0则不进行保活检测,建议设定为60 「TCP积压 511」:设定TCP的积压,积压其实是一个连接队列。未完成三次握手队列总数加上已完成三次握手队列总数等于backlog队列总和。在高并发环境下,需要设置一个较高的backlog值,以避免慢客户端连接问题。「请注意」:Linux内核会自动将这个数值减小至/proc/sys/net/core/somaxconn的数值,因此需要确认将somaxconn和tcp_max_syn_backlog两个数值增大以获得所期望的效果。Redis采用单线程多进程模式,daemonize用于指定redis启动时是否使用守护进程模式。Redis默认情况下不会作为守护进程来运行。如果需要,请使用词语"是"。在进入redis的命令行界面时, 从该界面强制退出或关闭连接工具(如putty,xshell)都会导致redis进程退出。开启守护进程模式。在这种模式下, Redis 会以后台进程的方式运行,并将进程 的pid 号写入由 redis.conf 中的 pidfile 选项设置的文件中, 这意味着 Redis 将会持续运行,直到手动终止该进程。当你使用upstart或者systemd来运行Redis时,Redis可以与你的监控树进行交互。可供选择的选项包括:

无 - 默认无交互 upstart - 通过向Redis发送SIGSTOP信号通知upstart systemd - 通过向$NOTIFY_SOCKET写入READY=1通知systemd auto - 根据设置了UPSTART_JOB或者NOTIFY_SOCKET环境变量来决定选项为upstart或者systemd pidfile

pidfile /var/run/redis_6379.pid //进程pid文件 

日志级别提示了重要信息:从上到下减少

debug:包含大量信息,有用:用于开发/测试的详细内容,其中包含一些有用的信息,但不会像调试级别那样混乱。\n通知:略带冗长,可能在生产环境中需要的内容。\n警告:仅记录非常重要/关键的消息。\n日志文件的名称,如果为空,redis会输出到标准控制台。如果以守护进程方式运行,并设置logfile为stdout,则日志将发送到/dev/null。\n数据库:系统默认有16个数据库星空体育官网。默认情况下,0库
syslog
syslog启用 no:表示是否将日志输出到syslog中。系统日志默认情况下关闭

syslog标识 redis:指定syslog日志标识设备以redis开头

syslog设备 local0:指定syslog设备,值可以是USER或LOCAL0-LOCAL7,默认为local0
安全 (Security)
requirepass 12345!@# 
要设置redis连接密码。如果配置了连接密码,客户端在连接redis时需要使用Auth

命令提供密码,默认情况下未开启。@# 

设定了redis的连接密码。如若配置了连接密码,那么客户端在连接redis时就需使用Auth

命令来提供密码,默认情况下是关闭的。

一旦密码设置完成,如果执行ping命令会失败,并显示“需要进行身份验证”,只要加上auth + 密码就可以成功。

在任何指令之前,验证必须为auth +密码

Redis通常用作缓存,而不是作为安全解决方案,且系统可能会将Linux视为安全环境。maxclients 10000: 这个设置可以让Redis同时连接多达10000个客户端。客户端的默认数量为10000个。当你无法设置进程文件句柄的限制时,redis会将其设置为当前文件句柄限制值减去32。这是因为redis需要为自身内部处理逻辑保留一些句柄。当达到这个限制时,Redis会拒绝新的连接请求,并向请求方发送“已达到最大客户端数量”的消息作为回应。配置Redis可用的内存量。当Redis达到内存使用上限时,它会尝试移除内部数据。移除规则可以通过maxmemory-policy来指定。如果Redis根据移除规则无法清除内存中的数据,或者设置了"禁止清除",那么Redis将会针对需要申请内存的命令返回错误信息,例如SET、LPUSH等。然而,对于未分配内存的指令仍会正常处理,例如GET等。如果您的Redis是主Redis(表示您的Redis存在从Redis),那么在设置内存使用上限时,需要在系统中保留一些内存空间给同步队列缓存。只有在您设置为“不移除”的情况下,才不需要考虑这个因素。设置最大缓存为物理内存的「3/4」或更小比例最好,以及相应的回收策略算法,因为redis在复制数据和其他服务时也需要缓存。最大缓存大小为128MB。为了避免缓存数据过大导致redis崩溃,从而导致系统发生故障无法使用。为了维持整个系统的可用性,可以牺牲部分缓存数据。Redis的新的内存机制将key存储在内存中,而将value存放在交换区。当内存数据达到设定的最大内存限制时,该配置需与 "maxmemory-policy" 配合使用以触发清除策略。当系统内存不足时,“内存不足”情况下,任何写操作(如set,lpush等)都将导致“清除策略”执行。为了在实际环境中确保redis的所有物理机器的硬件配置保持一致(内存一致)并且master/replica中的“maxmemory policy”配置一致,建议进行如下配置。当内存满时,如果Redis接收到设置命令,它会首先尝试移除已设置过到期信息的键,而不管该键的过期时间是否到达。所有的键在删除时都会根据其过期时间来进行处理,即最早过期的键会被首先删除。当所有具有过期信息的键都被删除后,如果内存仍然不足,则会返回错误。因此,redis将只允许接收读取请求,而不再接收写入请求。使用

maxmemory参数来设置Redis的内存限制非常适合将其用作类似于memcached的缓存。最大缓存策略「maxmemory-policy」有以下几种选择:\n1. volatile-lru:使用LRU算法移除key,只对设置了过期时间的键。\n2. allkeys-lru:使用LRU算法移除所有key。\n3. volatile-lfu:对过期键使用LFU近似算法。\n4. allkeys-lfu:对所有键使用LFU近似算法。\n5. volatile-random:在过期集合中移除随机的key,只对设置了过期时间的键。\n6. allkeys-random:移除随机的key。volatile-ttl选项会移除TTL值最小的键,也就是那些最近要过期的键 。noeviction选项则会禁止移除操作。 对于写操作,应该只返回错误信息(默认)。在公司的观察维度下,选择这种算法并不合适。LRU算法、LFU算法或者TTL算法并不十分精确,只能作为近似算法。「策略规则使用:」如果数据呈现幂律分布,即一部分数据的访问频率高,一部分数据的访问频率低,则应采用allkeys-lru策略。如果数据的访问频率是均匀分布的,也就是所有数据的访问频率都相等的话,就可以使用全键随机策略。设置样本数量

是为了确保所提及的算法并不是精确算法,而是估算值,因此您可以设定样本的规模。默认情况下,maxmemory-samples的值为5,表示Redis会随机选择5个键,并从中选择一个最符合条件的键。LRU算法使用槽大小为5是比较适合的。已经非常接近真正的LRU算法了,只是它会消耗更多的CPU资源。3比较迅速但不如准确。在Redis 5中,副本节点默认情况下会忽略最大内存设置,除非在发生故障转移后,该节点被提升为主节点。

这表示只有主服务器才会执行过期删除策略,并且在删除键之后,主服务器会向副本发送DEL命令。

确保了主节点和副本节点的一致性,通常这是所需要的。但如果你的副本节点可写,并且你希望它有不同的内存配置,同时又要确保所有写操作都是幂等的,那么你可以改变这个默认行为(请确保你知道自己在做什么)。在默认情况下,“注意”复制节点不会执行过期策略,可能会使用超过maxmemory设定值的内存。所以你需要监视存储复制节点所在的设备,并确保当主节点达到配置的最大内存大小时,复制节点不超过物理内存大小。今天我们只讲到这里,主从复制和持久化的配置文件部分将在接下来的内容中进行讲解。本文是从微信公众号“阿Q说代码”转载而来,扫描下方二维码即可关注。请联系阿Q说代码公众号转载本文。




 

美味的饭菜不怕吃晚,逐一检查Redis配置文件确保一切井井有条是一种愉悦;忙碌是一种幸福,让我们无暇体会痛苦;奔波是一种快乐,让我们真切地感受生活;疲劳是一种享受,让我们无空虚之感。

美味的饭菜不怕吃晚,逐一检查Redis配置文件确保一切井井有条是一种愉悦;忙碌是一种幸福,让我们无暇体会痛苦;奔波是一种快乐,让我们真切地感受生活;疲劳是一种享受,让我们无空虚之感。

星空体育平台

星空体育注册


星空体育APP 星空体育注册 星空体育官方