2016-12-20 44 views
0

Redisに/からのgzipの書き込みと読み取りを試みています。問題は、読み込みバイトをファイルに保存してgzipで開くことができたことです。無効です。文字列は、Eclipseコンソールで見るときにも異なります。あなたは、内側UTF-8変換を含む読み取るためにJedis.get(String)を使用しているRedis/java - バイナリデータの書き込みと読み取り

import java.io.File; 
import java.io.FileOutputStream; 
import java.io.IOException; 
import java.nio.file.Files; 
import java.nio.file.Path; 
import java.nio.file.Paths; 

import redis.clients.jedis.Jedis; 

public class TestRedis 
{ 

    public static void main(String[] args) throws IOException 
    { 
    String fileName = "D:/temp/test_write.gz"; 

    String jsonKey = fileName; 

    Jedis jedis = new Jedis("127.0.0.1"); 

    byte[] jsonContent = ReadFile(new File(fileName).getPath()); 

    // test-write data we're storing in redis 
    FileOutputStream fostream = new FileOutputStream("D:/temp/test_write_before_redis.gz"); // looks ok 
    fostream.write(jsonContent); 
    fostream.close(); 

    jedis.set(jsonKey.getBytes(), jsonContent); 

    System.out.println("writing, key: " + jsonKey + ",\nvalue: " + new String(jsonContent)); // looks ok 

    byte[] readJsonContent = jedis.get(jsonKey).getBytes(); 
    String readJsonContentString = new String(readJsonContent); 
    FileOutputStream fos = new FileOutputStream("D:/temp/test_read.gz"); // invalid gz file :( 
    fos.write(readJsonContent); 
    fos.close(); 

    System.out.println("n\nread json content from redis: " + readJsonContentString); 

    } 

    private static byte[] ReadFile(String aFilePath) throws IOException 
    { 
    Path path = Paths.get(aFilePath); 
    return Files.readAllBytes(path); 
    } 

} 

答えて

3

は、ここに私のコードです。しかし、書き込みにJedis.set(byte[], byte[])を使用すると、そのような変換は含まれません。不一致はこの理由のためである可能性があります。もしそうなら、Jedis.get(byte[])をredisから読み取ってUTF-8の変換をスキップすることができます。例えば。

byte[] readJsonContent = jedis.get(jsonKey.getBytes()); 
+0

大変感謝!今、これがPredisでどのようにできるのか見てみましょう。:) – Buffalo

関連する問題