redis 入门学习-- java 对象存入redis的2种方式

1、将对象序列化成字节数组,存入 String 中

/**
     * 将对象缓存到 redis 的 string 结构数据中
     * @throws Exception 
     *
     */
    @Test
    public void testObjectCache() throws Exception{
        ProductInfo p </span>= <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> ProductInfo();
        
        p.setName(</span>"中华牙膏"<span style="color: rgba(0, 0, 0, 1)">);
        p.setDescription(</span>"美白防蛀"<span style="color: rgba(0, 0, 0, 1)">);
        p.setCatelog(</span>"日用品"<span style="color: rgba(0, 0, 0, 1)">);
        p.setPrice(</span>10.8<span style="color: rgba(0, 0, 0, 1)">);

        </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">将对象序列化成字节数组</span>
        ByteArrayOutputStream ba = <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> ByteArrayOutputStream();
        ObjectOutputStream oos </span>= <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> ObjectOutputStream(ba);
        
        </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">用对象序列化流来将p对象序列化,然后把序列化之后的二进制数据写到ba流中</span>

oos.writeObject(p);

        </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">将ba流转成byte数组</span>
        <span style="color: rgba(0, 0, 255, 1)">byte</span>[] pBytes =<span style="color: rgba(0, 0, 0, 1)"> ba.toByteArray();
        
        </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">将对象序列化之后的byte数组存到redis的string结构数据中</span>
        jedis.set("product:01"<span style="color: rgba(0, 0, 0, 1)">.getBytes(), pBytes);
    
        </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">根据key从redis中取出对象的byte数据</span>
        <span style="color: rgba(0, 0, 255, 1)">byte</span>[] pBytesResp = jedis.get("product:01"<span style="color: rgba(0, 0, 0, 1)">.getBytes());
        
        </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">将byte数据反序列出对象</span>
        ByteArrayInputStream bi = <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> ByteArrayInputStream(pBytesResp);
        
        ObjectInputStream oi </span>= <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> ObjectInputStream(bi);
        
        </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">从对象读取流中读取出p对象</span>
        ProductInfo pResp =<span style="color: rgba(0, 0, 0, 1)"> (ProductInfo) oi.readObject();
        
        System.out.println(pResp);
}</span></pre>

 

2、将对象转成 json 字符串缓存到 redis 的 string 结构数据中

/**
* 将对象转成 json 字符串缓存到 redis 的 string 结构数据中
*/
@Test
public void testObjectToJsonCache(){
    ProductInfo p </span>= <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> ProductInfo();
    
    p.setName(</span>"两面针"<span style="color: rgba(0, 0, 0, 1)">);
    p.setDescription(</span>"防蛀专用"<span style="color: rgba(0, 0, 0, 1)">);
    p.setCatelog(</span>"日用品"<span style="color: rgba(0, 0, 0, 1)">);
    p.setPrice(</span>10.9<span style="color: rgba(0, 0, 0, 1)">);

    </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">利用gson将对象转成json串</span>
    Gson gson = <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> Gson();
    String pJson </span>=<span style="color: rgba(0, 0, 0, 1)"> gson.toJson(p);
    
    </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">将json串存入redis</span>
    jedis.set("prodcut:02"<span style="color: rgba(0, 0, 0, 1)">, pJson);
    
    
    </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">从redis中取出对象的json串</span>
    String pJsonResp = jedis.get("prodcut:02"<span style="color: rgba(0, 0, 0, 1)">);
    
    </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">将返回的json解析成对象</span>
    ProductInfo pResponse = gson.fromJson(pJsonResp, ProductInfo.<span style="color: rgba(0, 0, 255, 1)">class</span><span style="color: rgba(0, 0, 0, 1)">);
    
    </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">显示对象的属性</span>

System.out.println(pResponse);
}

3、ProductInfo 对象代码

import java.io.Serializable;

public class ProductInfo implements Serializable{

</span><span style="color: rgba(0, 0, 255, 1)">private</span> <span style="color: rgba(0, 0, 255, 1)">static</span> <span style="color: rgba(0, 0, 255, 1)">final</span> <span style="color: rgba(0, 0, 255, 1)">long</span> serialVersionUID = 3002512957989050750L<span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 0, 255, 1)">private</span><span style="color: rgba(0, 0, 0, 1)"> String name;
</span><span style="color: rgba(0, 0, 255, 1)">private</span><span style="color: rgba(0, 0, 0, 1)"> String description;
</span><span style="color: rgba(0, 0, 255, 1)">private</span> <span style="color: rgba(0, 0, 255, 1)">double</span><span style="color: rgba(0, 0, 0, 1)"> price;
</span><span style="color: rgba(0, 0, 255, 1)">private</span><span style="color: rgba(0, 0, 0, 1)"> String catelog;
</span><span style="color: rgba(0, 0, 255, 1)">public</span><span style="color: rgba(0, 0, 0, 1)"> String getName() {
    </span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> name;
}
</span><span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">void</span><span style="color: rgba(0, 0, 0, 1)"> setName(String name) {
    </span><span style="color: rgba(0, 0, 255, 1)">this</span>.name =<span style="color: rgba(0, 0, 0, 1)"> name;
}
</span><span style="color: rgba(0, 0, 255, 1)">public</span><span style="color: rgba(0, 0, 0, 1)"> String getDescription() {
    </span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> description;
}
</span><span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">void</span><span style="color: rgba(0, 0, 0, 1)"> setDescription(String description) {
    </span><span style="color: rgba(0, 0, 255, 1)">this</span>.description =<span style="color: rgba(0, 0, 0, 1)"> description;
}
</span><span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">double</span><span style="color: rgba(0, 0, 0, 1)"> getPrice() {
    </span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> price;
}
</span><span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">void</span> setPrice(<span style="color: rgba(0, 0, 255, 1)">double</span><span style="color: rgba(0, 0, 0, 1)"> price) {
    </span><span style="color: rgba(0, 0, 255, 1)">this</span>.price =<span style="color: rgba(0, 0, 0, 1)"> price;
}
</span><span style="color: rgba(0, 0, 255, 1)">public</span><span style="color: rgba(0, 0, 0, 1)"> String getCatelog() {
    </span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> catelog;
}
</span><span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">void</span><span style="color: rgba(0, 0, 0, 1)"> setCatelog(String catelog) {
    </span><span style="color: rgba(0, 0, 255, 1)">this</span>.catelog =<span style="color: rgba(0, 0, 0, 1)"> catelog;
}

@Override
</span><span style="color: rgba(0, 0, 255, 1)">public</span><span style="color: rgba(0, 0, 0, 1)"> String toString() {
     
    </span><span style="color: rgba(0, 0, 255, 1)">return</span> name+" "+description + " "+ catelog+ " " +<span style="color: rgba(0, 0, 0, 1)"> price;
}

}