Redis的二八定律

常用命令

1、setex key 有效时间 value ----------意思就是添加并设置该键值对的存活时间

2、mset key1 value1 key2 value2 key3 value3 ....... -----------------意思就是一次性添加多个键值对

3、getset oldKey newValue -------------意思就是重新设置已存在的key的值,返回被覆盖的旧值

4、getrange key startIndex endIndex -----------意思就是获取该key对应的值的指定子字符串(起始索引从0开始)

5、mget key1 key2...... -------------意思就是一次性获取多个见对应的值

6、append key newStr ----------意思就是给已存在的字符串追加新子字符串

7、strlen key -------计算指定字符串的长度

8、expire key 10 -------意思就是设置该key的字符串的过期时间,经过10秒自动删除(过期)

9、ttl key --------查看该key的有效时长

10、ping ----------测试当前连接是否正常

11、dbsize ------------返回当前数据库中key的总数目

12、info -------查看当前连接的服务器信息和统计

13、flushdb ------------清空当前选择的数据库中所有数据

14、flushall ---------清空所有数据库中的数据。

接着给大家分享一下redis它是如何在实际项目中进行应用的,如有不妥,希望各位能够留言指正,谢谢。

缓存的应用:网站访问数据的特点大多数呈现在"二八定律":80%的业务访问集中在20%的数据上。这时为了减轻数据的压力和提高网站的数据访问速度,则可以使用缓存机制来优化网站。

下面我就直接给大家上代码了,这是我之前测试redis缓存中的数据是否能够访问成功,而写的一点测试代码,献丑了。

  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     // @Override
 26     // 异步加载查询所有分类的方法:
 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     @Override
 34     // 缓存技术查询所有分类的方法:
 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     @Override
 72     // 添加分类:
 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             // 删除存放分类数据的key
 82             jedis.del("category_list");
 83         } catch (Exception e) {
 84             e.printStackTrace();
 85         } finally {
 86             JedisUtils.closeJedis(jedis);
 87         }
 88     }
 89
 90     @Override
 91     // 根据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     @Override
 99     // 编辑分类数据:
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 }

时间: 2024-07-28 14:59:47

Redis的二八定律的相关文章

管理学定律五:二八定律与木桶理论

