將物件以json的形式寫入
阿新 • • 發佈:2018-12-21
1. 首先建立一個Product類,並實現序列化
import java.io.Serializable; //將類的物件按照字串格式存到redis public class Product implements Serializable{ private String name; private int price; private String desc; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getPrice() { return price; } public void setPrice(int price) { this.price = price; } public String getDesc() { return desc; } public void setDesc(String desc) { this.desc = desc; } @Override public String toString() { return "product:名稱: "+name + " 價格: "+ price+" 描述: "+ desc; } }
Redis實現:
import com.google.gson.Gson; import redis.clients.jedis.Jedis; import java.io.*; public class StringDemo { private static Jedis jedis = new Jedis("192.168.88.130",6379); //字串快取 public static void StringTest(){ jedis.set("user:01:name","kate"); //mset寫多行資料 jedis.mset("user:02:name","mary","user:03:name","candy"); //根據key取值 String name1 = jedis.get("user:01:name"); String name2 = jedis.get("user:02:name"); String name3 = jedis.get("user:03:name"); System.out.println(name1); System.out.println(name2); System.out.println(name3); jedis.close(); } //存物件,到字串數結構 public static void objectTest()throws Exception{ Product product = new Product(); product.setName("Apple"); product.setPrice(5); product.setDesc("很甜"); //將物件進行序列化 ByteArrayOutputStream baos = new ByteArrayOutputStream(); ObjectOutputStream oos = new ObjectOutputStream(baos); //把物件寫到輸出流裡面 oos.writeObject(product); //將序列化好的物件資料存到一個String型別的數組裡面 byte[] bproduct = baos.toByteArray(); jedis.set("product01".getBytes(),bproduct); byte[] resbyte = jedis.get("product01".getBytes()); //反序列化 ByteArrayInputStream bais = new ByteArrayInputStream(resbyte); ObjectInputStream ois = new ObjectInputStream(bais); Product products = (Product)ois.readObject(); //列印結果 System.out.println(products); jedis.close(); } //物件以json的形式寫入 public static void objectToJsonTest(){ Product product = new Product(); product.setName("Apple phone"); product.setPrice(5); product.setDesc("很貴"); //把物件轉變成一個json Gson gson = new Gson(); String jsonObject = gson.toJson(product); jedis.set("product02",jsonObject); String jsonStr =jedis.get("product02"); //把json裡面物件取出來 Product res = gson.fromJson(jsonStr,Product.class); System.out.println(res); jedis.close(); } public static void main(String[] args) throws Exception { // StringTest(); objectTest(); //objectToJsonTest(); } } /* product:名稱: Apple 價格: 5 描述: 很甜 */
啟動redis
/usr/local/redis/bin/redis-server /usr/local/redis/bin/redis.conf
/usr/local/redis/bin/redis-cli -h 127.0.0.1 -p 6379