1 package com.itheima.store.service.impl;2 3 import java.sql.SQLException;4 import java.util.List;5 6 import com.itheima.store.dao.CategoryDao;7 import com.itheima.store.dao.impl.CategoryDaoImpl;8 import com.itheima.store.domain.Category;9 10 /**11  * 分类模块:业务层的实现类。12  * */13 14 import com.itheima.store.service.CategoryService;15 import com.itheima.store.utils.BeanFactory;16 import com.itheima.store.utils.DBUtil;17 import com.itheima.store.utils.JedisUtils;18 19 import net.sf.json.JSONArray;20 import redis.clients.jedis.Jedis;21 22 @SuppressWarnings("all")23 public class CategoryServiceImpl implements CategoryService {24 25     // @Override26     // 异步加载查询所有分类的方法:27     public List<Category> findAllCategory() throws Exception {28         // CategoryDao dao = new CategoryDaoImpl();29         CategoryDao dao = (CategoryDao) BeanFactory.getBean("CategoryDao");30         return dao.findAllCategory();31     }32 33     @Override34     // 缓存技术查询所有分类的方法:35     /*36      * 为了提升程序的性能,在这里将加入缓存的技术(redis),将获取到的分类数据放进缓存中,当用户下次再访问时,直接从缓存中获取数据,从而37      * 减少了和数据库的交互。38      */39     public String findAllCategoryAjax() throws Exception {40         // 创建jedis对象41         Jedis jedis = null;42         try {43             // 获得jedis对象44             jedis = JedisUtils.getJedis();45             // 首先获取缓存中是否已经有分类数据46             String categoryList = jedis.get("category_list");47             if (categoryList == null) {48                 // 说明缓存中没有数据,则去数据库查询49                 System.out.println("---------数据库中的数据-----------");50                 // CategoryDao dao = new CategoryDaoImpl();51                 CategoryDao dao = (CategoryDao) BeanFactory.getBean("CategoryDao");52                 List<Category> list = dao.findAllCategory();53                 // 将list转成JSON格式的数据54                 JSONArray json = JSONArray.fromObject(list);55                 // 将JSON数据放进缓存中,并将查询到的数据返回给页面56                 jedis.set("category_list", json.toString());57                 return jedis.get("category_list");58             } else {59                 // 如果缓存已经有数据,则将缓存中的数据返回给页面60                 System.out.println("--------------缓存中的数据-----------------");61                 return categoryList;62             }63         } catch (Exception e) {64             e.printStackTrace();65         } finally {66             JedisUtils.closeJedis(jedis);67         }68         return null;69     }70 71     @Override72     // 添加分类:73     public void addCategory(Category category) throws Exception {74         CategoryDao dao = (CategoryDao) BeanFactory.getBean("CategoryDao");75         dao.addCategory(category);76         // 注意:在修改了category表后,因为缓存中的数据还没有更新,前台页面的数据也没有更新,所以一旦改变了缓存中的数据后记得将缓存清空77         // 清空缓存:78         Jedis jedis = null;79         try {80             jedis = JedisUtils.getJedis();81             // 删除存放分类数据的key82             jedis.del("category_list");83         } catch (Exception e) {84             e.printStackTrace();85         } finally {86             JedisUtils.closeJedis(jedis);87         }88     }89 90     @Override91     // 根据cid查询分类数据:92     public Category findByCid(String cid) throws Exception {93         CategoryDao dao = (CategoryDao) BeanFactory.getBean("CategoryDao");94         Category category = dao.findByCid(cid);95         return category;96     }97 98     @Override99     // 编辑分类数据:
100     public void editCategory(Category category) throws Exception {
101         CategoryDao dao = (CategoryDao) BeanFactory.getBean("CategoryDao");
102         dao.editCategory(category);
103         // 清空缓存:
104         Jedis jedis = null;
105         try {
106             jedis = JedisUtils.getJedis();
107             // 删除存放分类数据的key
108             jedis.del("category_list");
109         } catch (Exception e) {
110             e.printStackTrace();
111         } finally {
112             JedisUtils.closeJedis(jedis);
113         }
114     }
115
116     @Override
117     //删除分类数据:
118     /**
119      * 注意:因为分类表和商品表有着外检约束的关系,所以在删除分类数据之前,
120      *         要先删除该分类所关联的所有商品数据或将该分类所关联的所有商品的外键改变,则牵扯到事务。
121      * */
122     public void deleteCategory(String cid) throws Exception {
123         Jedis jedis = null;
124         try {
125             //开启事务:
126             DBUtil.startTransaction();
127             CategoryDao dao = (CategoryDao) BeanFactory.getBean("CategoryDao");
128             //首先根据当前cid修改商品表中的外键为null:
129             dao.updateByCid(cid);
130             dao.deleteCategory(cid);
131             //提交事务:
132             DBUtil.commit();
133             // 清空缓存:
134             jedis = JedisUtils.getJedis();
135             // 删除存放分类数据的key
136             jedis.del("category_list");
137         } catch (Exception e) {
138             //回滚事务:
139             DBUtil.rollBack();
140             e.printStackTrace();
141         } finally {
142             JedisUtils.closeJedis(jedis);
143         }
144     }
145
146 }

转载于:https://www.cnblogs.com/wangchaoyuana/p/7545247.html

