网站建设分金手指专业十,时事新闻热点摘抄,wordpress 输出时间,广东省建设信息中心官网作者 | 阿Q来源 | 阿Q说代码在往期的文章中我们已经对Redis的概念和基本命令进行了讲解#xff0c;今天我们来看下它的配置文件#xff0c;Redis的配置文件在我们的开发和实际应用中起着非常重要的作用。我们可以在安装目录下找到redis.conf配置文件#xff0c;通过vim命令进… 作者 | 阿Q来源 | 阿Q说代码在往期的文章中我们已经对Redis的概念和基本命令进行了讲解今天我们来看下它的配置文件Redis的配置文件在我们的开发和实际应用中起着非常重要的作用。我们可以在安装目录下找到redis.conf配置文件通过vim命令进行查看为了防止配置文件进行更改大家在使用前一定要备份一下本文Redis的版本为5.0.7UNITS1k 1000 bytes
1kb 1024 bytes
1m 1000000 bytes
1mb 1024*1024 bytes
1g 1000000000 bytes
1gb 1024*1024*1024 bytes❝单位不区分大小写只支持bytes❞INCLUDES和structs2配置文件类似可以通过includes包含。redis.conf可以作为总闸包含其他。include /path/to/local.conf
include /path/to/other.confMODULESloadmodule /path/to/my_module.so
loadmodule /path/to/other_module.soRedis可以通过loadmodule选项在启动时加载模块若服务端无法加载模块服务端会停止。可以通过多个loadmodule选项加载多个模块。NETWORK「bind 127.0.0.1」默认情况下如果未指定“bind”配置指令Redis将侦听服务器上所有可用网络接口的连接。可以使用“bind”配置指令后跟一个或多个IP地址只侦听一个或多个选定接口。「例如」bind 192.168.1.100 10.0.0.1当设置多个bind地址后Redis内部会维护多个Socket每个Socket用于一个network interface。「protected-mode yes」此选项默认开启。当Redis服务端未使用bind选项显式指定要监听的network interface并且未设置密码Redis服务端只会接受来自127.0.0.1和::1的客户端以及Unix域的Socket进行连接。「port 6379」用于设置Redis监听的TCP端口默认为6379设置为0表示不监听TCP端口「timeout 0」空闲多少秒之后关闭连接“0”表示不关闭「tcp-keepalive 300」单位为秒如果为0则不会进行keepalive检测建议设置成60「tcp-backlog 511」设置tcp的backlogbacklog其实是一个连接队列。❝backlog队列总和 未完成三次握手队列 已经完成三次握手队列❞在高并发环境下需要一个高backlog值来避免慢客户端连接问题。「注意」Linux内核会将这个值减小到/proc/sys/net/core/somaxconn的值所以需要确认增大somaxconn和tcp_max_syn_backlog两个值来达到想要的效果。GENERALdaemonizeRedis采用的是单进程多线程的模式daemonize是用来指定redis是否要用守护线程的方式启动。默认情况下Redis不作为守护进程运行。如果需要请使用“是”。#daemonize no
//当前界面将进入redis的命令行界面
exit强制退出或者关闭连接工具(putty
xshell等)都会导致redis进程退出。daemonize yes
//代表开启守护进程模式。在该模式下
redis 会在后台运行并将进程 pid 号写入
至 redis.conf 选项 pidfile 设置的文件中
此时 redis 将一直运行除非手动kill该进程。supervised no当你通过upstart或者systemd运行Redis时Redis可以和你的supervision tree进行交互可选的选项为no 无交互默认upstart 通过向Redis发送SIGSTOP信号来通知upstartsystemd 通过向$NOTIFY_SOCKET写入READY1来通知systemdauto 通过是否设置了UPSTART_JOB或者NOTIFY_SOCKET环境变量来决定选项为 upstart或者systemdpidfilepidfile /var/run/redis_6379.pid //进程pid文件loglevel notice指定服务器日志级别从上到下依次减少debug大量信息对开发/测试有用verbose许多很少有用的信息但不像调试级别那样混乱notice适度冗长可能是生产中需要的内容warning只记录非常重要/关键的消息logfilelogfile 日志的名字如果为空redis给控制台标准输出如果配置为守护进程方式运行且设置了logfile为stdout则日志将会发送给/dev/nulldatabasedatabases 16系统默认的库16个默认使用0库syslogsyslog-enabled no是否把日志输出到syslog中系统日志默认是关着syslog-ident redis指定syslog里的日志标志设备以redis开头syslog-facility local0指定syslog设备值可以是USER或LOCAL0-LOCAL7默认使用local0Security 安全requirepass 12345!#设置redis连接密码如果配置了连接密码客户端在连接redis时需要通过Auth password命令提供密码默认关闭。如果设置完密码ping就失败了提示“NoAuth Authentication required”加上auth 密码就通了。「要求必须auth password 在任何命令之前」❝Redis一般做的是缓存不是安全而且系统会认为Linux是在安全的环境下。❞CLIENTSmaxclients 10000最大连接数设置redis同时可以与多少个客户端进行连接。默认情况下为10000个客户端。当你无法设置进程文件句柄限制时redis会设置为当前的文件句柄限制值减去32因为redis会为自身内部处理逻辑留一些句柄出来。如果达到了此限制redis则会拒绝新的连接请求并且向这些连接请求方发出「max number of clients reached」以作回应。MEMORY MANAGEMENT设置redis可以使用的内存量。一旦到达内存使用上限redis将会试图移除内部数据移除规则可以通过maxmemory-policy来指定。如果redis无法根据移除规则来移除内存中的数据或者设置了「不允许移除」那么redis则会针对那些需要申请内存的指令返回错误信息比如SET、LPUSH等。但是对于无内存申请的指令仍然会正常响应比如GET等。如果你的redis是主redis说明你的redis有从redis那么在设置内存使用上限时需要在系统中留出一些内存空间给同步队列缓存只有在你设置的是“不移除”的情况下才不用考虑这个因素。最大缓存#maxmemory bytes
maxmemory 128MB设置maxmemory和相对应的回收策略算法设置最好为物理内存的「3/4」或者比例更小因为redis复制数据等其他服务时也是需要缓存的。以防缓存数据过大致使redis崩溃造成系统出错不可用。牺牲一部分缓存数据保存整体系统可用性。redis新的内存机制会把key放在内存value存放在swap区。此配置需要和「maxmemory-policy」配合使用当redis中内存数据达到maxmemory时触发「清除策略」。在「内存不足」时任何write操作(比如setlpush等)都会触发「清除策略」的执行。实际环境建议redis的所有物理机器的硬件配置保持一致(内存一致)同时确保master/replica中「maxmemory policy」配置一致。内存满时如果还接收到set命令redis将先尝试剔除设置过expire信息的key而不管该key的过期时间有没有到达。在删除时将按照过期时间进行删除最早将要被过期的key将最先被删除。如果带有expire信息的key都删光了内存还不够用那么将返回错误。这样redis将不再接收写请求只接收get请求。❝maxmemory的设置比较适合于把redis当作于类似memcached的缓存来使用。❞最大缓存策略「maxmemory-policy」:volatile-lru使用LRU最近最少使用算法移除key只对设置了过期时间的键allkeys-lru使用LRU算法移除key所有keyvolatile-lfu对过期键使用 LFU最不经常使用近似算法allkeys-lfu对所有键使用 LFU 近似算法volatile-random在过期集合中移除随机的key只对设置了过期时间的键allkeys-random移除随机的keyvolatile-ttl移除那些TTL值最小的key即那些最近要过期的keynoeviction不进行移除。针对写操作只是返回错误信息默认去公司观察维度不应该选择这个❝LRU算法、LFU算法或者TTL算法都是不是很精确算法而是个近似算法。❞「使用策略规则」如果数据呈现幂律分布也就是一部分数据访问频率高一部分数据访问频率低则使用allkeys-lru。如果数据呈现平等分布也就是所有的数据访问频率都相同则使用allkeys-random。样本数量设置样本数量上边提到的算法都并非是精确的算法而是估算值所以你可以设置样本的大小。maxmemory-samples 5默认值是 5也就是说Redis随机挑出5个键然后选出一个最符合条件的。对LRU来说5是比较合适的。10已经很接近于真正的LRU但会消耗更多的CPU。3会更快但没有那么精确。副本忽略最大内存replica-ignore-maxmemory yes从Redis 5开始默认情况下replica节点会忽略maxmemory设置除非在发生failover后此节点被提升为master节点。这意味着只有master才会执行过期删除策略并且master在删除键之后会对replica发送DEL命令。这个行为保证了master和replicas的一致性并且这通常也是你需要的但是若你的replica节点是可写的或者你希望replica节点有不同的内存配置并且你确保所有到replica写操作都幂等的那么你可以修改这个默认的行为 请确保你明白你在做什么。「注意」默认情况下replica节点不会执行过期策略它有可能使用了超过maxmemory设定的值的内存。因此你需要监控replicas节点所在的机器并且确保在master节点到达配置的maxmemory大小时replicas节点不会超过物理内存的大小。今天我们就先说到这了有不懂的内容欢迎大家在留言区留言~往期推荐Android 13 第一个开发者版本来了网友直呼Android 12 还没玩透CSDN企业数字化之路 ——「低代码」发展研讨会北京站现场实录大放送使用这个库让你的服务操作 Redis 速度飞起将 k8s 制作成 3D 射击游戏好玩到停不下来点分享点收藏点点赞点在看