Redis: 占用内存比例简单测试
不同Redis 存储大小,应采用不同的Redis 架构,因此合理评估Redis 大小则起着举足轻重的作用。 当Redis 存储的数据超过几十G 的时候, 就应该考虑采用分片和集群的方式处理。 笔者采用的是线性测试方法,使用1024 kb 的文本文件,反复存入redis, 然后查看redis 内存,以此做的估算。
一 准备环境
1. linux 下安装好redis 环境
2. 准备 1024kb 的文本
3. Java 读取文件, 使用jedis 存入redis 数据库
package org.zgf.learn.jedis.cluster;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import org.junit.BeforeClass;
import org.junit.Test;
import redis.clients.jedis.Jedis;
/**
* 测试redis 占用内存
* @ClassName: TestSingle.java
* @author zonggf
* @date 2017年1月13日-下午2:50:38
*/
public class TestSingle {
private static Jedis jedis;
@BeforeClass
public static void init(){
String host = "192.168.145.100";
int port = 6379;
String password = "123456";
jedis = new Jedis(host, port);
jedis.auth(password);
}
@Test
public void testMemory(){
String fileContent = this.readfile();
int start =91;
int nums = 10;
for(int i=0; i<nums; i++){
String key = "file_" + (start + i);
jedis.set(key,fileContent);
}
}
private String readfile(){
StringBuffer sb = new StringBuffer();
try{
File file = new File("files/hello.txt");
BufferedReader br = new BufferedReader(new FileReader(file));
String line = null;
while((line = br.readLine()) != null){
sb.append(line);
}
br.close();
}catch (Exception e){
}
return sb.toString();
}
}
二 测试过程
1. keys:0 , redis 中没有任何key
2. keys:1, redis 中存放一个key , value 为1024kb 的文本文件
3. keys:30, redis 中存放30个相同的key
4. keys:60, redis 中存放60 个相同的key
5. keys:100, redis 中存放100 个相同的key
三 总结
在不压缩value 值的情况下, 1024kb 的文本文件,在redis 中占用内存基本上为1024kb 的2.5 倍。可以采用对 redis value 进行压缩的机制,节省redis 内存
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。
- 上一篇: 美团在Redis上踩过的一些坑-4.redis内存使用优化
- 下一篇: 3.redis内存占用飙升
