redis set、序列化存入缓存

Room需要先实现序列化implements Serializable

ArrayList<Room> list=null;
roomList = getDaoRoomListData(filterParams, sort, order, skip, limit);
List<String> ridList = new ArrayList();
//

=========================================================

for (Room roomr : roomList) {

String strKeyrid=key+roomr.getRid();
Map<String, ?> parse = Document.parse(JSON.toJSONString(roomr));
helper.setRoomone(strKeyrid,roomr);//以一个实体存进缓存

}
Map redisMap=new HashMap();
helper.setRoomList(keys,roomList);//以列表存进缓存

===============缓存获取实体,经过序列化后就可以直接显示了=========================

if (roomListOne.size() > 0) {
Room room=roomListOne.get(0);
String roomid=room.getRid();
String keyroomid=key+roomid;
Room roomone=helper.getRoomone(keyroomid);
if(null!=roomone){
roomList.add(roomone);
flagRoomOne=false;
}
}

================获取列表,经过序列化后就可以直接显示了==================

roomList =helper.getRoomList(keys);

=========================================================

/**
* 从缓存获取数据
* @param uid
* @return List
*/
@SuppressWarnings("unchecked")
public Room getRoomone(String key) {
Room levellist = new Room();
Jedis jedis = null;
try {
jedis = JedisPoolUtil.getInstance().getCocosJedis();
byte[] bs = jedis.get(key.getBytes());
if(null != bs){
levellist = (Room) unserialize(bs);
}else{
return null ;
}

} catch (Exception e) {
e.printStackTrace();
} finally {
if (null != jedis)
jedis.close();
}
return levellist;
}

/**
* 从缓存获取房间列表数据
* @param uid
* @return List
*/
@SuppressWarnings("unchecked")
public ArrayList<Room> getRoomList(String keys) {
ArrayList<Room> levellist = new ArrayList<Room>();
Jedis jedis = null;
try {
jedis = JedisPoolUtil.getInstance().getCocosJedis();
byte[] bs = jedis.get(keys.getBytes());
if(null != bs){
levellist = (ArrayList<Room>) unserialize(bs);
}else{
return null ;
}

} catch (Exception e) {
e.printStackTrace();
} finally {
if (null != jedis)
jedis.close();
}
return levellist;
}

/**
* 保存房间信息到缓存
* @param uid
* @return List
*/
public void setRoomone(String key,Room room) {
Jedis jedis = null;
try {
jedis = JedisPoolUtil.getInstance().getCocosJedis();
jedis.set(key.getBytes(), serialize(room));
jedis.expire(key, 24*3600);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (null != jedis)
jedis.close();
}
}

/**
* 保存房间列表信息到缓存
* @param uid
* @return List
*/
public void setRoomList(String kes,ArrayList<Room> roomlist) {
Jedis jedis = null;
try {
jedis = JedisPoolUtil.getInstance().getCocosJedis();
jedis.set(kes.getBytes(), serialize(roomlist));
jedis.expire(kes, 24*3600);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (null != jedis)
jedis.close();
}
}

时间: 2024-10-27 03:49:35

redis set、序列化存入缓存的相关文章

用Redis作Mysql数据库缓存

