【redis,1】java操作redis: 將string、list、map、自定義的物件儲存到redis中
阿新 • • 發佈:2019-01-24
一、操作string 、list 、map 物件
1、引入jar:
jedis-2.1.0.jar
2、程式碼
/**
* @param args
*/
public static void main(String[] args) {
//連線redis服務
Jedis jedis = new Jedis("192.168.88.15",6379);
//密碼驗證-如果你沒有設定redis密碼可不驗證即可使用相關命令
// jedis.auth("abcdefg");
//簡單的key-value 儲存
jedis.set("redis", "myredis");
System.out.println(jedis.get("redis"));
//在原有值得基礎上新增,如若之前沒有該key,則匯入該key
//之前已經設定了redis對應"myredis",此句執行便會使redis對應"myredisyourredis"
jedis.append("redis", "yourredis");
jedis.append("content", "rabbit");
//mset 是設定多個key-value值 引數(key1,value1,key2,value2,...,keyn ,valuen)
//mget 是獲取多個key所對應的value值 引數(key1,key2,key3,...,keyn) 返回的是個list
jedis.mset("name1","yangw","name2","demon","name3","elena");
System.out.println(jedis.mget("name1","name2","name3"));
//map
Map<String,String> user = new HashMap<String,String>();
user.put("name", "cd");
user.put("password", "123456");
//map存入redis
jedis.hmset("user", user);
//mapkey個數
System.out.println(String.format("len:%d", jedis.hlen("user")));
//map中的所有鍵值
System.out.println(String.format("keys: %s", jedis.hkeys("user") ));
//map中的所有value
System.out.println(String.format("values: %s", jedis.hvals("user") ));
//取出map中的name欄位值
List<String> rsmap = jedis.hmget("user", "name","password");
System.out.println(rsmap);
//刪除map中的某一個鍵值 password
jedis.hdel("user", "password");
System.out.println(jedis.hmget("user", "name", "password"));
//list
jedis.del("listDemo");
System.out.println(jedis.lrange("listDemo", 0, -1));
jedis.lpush("listDemo", "A");
jedis.lpush("listDemo", "B");
jedis.lpush("listDemo", "C");
System.out.println(jedis.lrange("listDemo", 0, -1));
System.out.println(jedis.lrange("listDemo", 0, 1));
//set
jedis.sadd("sname", "wobby");
jedis.sadd("sname", "kings");
jedis.sadd("sname", "demon");
System.out.println(String.format("set num: %d", jedis.scard("sname")));
System.out.println(String.format("all members: %s", jedis.smembers("sname")));
System.out.println(String.format("is member: %B", jedis.sismember("sname", "wobby")));
System.out.println(String.format("rand member: %s", jedis.srandmember("sname")));
//刪除一個物件
jedis.srem("sname", "demon");
System.out.println(String.format("all members: %s", jedis.smembers("sname")));
}
二、將自定義物件儲存到redis中:
1、自定義pojo 實現Serializable 介面: package cn.mingyuan.redis; import java.io.Serializable; /** * 測試用pojo,實現了Serializable,以便進行系列化操作 * * @author mingyuan * */ publicclass Person implements Serializable { private static final long serialVersionUID = -3562550857760039655L; private String name; private int age; public Person(){} public Person(String name, int age) { super(); this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return "Person [name=" + name + ", age=" + age + "]"; } } 2、測試類: package cn.mingyuan.redis; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import redis.clients.jedis.Jedis; publicclass Test { /** * @param args * @throws IOException * @throws ClassNotFoundException */ public static void main(String[] args) throws IOException, ClassNotFoundException { // Jedis redis = new Jedis("192.168.88.15"); Jedis redis = new Jedis("192.168.88.15", 6379); // connect可以不要,因為在執行set操作的時候會先進行判斷客戶端是否於伺服器端建立了連線,若無,則啟動連線過程 redis.connect(); String set = redis.set("mingyuan", "1"); System.out.println(" set result \t" + set); redis.incr("mingyuan"); String string = redis.get("mingyuan"); System.out.println(" get result of key 'mingyuan' \t" + string); // 下面是對物件進行儲存的測試程式碼 ByteArrayOutputStream bos = new ByteArrayOutputStream(); ObjectOutputStream oos = new ObjectOutputStream(bos); Person person = new Person("liudehua" ,22); oos.writeObject(person); byte[] byteArray = bos.toByteArray(); oos.close(); bos.close(); String setObjectRet = redis.set("mingyuan".getBytes(), byteArray); System.out.println(" set object return \t" + setObjectRet); byte[] bs = redis.get("mingyuan".getBytes()); ByteArrayInputStream bis = new ByteArrayInputStream(bs); ObjectInputStream inputStream = new ObjectInputStream(bis); Person readObject = (Person) inputStream.readObject(); System.out.println(" read object \t" + readObject.toString()); inputStream.close(); bis.close(); redis.disconnect(); } }
1、自定義pojo 實現Serializable 介面: package cn.mingyuan.redis; import java.io.Serializable; /** * 測試用pojo,實現了Serializable,以便進行系列化操作 * * @author mingyuan * */ publicclass Person implements Serializable { private static final long serialVersionUID = -3562550857760039655L; private String name; private int age; public Person(){} public Person(String name, int age) { super(); this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return "Person [name=" + name + ", age=" + age + "]"; } } 2、測試類: package cn.mingyuan.redis; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import redis.clients.jedis.Jedis; publicclass Test { /** * @param args * @throws IOException * @throws ClassNotFoundException */ public static void main(String[] args) throws IOException, ClassNotFoundException { // Jedis redis = new Jedis("192.168.88.15"); Jedis redis = new Jedis("192.168.88.15", 6379); // connect可以不要,因為在執行set操作的時候會先進行判斷客戶端是否於伺服器端建立了連線,若無,則啟動連線過程 redis.connect(); String set = redis.set("mingyuan", "1"); System.out.println(" set result \t" + set); redis.incr("mingyuan"); String string = redis.get("mingyuan"); System.out.println(" get result of key 'mingyuan' \t" + string); // 下面是對物件進行儲存的測試程式碼 ByteArrayOutputStream bos = new ByteArrayOutputStream(); ObjectOutputStream oos = new ObjectOutputStream(bos); Person person = new Person("liudehua" ,22); oos.writeObject(person); byte[] byteArray = bos.toByteArray(); oos.close(); bos.close(); String setObjectRet = redis.set("mingyuan".getBytes(), byteArray); System.out.println(" set object return \t" + setObjectRet); byte[] bs = redis.get("mingyuan".getBytes()); ByteArrayInputStream bis = new ByteArrayInputStream(bs); ObjectInputStream inputStream = new ObjectInputStream(bis); Person readObject = (Person) inputStream.readObject(); System.out.println(" read object \t" + readObject.toString()); inputStream.close(); bis.close(); redis.disconnect(); } }