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; }
}