Redis内存监控及管理
Redis所有数据都是存放在内存中的,所以内存的监控及管理对redis来是是非常重要的。下面从内存监控、管理及优化三个方面来说说redis的内存。
内存监控
redis为我们提供了info memory命令来查看内存使用。该命令的展示的数据非常多,下面只看其中比较重要的一些。
used_memory:1146648 (redis分配器分配的内存量)
used_memory_human:1.09M(以可读方式展示)
used_memory_rss:4358144 (redis总占用内存量)
used_memory_rss_human:4.16M(可读方式展示redis总占用内存量)
used_memory_peak:1229448 (userd_memory_peak峰值)
used_memory_peak_human:1.17M
used_memory_overhead:857036(缓冲区、backlog等占用的内存)
used_memory_startup:791384(启动redis消耗的内存)
used_memory_dataset:289612(redis数据所占用的内存)
used_memory_lua:37888(lua脚本消耗的内存)
used_memory_lua_human:37.00K(可读方式展现)
mem_fragmentation_ratio:4.02(内存碎片率,used_memory_rss / used_memory)
mem_fragmentation_ratio大于1时,表示有内存碎片,数值越低表示碎片率越严重。应用允许的情况下,可以重启redis来降低碎片率。当小于0时,就要非常注意了,表示内存不够用了,使用了部分swap。
内存管理
一般建议给redis设置内存上限,maxmory
修改方式有两种
修改配置文件
动态设置
下面展示动态设置
127.0.0.1:6379> config set maxmemory 1G OK 127.0.0.1:6379> config rewrite OK
设置最大内存有两个方面的作用,首先可以限制redis占用的内存大小,防止超过物理内存大小。另外,当设置了最大内存后,redis超过了最大内存后,就可以触发内存回收策略(通常应用于缓存场景)
redis可以动态调整最大内存是非常好用的,当服务器内存不够用的情况下,需要增加内存,当服务器内存增大了,再动态调整redis的mammemory。
另外,redis的内存回收策略的配置(maxmemory-policy)有几个,其中有两个单词经常出现,LRU、LFU,意义分别如下:
最近最少使用的(Least Recently Used)
最近最不常用的(Least Frequently Used)
下面来看看所有的回收策略及意义:
noeviction:默认策略,不会删除任何键,当超过最大内存后,拒绝任何写入命令,只响应读命令
volatile-lru:根据lru算法删除过期的键,如果没有可删除的键,则回退到noeviction策略。
allkeys-lru:根据lru算法删除键,不管键是否过期,直到占用内存小于maxmeory为止。
allkeys-lfu:和上面含义一致,只不过是使用lfu算法来删除。
allkeys-random:当达到最大内存后,随机删除键。
volatile-ttl:删除快要过期的键。如果没有则回退到noeviction。
内存优化
上面说了redis回收策略,它属于被动删除策略,我们可以主动去删除长时间没有访问的键。可以通过使用scan遍历键,然后使用object ideltime来查看键的空闲时间,删除那些长时间没有访问的键。
此外,还可以缩减键值对象的方式来减低内存的占用量。
127.0.0.1:6379> scan 0 1) "272" 2) 1) "story:course:3915" 2) "story:course:1681" 3) "story:course:4982" ……
比如,上面的键可以改为:sy:cos:id来减低键的长度。对于,值的话,可以使用压缩技术来降低值的长度。(压缩会增加cpu的压力,可根据具体应用酌情应用)
以上是Redis内存监控及管理的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

Redis集群模式通过分片将Redis实例部署到多个服务器,提高可扩展性和可用性。搭建步骤如下:创建奇数个Redis实例,端口不同;创建3个sentinel实例,监控Redis实例并进行故障转移;配置sentinel配置文件,添加监控Redis实例信息和故障转移设置;配置Redis实例配置文件,启用集群模式并指定集群信息文件路径;创建nodes.conf文件,包含各Redis实例的信息;启动集群,执行create命令创建集群并指定副本数量;登录集群执行CLUSTER INFO命令验证集群状态;使

Redis 使用哈希表存储数据,支持字符串、列表、哈希表、集合和有序集合等数据结构。Redis 通过快照 (RDB) 和追加只写 (AOF) 机制持久化数据。Redis 使用主从复制来提高数据可用性。Redis 使用单线程事件循环处理连接和命令,保证数据原子性和一致性。Redis 为键设置过期时间,并使用 lazy 删除机制删除过期键。

解决redis-server找不到问题的步骤:检查安装,确保已正确安装Redis;设置环境变量REDIS_HOST和REDIS_PORT;启动Redis服务器redis-server;检查服务器是否运行redis-cli ping。

要查看 Redis 中的所有键,共有三种方法:使用 KEYS 命令返回所有匹配指定模式的键;使用 SCAN 命令迭代键并返回一组键;使用 INFO 命令获取键的总数。

要查看 Redis 版本号,可以使用以下三种方法:(1) 输入 INFO 命令,(2) 使用 --version 选项启动服务器,(3) 查看配置文件。

理解 Redis 源码的最佳方法是逐步进行:熟悉 Redis 基础知识。选择一个特定的模块或功能作为起点。从模块或功能的入口点开始,逐行查看代码。通过函数调用链查看代码。熟悉 Redis 使用的底层数据结构。识别 Redis 使用的算法。

使用 Redis 指令需要以下步骤:打开 Redis 客户端。输入指令(动词 键 值)。提供所需参数(因指令而异)。按 Enter 执行指令。Redis 返回响应,指示操作结果(通常为 OK 或 -ERR)。

要设置 Redis 密码,请在配置文件中修改 requirepass 为所需密码并重启服务。连接受密码保护的实例时,使用 redis-cli 命令并提供主机名/IP、端口和密码。注意密码的安全性,并定期更改以提高安全性。
