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

来源:互联网 发布:网络大哥砸苹果手机店 编辑:程序博客网 时间:2024/06/08 17:10

        不同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;@BeforeClasspublic static void init(){String host = "192.168.145.100";int port = 6379;String password = "123456";jedis = new Jedis(host, port);jedis.auth(password);}@Testpublic 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 内存

   


1 0
原创粉丝点击