使用redis作mysql数据库缓存时,需要考虑两个问题: 1.确定用何种数据结构存储来自Mysql的数据; 2.在确定数据结构之后,用什么标识作为该数据结构的键. 直观上看,Mysql中的数据都是按表存储的;更微观地看,这些表都是按行存储的.每执行一次select查询,Mysql都会返回一个结果集,这个结果集由若干行组成.所以,一个自然而然的想法就是在Redis中找到一种对应于Mysql行的数据结构.Redis中提供了五种基本数据结构,即字符串(string).列表(list).哈希(hash

redis作为mysql的缓存服务器(读写分离) (转)

一.redis简介Redis是一个key-value存储系统.和Memcached类似,为了保证效率,数据都是缓存在内存中.区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步.在部分场合可以对关系数据库起到很好的补充作用.它提供了Java,C/C++(hiredis),C#,PHP,JavaScript,Perl,Object-C,Python,Ruby等客户端,使用很方便. 二.架构图<ignore_js_

(转)Memcache,Redis,MongoDB(数据缓存系统)方案对比与分析

Memcache,Redis,MongoDB(数据缓存系统)方案对比与分析 数据库表数据量极大(千万条),要求让服务器更加快速地响应用户的需求. 二.解决方案: 1.通过高速服务器Cache缓存数据库数据 2.内存数据库 (这里仅从数据缓存方面考虑,当然,后期可以采用Hadoop+HBase+Hive等分布式存储分析平台) 三.主流解Cache和数据库对比: 上述技术基本上代表了当今在数据存储方面所有的实现方案,其中主要涉及到了普通关系型数据库(MySQL/PostgreSQL),NoSQL数据

redis作为mysql的缓存服务器(读写分离)

一.redis简介 Redis是一个key-value存储系统.和Memcached类似,为了保证效率,数据都是缓存在内存中.区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步.在部分场合可以对关系数据库起到很好的补充作用.它提供了Java,C/C++(hiredis),C#,PHP,JavaScript,Perl,Object-C,Python,Ruby等客户端,使用很方便. 二.架构图 大致结构就是读写分

搭建redis给mysql做缓存

安装redis的前提是lnmp或者lamp的环境已经搭建完成. 安装redis 1.安装redis(或可以选择yum安装) 1 2 3 4 5 6 7 8 9 10 11 12 [[email protected] ~]# wget -c -t 0 http://download.redis.io/releases/redis-2.8.19.tar.gz [[email protected] ~]# mkdir /usr/local/redis [[email protected] ~]# ta

Redis的序列化

本文参考http://www.cnblogs.com/yaobolove/p/5632891.html Redis通过序列化存对象. 首先来了解为什么实现序列化接口? 当一个类实现了Serializable接口(该接口仅标记为接口,不包含任何方法定义),表示该类可以序列化.序列化的目的是将一个实现了Serializable接口的对象转化成一个字节序列,可以把该字节序列保存起来(例如:保存在一个文件夹里),以后可以随时将该序列恢复成原来的对象.甚至可以将该字节序列放到其他计算机上或者通过网络传输到

redis作为mysql的缓存服务器(读写分离,通过mysql触发器实现数据同步)

一.redis简介Redis是一个key-value存储系统.和Memcached类似,为了保证效率,数据都是缓存在内存中.区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步.在部分场合可以对关系数据库起到很好的补充作用.它提供了Java,C/C++(hiredis),C#,PHP,JavaScript,Perl,Object-C,Python,Ruby等客户端,使用很方便. 二.架构图<ignore_js_

Redis for Windows(C#缓存)配置文件详解

Redis for Windows(C#缓存)配置文件详解 前言 在上一篇文章中主要介绍了Redis在Windows平台下的下载安装和简单使用http://www.cnblogs.com/aehyok/p/3478282.html.当然我也在上一篇中指定过配置文件,并且修改其中的端口port.本文将主要来探讨redis强大的配置文件. 我现在使用的redis版本为2.6.首先奉上配置文件的源文件. # Redis configuration file example # Note on unit

Oracle Coherence中文教程十五:序列化分页缓存

序列化分页缓存 本章提供了大量的二进制数据的离堆缓存信息. 本章包含以下各节: 了解序列化分页缓存 分页缓存配置序列化 优化分区的高速缓存服务 配置高可用性 配置负载平衡和故障转移 支持巨大的缓存 15.1了解序列化分页缓存 Coherence提供高效巨额自动过期数据使用潜在的高延迟的存储机制,如磁盘文件缓存的明确支持.其优点包括支持更大的数据集可以管理在内存中,同时保留出了管理时序的一个有效的终止机制(和自动释放的资源管理有关的) ,该数据.最佳使用场景包括许多大型对象存储能力,很少访问XML