发表于: 2017-11-21 22:41:15
1 699
今天做的事情:
划重点,敲黑板。
本地远程连接服务器下的redis,一直报服务拒绝访问,连接不上。
解决原因:
1. 将redis.conf配置文件里面。bind:127.0.0.1 改成 0.0.0.0 . 可以使任何任何ip访问。
2. 将protected-mode yes 改成 no 这是redis的保护模式,默认开启。
ip+端口号+密码,访问成功!接下来才能做缓存。
public List ioslist() {
Jedis resource = jedis.getResource();
List ioslist = null;
if(resource.get("ioslist")!=null&&resource.get("ioslist".getBytes()).equals(ioslist)){
//redis服务器本身支持二进制安全的类型,所以可以把一个java对象序列化后存储到redis中,也可以反序列化得放入redis中
List ioslist1 = (List) SerializeUtil.unserialize(resource.get("ioslist").getBytes());
System.out.println("输出redis反序列化后的缓存ioslist:"+ioslist1);
return ioslist1;
}else{
//在数据库查询数据 返回 再放进缓存中
ioslist = daoI.ioslist();
if(ioslist!=null){
resource.del("ioslist".getBytes());
resource.set("ioslist".getBytes(),SerializeUtil.serialize(ioslist));
System.out.println("从数据库查的redis的缓存数据"+ioslist);
}
}
return ioslist;
}
代码还没跑通。昨天的memcached代码出问题了。放不进缓存,一直从数据库查询。
了解一下序列化:
序列化是指将对象的状态信息转换为可以存储或传输的形式的过程。
在Java中创建的对象,只要没有被回收就可以被复用,但是,创建的这些对象都是存在于JVM的堆内存中,JVM处于运行状态时候,这些对象可以复用,
但是一旦JVM停止,这些对象的状态也就丢失了。
在实际生活中,需要将对象持久化,需要的时候再重新读取出来,通过对象序列化,可以将对象的状态保存为字节数组,需要的时候再将字节数组反序列化为对象。
对象序列化可以很容易的在JVM中的活动对象和字节数组(流)之间转换,广泛用于RMI(远程方法调用)以及网络传输中。
注意:
1.如果一个类想被序列化,需要实现Serializable接口。否则将抛出NotSerializableException
异常,这是因为,在序列化操作过程中会对类型进行检查,要求被序列化的类必须属于Enum、Array和Serializable类型其中的任何一种,这也是为什么Serializable虽然是一个空接口,但是只要实现了该接口就能序列化和反序列化。
2.在类中增加writeObject 和 readObject 方法可以实现自定义序列化策略,虽然这俩方法不是被显示调用,但是因为在使用ObjectOutputStream的writeObject方法和ObjectInputStream的readObject方法时,会通过反射的方式调用到它们。
遇到的问题:
memcached的缓存不能使用
收获:
redis的配置与命令,实现redis的缓存。
评论