1.二八定律 1.1 来源 1897年,意大利经济学者帕累托偶然注意到19世纪英国人的财富和收益模式.在调查取样中,发现大部份的财富流向了少数人手里.同时,他还从早期的资料中发现,在其他的国家,都发现有这种微妙关系一再出现,而且在数学上呈现出一种稳定的关系.于是,帕累托从大量具体的事实中发现:社会上20%的人占有80%的社会财富,即:财富在人口中的分配是不平衡的. 同时,人们还发现生活中存在许多不平衡的现象.因此,二八定律成了这种不平等关系的简称,不管结果是不是恰好为80%和20%(从统计学上来

蜜汁二八定律,成为顶级程序员真的有那么难吗?

在软件开发领域,二八定律同样适用.头部 20%的研发人员或许就是许多人眼中的"alpha"程序员,甚至是领导者.开拓者.潮流引领者等,比如发明 B 语言的 Thompson.发明 C 语言的丹尼斯·里奇.以及发明万维网的伯纳斯李,这些是谷歌.阿里巴巴.腾讯.百度和华为更喜欢的求职者. 反之,80%的程序员构成了软件开发行业的大部分,这些程序员大多毕业于一所还可以的学校,专业是计算机相关方向,掌握了足够的 JavaScript.Java.C ++ 和 Python 等基础知识,然后去了银

二八定律在性能测试中的应用

在生活中,做任何事情之前,最好先确定一个目标. 同样的,在我们日常做性能测试之前,最好把本次预期性能指标确定下来,没有预期指标的衡量,将无法评估测试结果数据是否满足预期. 比如以下这样的指标: 在实际工作中呢,最理想的情况是,开发/产品/项目经理已经提前确定好了性能指标,然后把指标明确的告诉你. 但是理想很丰满,现实很骨感,根据我多年的性能测试经验来看,大多数提性能需求的人,大多是不太懂性能的,所以根本不会有指标的,或者虽然有指标,但是是拍脑袋决定的,没有任何依据. 所以作为一个测试人员,很有必

redis演练(6) redis复制(主备模式)

redis是一款面向分布式的Nosql产品,天生对主备模式有很好的支持,而且配置一套完整的主备模式,非常简单.针对redis,主备模式配置非常简单,但线上意义重大. 主要内容 1.CAP理论 2.简单redis的复制原理 3.redis replaction相关配置参数解析 4.配置星型模型主备模式 5.配置有向无欢模型主备模式 1.研磨redis的复制与集群概念 redis的复制与集群,刚开始我把两者闹了个误会,在不断深入学习过程中及时改正了. 简单区分一下. redis复制:可以理解为把re

为什么说Redis是单线程的以及Redis为什么这么快!

一.前言 近乎所有与Java相关的面试都会问到缓存的问题,基础一点的会问到什么是"二八定律".什么是"热数据和冷数据",复杂一点的会问到缓存雪崩.缓存穿透.缓存预热.缓存更新.缓存降级等问题,这些看似不常见的概念,都与我们的缓存服务器相关,一般常用的缓存服务器有Redis.Memcached等,而笔者目前最常用的也只有Redis这一种. 如果你在以前面试的时候还没有遇到过面试官问你<为什么说Redis是单线程的以及Redis为什么这么快!>,那么你看到这

为什么说Redis是单线程的以及Redis为什么这么快!(转)

文章转自https://blog.csdn.net/chenyao1994/article/details/79491337 一.前言 近乎所有与Java相关的面试都会问到缓存的问题,基础一点的会问到什么是"二八定律".什么是"热数据和冷数据",复杂一点的会问到缓存雪崩.缓存穿透.缓存预热.缓存更新.缓存降级等问题,这些看似不常见的概念,都与我们的缓存服务器相关,一般常用的缓存服务器有Redis.Memcached等,而笔者目前最常用的也只有Redis这一种. 如果

Redis是单线程的,但Redis为什么这么快?

近乎所有与Java相关的面试都会问到缓存的问题,基础一点的会问到什么是"二八定律".什么是"热数据和冷数据",复杂一点的会问到缓存雪崩.缓存穿透.缓存预热.缓存更新.缓存降级等问题,这些看似不常见的概念,都与我们的缓存服务器相关,一般常用的缓存服务器有Redis.Memcached等,而笔者目前最常用的也只有Redis这一种. 如果你在以前面试的时候还没有遇到过面试官问你<为什么说Redis是单线程的以及Redis为什么这么快!>,那么你看到这篇文章的时

《为什么说Redis是单线程的以及Redis为什么这么快!》

为什么说Redis是单线程的以及Redis为什么这么快! 一.前言 近乎所有与Java相关的面试都会问到缓存的问题,基础一点的会问到什么是“二八定律”.什么是“热数据和冷数据”,复杂一点的会问到缓存雪崩.缓存穿透.缓存预热.缓存更新.缓存降级等问题,这些看似不常见的概念,都与我们的缓存服务器相关,一般常用的缓存服务器有Redis.Memcached等,而笔者目前最常用的也只有Redis这一种. 如果你在以前面试的时候还没有遇到过面试官问你<为什么说Redis是单线程的以及Redis为什么这么快!

人生的三个定律,左右人生命运的黄金定律

 1.借钱定律.当你遇到困难时,可以开口借钱的人不会超过10个. 2.联系定律.经常保持联系的人不会超过30个,其中包括第一条中的10个. 3.铭记定律.一生中能记住名字并且偶尔联系的人不会超过60个,其中包括第二条中的30个 世界很大,圈子很小,珍惜你拥有的,放弃你奢求的. 为什么7个人做1个人的工作反而更忙? 为什么优秀的人在一起却变成了乌合之众? 为什么合情合理的提升下属却招来更多不必要的事端? 为什么"贫者越贫,富者越富"? 为什么总是越怕犯错却偏偏犯错? 为什么一条道走到