redis如何做内存优化

时间:2024-10-13 12:30:47

Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。内存数据库-内存的使用优化值得学习下。

redis如何做内存优化

工具/原料

redis3.0.501

redis-server

redis-cli

Redis内存知识

1、了解内存使用情况,cli输入命令 memory。其中human结尾的就是便于人阅读的M,其他的单位是字节

redis如何做内存优化

2、Redis内存划分:redis自身所占内存3M多一点,对象内存,缓冲内存,内存碎片。

redis如何做内存优化

3、内存管理:设置内存上限,并指定内存回收策略;maxmemory配置参数可限制当前Redis实例可使用的最大内存;通过config set maxmemory可根据业务需求,动态调整内存限制;通过设置内存上限,可方便地在一台服务器上部署多个Redis实例

redis如何做内存优化

Redis内存优化

1、Redis存储的所有数据都使用redisObject来封装,包括string、hash、list、set、zset

2、redisObject的字段:type亨蚂擤缚字段:保存对象使用的数据类型,命令type {key}返回值对象的数据类型髫潋啜缅encoding字段:保存对象使用的内部编码类型,命令object encoding {key}返回值对象的内部编码类型lru字段:记录对象最后一次被访问的时间(用于内存回收),命令object idletime {key}查看键的空闲时间(可配合scan命令批量查找长期空闲的键进行清理)refcount字段:记录对象的引用计数(用于回收),命令object refcount {key}查看键的引用数*ptr字段:存储值对象的数据或指针,如果是整数,则直接存储数据,否则表示指向数据的指针

3、缩减键、值对象的长度:简化键名,使用高效的序列化工具来序列化值对象,还可使用压缩工具(Google Snappy)压缩序列化后的数据

4、共享对象池:Redis内部维护[0-9999]的整数对象池,对于0-9999的内部整数类型的元素、整数值对象都会直接徂葛幢捎引用整数对象池中的对象,因此尽量使用整数对象可节省内存;注意:启用LRU相关的溢出策略时,无法使用共享对象池;对于ziplist编码的值对象,也无法使用共享对象池(成本过高)

5、尽可能的使用hash数据结构、减少key的数量(编码为ziplist的hash数据结构的妙用3)、

© 手抄报圈