非关系型数据库之Redis
1、Java中使用Jedis操作Redis
使用Java操作Redis需要jedis-2.1.0.jar
如果需要使用Redis连接池的话,还需commons-pool-1.5.4.jar
2、JAVA使用Redis做消息队列
Redis消息队列的生产者和消费者:
Message 需要传送的实体类(需实现Serializable接口)
Configuration Redis的配置读取类,继承自Properties
ObjectUtil 将对象和byte数组双向转换的工具类
Jedis 通过消息队列的先进先出(FIFO)的特点结合Redis的list中的push和pop操作进行封装的工具类
(一)序列化
//对象转Byte[](ByteArrayOutputStream的toByteArray方法)
public static byte[] object2Bytes(Object obj) throws IOException{
ByteArrayOutputStream bo=new ByteArrayOutputStream();
ObjectOutputStream oo=new ObjectOutputStream(bo);
oo.writeObject(obj);
byte[] bytes=bo.toByteArray();
bo.close();
oo.close();
return bytes;
}
//Byte[]转对象(ByteArrayInputStream的readObject)
public static Object bytes2Object(byte[] bytes) throws Exception{
ByteArrayInputStream in=new ByteArrayInputStream(bytes);
ObjectInputStream sIn=new ObjectInputStream(in);
return sIn.readObject();
}
(二)消息类(实现Serializable接口)
(三)Redis的操作
利用redis做队列,我们采用的是redis中list的push和pop操作(队列:先进先出)
//获取数据
String value=null;
Jedis jedis=null;
try{
jedis=jedisPool.getResource();
value=jedis.get(key);
}catch{}
三、Jedis操作各个类型
1、redis存储字符串
jedis.set("name","xinxin");//向key-->name中放入了value-->xinxin
System.out.println(jedis.get("name"));//执行结果:xinxin
jedis.append("name", " is my lover"); //拼接
System.out.println(jedis.get("name"));
jedis.del("name"); //删除某个键
System.out.println(jedis.get("name"));
//设置多个键值对
jedis.mset("name","liuling","age","23","qq","476777XXX");
jedis.incr("age"); //进行加1操作
System.out.println(jedis.get("name") + "-" + jedis.get("age") + "-" + jedis.get("qq"));
2、redis操作Map
Map<String, String> map = new HashMap<String, String>();
map.put("name", "xinxin");
map.put("qq", "123456");
jedis.hmset("user",map);
//删除map中的某个键值
jedis.hdel("user","age");
3、jedis操作List
//开始前,先移除所有的内容
jedis.del("java framework");
jedis.lpush("java framework","spring");
jedis.lpush("java framework","struts");
jedis.lpush("java framework","hibernate");
//再取出所有数据jedis.lrange是按范围取出,
// 第一个是key,第二个是起始位置,第三个是结束位置,jedis.llen获取长度 -1表示取得所有
System.out.println(jedis.lrange("java framework",0,-1));
jedis.rpush("java framework","spring");
4、jedis操作Set
//添加
jedis.sadd("user","liuling");
jedis.sadd("user","who");
//移除noname
jedis.srem("user","who");
System.out.println(jedis.smembers("user"));//获取所有加入的value
System.out.println(jedis.sismember("user", "who"));//判断 who 是否是user集合的元素
System.out.println(jedis.scard("user"));//返回集合的元素个数