牛骨文教育服务平台(让学习变的简单)
博文笔记

Redis: 占用内存比例简单测试

创建时间:2017-01-13 投稿人: 浏览次数:157

        不同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 内存

   


声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。