【redis,1】java操作redis: 将string、list、map、自己定义的对象保存到redis中
一、操作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);
//password验证-假设你没有设置redispassword可不验证就可以使用相关命令
// 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
*
*/
public class 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;
public class 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操作的时候会先进行推断client是否于server端建立了连接,若无,则启动连接过程
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();
}
}