redis内存分析

如果你一看到redis内存不够用,就说加机器,那么可否想过,或许是你使用的方式可以更加优化呢?

本节我们就来谈谈内存的优化

redis存储的所有值对象,住在一个名字叫redisObject的房子中, 房子的构造是这样子的:

                       redis内存分析_第1张图片

数据类型:value对象采用哪种数据类型string hash list set sortedset; 

编码方式:raw int zipmap 

先知道是存在什么里面,以及存的结构是啥样的,下面就可以谈谈优化方面了

1.减键值对象

1.精简键值对大小,2.键值上少而精;3.使用一些压缩工具;

可以在key值设计上,不加无用字段,还有存储的value,也不加无用字段.存入的json还可以进行压缩,不过压缩可能会有速度问题.

2.共享对象池

共享这个词,不难理解,比如共享单车, 共享对象池,也就是把用过的对象保存起来,下次需要这种对象的时候,直接拿来用就好了.这样就减少了频繁创建对象;系统启动的时候,会分配一个从1-n 多个数值对象放在一个池子中,如果存储的数据恰好就是这个数值范围内的数据,直接从池子里取出该对象,并且可以通过引用计数的方式来共享;默认的是10000,配置文件自己改喽!

3.优先使用整数

整数比较算法时间复杂度是O(1),但是字符串要通过判断相等性,时间复杂度就变成O(n)了

4.最好设置一下maxmemory,当redis使用到这个内存后,根据淘汰策略来进行保护redis;

你可能感兴趣的:(数据库+缓存+消息队列)