设为首页 收藏本站
查看: 644|回复: 0

[经验分享] SSH框架和Redis的整合(2)

[复制链接]

尚未签到

发表于 2017-12-21 08:45:28 | 显示全部楼层 |阅读模式
5. 添加功能的实现
  新建一个Action:RClasAction,实现向Redis添加课程数据,并同步到MySQL。
  

package com.school.action;  

  

import java.util.ArrayList;  

import java.util.HashMap;  

import java.util.List;  

  

import org.springframework.beans.factory.annotation.Autowired;  

  

import com.opensymphony.xwork2.ActionSupport;  

import com.school.entity.Clas;  

import com.school.redisclient.RedisService;  

import com.school.redisclient.RedisTool;  

import com.school.service.ClasService;  

  
@SuppressWarnings(
"serial")  

public>
  
@Autowired
  

private>
  
RedisService rs
= RedisTool.getRedisService();  
List
<Clas> claslist = new ArrayList<Clas>();  

  

private Clas clas;  

public Clas getClas() {  

return clas;  
}   
  

public void setClas(Clas Clas) {  

this.clas = Clas;  
}
  

  

public String execute(){  
saveClas(clas);
  

return SUCCESS;  
}
  

  
@SuppressWarnings({
"rawtypes", "unchecked" })  

private void saveClas(Clas c){  
List
<String>>
// clas:id  
int num =>  
int>  
rs.rightPushList("clas:id", String.valueOf(id));
  
// clas:count
  
int count = Integer.parseInt(rs.get("clas:count"));
  
rs.set("clas:count", String.valueOf(count+1), -1);
  
// 增加
  
HashMap hashmap = new HashMap();
  
hashmap.put("ID", String.valueOf(id));
  
hashmap.put("NAME", clas.getName());
  
hashmap.put("COMMENT", clas.getComment());
  
rs.addHash("clas:" +>  
// 同步到MySQL
  
       >  
}
  

  
}
  

  clas:id是一个List类型的Key-Value,记录了所有的课程ID,取出最后一个ID,再+1,作为增加的课程的ID,同时clas:count的值也要+1。使用addHash()方法向Redis添加了一个Hash类型的Key-Value(也就是一门课程):
  

        @SuppressWarnings({ "unchecked", "rawtypes" })  

public synchronized void addHash(K key, HashMap map){  
redisTemplate.opsForHash().putAll(key, map);
  
}
  

  同时将该门课程增加到MySQL。

6. 删除功能的实现
  新建一个Action:RClasDeleteAction,实现删除Redis的课程数据,并同步到MySQL。
  

package com.school.action;  

  

import org.springframework.beans.factory.annotation.Autowired;  

  

import com.opensymphony.xwork2.ActionSupport;  

import com.school.redisclient.RedisService;  

import com.school.redisclient.RedisTool;  

import com.school.service.ClasService;  

  
@SuppressWarnings(
"serial")  

public>

  
@Autowired
  

private>

  
RedisService rs
= RedisTool.getRedisService();  

  

private int>

public int getId(){  

return>
}
  

public void setId(int>
this.id=id;  
}
  

  

public String execute(){  
deleteClas(id);
  

// 同步到MySQL
  
       >  
return SUCCESS;
  
}
  

  
private void deleteClas(int>  
// 删除
  
rs.del("clas:" +>  
// clas:count
  
int count = Integer.parseInt(rs.get("clas:count"));
  
rs.set("clas:count", String.valueOf(count-1), -1);
  
// clas:id
  
rs.delListItem("clas:id", String.valueOf(id));
  
}
  

  
}
  

  直接删除clas:id,再将clas:count的值-1,这两步比较简单,复杂的是从clas:id中删除该课程的ID,使用了delListItem()方法来实现:
  

        @Override  

public synchronized void delListItem(K key, V value){  
redisTemplate.opsForList().remove(key,
1, value);  
}
  

  redisTemplate.opsForList().remove()方法类似于LREM命令。最后在MySQL中也删除相同的课程。

7. 修改功能的实现
  新建一个Action:RClasUpdateAction,实现删除Redis的课程数据,并同步到MySQL。
  

package com.school.action;  

  

import java.util.HashMap;  

  

import org.springframework.beans.factory.annotation.Autowired;  

  

import com.opensymphony.xwork2.ActionSupport;  

import com.school.entity.Clas;  

import com.school.redisclient.RedisService;  

import com.school.redisclient.RedisTool;  

import com.school.service.ClasService;  

  
@SuppressWarnings(
"serial")  

public>

  
@Autowired
  

private>

  
RedisService rs
= RedisTool.getRedisService();  

  

private Clas clas;  

public Clas getClas() {  

return clas;  
}
  

public void setClas(Clas clas) {  

this.clas = clas;  
}
  

  
@SuppressWarnings({
"unchecked", "rawtypes" })  

public String execute(){  
HashMap hashmap
= new HashMap();  
hashmap.put(
"ID", String.valueOf(clas.getId()));  
hashmap.put(
"NAME", clas.getName());  
hashmap.put(
"COMMENT", clas.getComment());  
rs.putHash(
"clas:" + clas.getId(), hashmap);  

// 同步到MySQL
  
       >  
return SUCCESS;
  
}
  

  
}
  

  使用了putHash()方法来更新:
  

        @SuppressWarnings({ "rawtypes", "unchecked" })  
@Override
  

public synchronized void putHash(K key, HashMap map){  
redisTemplate.boundHashOps(key).putAll(map);
  
}
  

  同时在MySQL做相同的更新操作。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-426335-1-1.html 上篇帖子: Redis Pipeline原理分析 下篇帖子: Redis缓存以及Redis集群的简单使用
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表