最近一直搞redis,redis支持的类型想必大家都清楚,我试着存储最简单的字符串,尝试着存取list和list<map<k,v>>,一下就是几种存储方式,其实都是简单的get,set,但是转化就需要自己去写一些序列化方法了。
存取String:
public void test1(HttpServletRequest request, HttpServletResponse response) {
//添加缓存(String)
jediscluster.set("key", "1000");
String string = jediscluster.get("<span style="font-family:KaiTi_GB2312;">key</span>");
System.out.println("缓存添加成功,value="+string);
//根据key删除缓存
jediscluster.del("key");
System.out.println("缓存删除成功");
}
存取List:
public void test2(HttpServletRequest request,
HttpServletResponse response) throws Exception {
// 获取数据库名
/*String dataBaseName = (String) request.getSession().getAttribute(
CloudContext.DatabaseName);*/
String dataBaseName ="itoo_freshmen";
List<Convention> list=null;
//查询redis,
try {
//从redis中取缓存数据,如果有直接返回缓存中的数据,没有的话查询数据库
String json = jediscluster.get("key");
if (!StringUtils.isEmpty(json)) {
//把json转换成List
list= JsonUtils.jsonToList(json, Convention.class);
}else{
//此处代码是查询数据库的代码,自己的业务逻辑
list=conventionBean.queryAllConvention(dataBaseName);
//返回结果之前,向缓存中添加数据(是否添加根据业务逻辑决定)
try {
//value是list,需要把list转换成json数据。
jediscluster.set("key", JsonUtils.objectToJson(list));
} catch (Exception e) {
e.printStackTrace();
}
}
存取List<map<k,v>>格式:和list类似,只是序列化的方法为如下代码:
public static <T> List<Map<Serializable,Serializable>> jsonToList1(String jsonData, Class<T> beanType) {
JavaType javaType = MAPPER.getTypeFactory().constructParametricType(List.class, beanType);
try {
List<Map<Serializable,Serializable>> list = MAPPER.readValue(jsonData, javaType);
return list;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
其实存取很简单,set,get.但是有些就为了能直接用我们用的格式,需要转换一下,就是这么简单。