简单利用Redis实现草稿箱功能
我这边图方便直接把接收到的对象存为String,大家也可以用json存储,取的时候在转成json就行了。此处使用jedis。
具体实现的思路很简单,就是利用redis将用户想要暂存的数据放入到redis中,等到用户在此编辑的时候从redis中获取。初学redis的小伙伴可以看一下我的思路。此处用redis+redisUtils会更方便,这边使用jdeis是为了直观体现。具体的参数信息也写在注释里了。
1.jedis依赖
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>3.1.0</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.3.2</version>
</dependency>
3.实现方法
/**
* @author ShiSan
* @description 保存草稿
**/
//AkzlConfigZbjbxx 自定义实体类
//key 自定义key
//自定义key过期时间 expireTime :24L * 60 * 60 * 1000(一天)
public void saveDrafts(String key, AkzlConfigZbjbxx akzlConfigZbjbxx, long expireTime) {
//登录 host:127.0.0.1 port:6379
Jedis jedis = new Jedis(host, port);
jedis.auth(String.valueOf(password));
//设置过期时间是一天
jedis.set(key, JSON.toJSONString(akzlConfigZbjbxx),SetParams.setParams().px(expireTime));
jedis.close();
}
/**
* @author ShiSan
* @description 获取草稿
**/
public String getDrafts(String key) {
//登录
Jedis jedis = new Jedis(host, port);
jedis.auth(String.valueOf(password));
//判断key是否存在
String value = "";
if (Boolean.TRUE.equals(jedis.exists(key))) {
value = jedis.get(key);
//随用随删
jedis.del(key);
}
jedis.close();
return value;
}
/**
* @author ShiSan
* @description 删除草稿(用户在退出时,会有是否保留草稿的功能选项,不保留就把缓存中的数据清除)
*/
public void deleteDrafts(String key){
Jedis jedis = new Jedis(host, port);
jedis.auth(String.valueOf(password));
jedis.del(key);
jedis.close();
}