Redis的二八定律相关推荐

  1. 吴恩达,45岁生日快乐!提出著名二八定律:80%数据+20%模型=更好的AI

    吴恩达发推称,「大家为自己送上最好的礼物就是,观看这个视频观看并提出自己的见解.让大家的工作从以模型为中心向以数据为中心的AI转变.」 在这个视频中,吴恩达提出了著名二八定律:80%的数据+20%的模 ...

  2. 如何更好地利用“二八定律”提升SEO优化效果?

    二八定律是19世纪末20世纪初意大利经济学家巴莱多发现的,它意为"任何一组东西中,最重要的只占其中一小部分,约20%,其余80%尽管是多数,却是次要的".满足前提条件:任何一组东西 ...

  3. 蝴蝶效应 青蛙现象 鳄鱼法则 马太效应 木桶理论 二八定律(巴莱多定律) 破窗理论 羊群效应

    1.蝴蝶效应:上个世纪70年代,美国一个名叫洛伦兹的气象学家在解释空气系统理论时说,亚马逊雨林一只蝴蝶翅膀偶尔振动,也许两周后就会引起美国得克萨斯州的一场龙卷风. 蝴蝶效应是说,初始条件十分微小的变化 ...

  4. 蝴蝶效应,青蛙现象,鳄鱼法则,鲇鱼效应,羊群效应,刺猬法则,手表定律,破窗理论,二八定律,木桶理论,马太效应,这些你都明白吗?...

    蝴蝶效应,青蛙现象,鳄鱼法则,鲇鱼效应,羊群效应,刺猬法则,手表定律,破窗理论,二八定律,木桶理论,马太效应,这些你都明白吗?1.蝴蝶效应:上个世纪70年代,美国一个名叫洛伦兹的气象学家在解释空气系统 ...

  5. 吴恩达提出了著名的二八定律

    国际最权威的ML学者之一吴恩达(Andrew Ng)在他45岁生日当天发推文称 ,"大家为自己送上最好的礼物就是,观看这个视频观看并提出自己的见解.让大家的工作从以模型为中心向以数据为中心的 ...

  6. 青蛙现象、鳄鱼法则、鲇鱼效应、羊群效应、刺猬法则、手表定律、破窗理论、二八定律、木桶理论、马太效应

    1.蝴蝶效应:上个世纪70年代,美国一个名叫洛伦兹的气象学家在解释空气系统理论时说,亚马逊雨林一只蝴蝶翅膀偶尔振动,也许两周后就会引起美国得克萨斯州的一场龙卷风.     蝴蝶效应是说,初始条件十分微 ...

  7. 【永远的二八定律】☆【永远的二八定律】

    富人交朋友:穷人走亲戚, 富人学管理:穷人学手艺. 富人爱创业:穷人爱打工, 富人喜投资:穷人守财奴. 富人在外跑市场:穷人在家看电视: 富人考虑发工资:穷人专注领薪水. 富人看趋势做事:穷人看喜好做 ...

  8. 蝴蝶效应,鳄鱼法则,罗森塔尔效应,帕金森定律,手表定律,破窗理论,晕轮效应 ,霍桑效应,二八定律,木桶理论,马太效应,踢猫效应…………

    蝴蝶效应: 上个世纪70年代,美国一个名叫洛伦兹的气象学家在解释空气系统理论时说,亚马逊雨林一只蝴蝶翅膀偶尔振动,也许两周后就会引起美国得克萨斯州的一场龙卷风. 蝴蝶效应是说,初始条件十分微小的变化经 ...

  9. 二八定律、木桶理论等

    [蝴蝶效应][青蛙现象][鳄鱼法则] [鲇鱼效应] [羊群效应] [刺猬法则] [手表定律] [破窗理论][二八定律][木桶理论] [马太效应] [鸟笼逻辑] [责任分散效应][帕金森定律] [晕轮效 ...

最新文章

  1. 矿用巷道巡检机器人_一种井下自动巡检机器人系统
  2. Cesium中级教程9 - Advanced Particle System Effects 高级粒子系统效应
  3. 设计模式之观察者模式学习笔记
  4. springboot mybatis 事务_SpringBoot 下 Mybatis 的缓存
  5. mysql 5.7 内存占用_MySQL 5.7 内存使用计算
  6. VC获得本机网络连接状态
  7. 详解 ManualResetEvent
  8. unity3d的下载与安装
  9. shiro+springMVC文档
  10. 图片格式WEBP全面解析
  11. 跨域单点登录解决方案
  12. 线性表学习归纳总结一
  13. 捋一捋DDR内存相关的各种频率
  14. 【重磅】百度智能运维工程架构
  15. FS2712A单片机可替换松翰SN8P2711
  16. 深度学习必备三种基本绘图技能
  17. 用阿里云托管服务器怎么托管_云托管使企业更具竞争力的8个原因
  18. 关于可达性分析算法的概述
  19. 一篇搞懂场景测试(Test Scenario Analysis)
  20. 双线性插值算法推导及代码实现

热门文章

  1. 我自学python的路-我的python后端学习路线
  2. python有道翻译接口-【Python】Python利用有道翻译开发API应用示例
  3. python split(), os.path.split()和os.path.splitext()函数的区别
  4. (转)SSL/TLS 漏洞“受戒礼”,RC4算法关闭
  5. 安装python3.7和PyCharm专业版
  6. 面试7 GC机制中如何判断一个对象是否任在使用
  7. 解决窗口属性兼容性问题的一些函数
  8. 17. javacript高级程序设计-错误处理与调试
  9. 摩托罗拉指控苹果iPhone 4S和iCloud侵犯6项专利
  10. ASP.NET 购物车