当前位置: 首页 > news >正文

班级网站模板素材网站优化每天更新得是首页更新吗

班级网站模板素材,网站优化每天更新得是首页更新吗,长春财经学院学费多少,网站开发进阶实训报告Redis数据库测试实验 实验要求 1.新建一张user表#xff0c;在表内插入10000条数据。 2.①通过jdbc查询这10000条数据#xff0c;记录查询时间。 ②通过redis查询这10000条数据#xff0c;记录查询时间。 3.①再次查询这一万条数据#xff0c;要求根据年龄进行排序#…Redis数据库测试实验 实验要求 1.新建一张user表在表内插入10000条数据。 2.①通过jdbc查询这10000条数据记录查询时间。   ②通过redis查询这10000条数据记录查询时间。 3.①再次查询这一万条数据要求根据年龄进行排序mysql和redis各实现一次。 4.上面排序后的前5人可进行抽奖每人有一次抽奖机会抽奖奖品随意设计抽奖方式通过redis实现。 1.基本准备 先下载好jar包 在根目录下新建lib文件夹并将两个jar包移动到lib文件夹中 在IDEA中右键点击lib选择“添加为库” 两个jar包显示可展开即为成功。 2.mysql建立用户表user CREATE TABLE user (id int primary key AUTO_INCREMENT,name varchar(10) COMMENT 姓名,age int COMMENT 年龄 ) ; 3.为mysql和redis添加数据 1获取数据库连接并为mysql添加数据 //获取数据库连接public Connection getConnection() {System.out.println(获取数据库连接);String url jdbc:mysql://localhost:3306/homework;String username root;String password 123456;Connection conn null;try {conn DriverManager.getConnection(url, username, password);} catch (SQLException e) {e.printStackTrace();}return conn;} //mysql添加数据public void addMysql() {System.out.println(mysql添加数据);Connection conn null;PreparedStatement ps null;conn getConnection();try {Random random new Random();for (int i 0; i 10000; i) {String name Name i;int age random.nextInt(100) 1;ps conn.prepareStatement(INSERT INTO user (name,age) VALUES (?,?));ps.setString(1, name);ps.setInt(2, age);ps.executeUpdate();}} catch (SQLException e) {e.printStackTrace();} finally {try {ps.close();conn.close();} catch (SQLException e) {throw new RuntimeException(e);}}} 2将Mysql数据转储到redis中 // 将Mysql数据库数据转储到Redispublic void addRedis() {System.out.println(redis添加数据);Connection conn null;PreparedStatement ps null;ResultSet rs null;conn getConnection();try {ps conn.prepareStatement(select * from user);rs ps.executeQuery();Jedis jedis new Jedis(localhost, 6379);while (rs.next()) {String id String.valueOf(rs.getInt(id));String name rs.getString(name);int age rs.getInt(age);// 使用有序集合存储学生ID和年龄以便进行排序jedis.zadd(UserByAge, age, id);// 存储学生数据jedis.hset(user: id, name, name);jedis.hset(user: id, age, String.valueOf(age));}jedis.close();} catch (SQLException e) {e.printStackTrace();} finally {try {rs.close();ps.close();conn.close();} catch (SQLException e) {throw new RuntimeException(e);}}} 4.实现mysql和redis查询并比较查询时间 1mysql查询 //mysql查询public void queryDataWithJDBC() {Connection conn null;PreparedStatement ps null;ResultSet rs null;conn getConnection();try {ps conn.prepareStatement(select * from user);rs ps.executeQuery();while (rs.next()) { // System.out.println(ID: rs.getInt(id) , Name: rs.getString(name) , Age: rs.getInt(age));}} catch (SQLException e) {e.printStackTrace();} finally {try {rs.close();ps.close();conn.close();} catch (SQLException e) {throw new RuntimeException(e);}}} 2redis查询 //redis查询public void queryDataWithRedis() {Jedis jedis new Jedis(localhost, 6379);SetString keys jedis.keys(user:*);for (String key : keys) {MapString, String user jedis.hgetAll(key); // System.out.println(Key: key , Value: user);}jedis.close();} 3记录并比较查询时间 // 比较查询时间public void compareTime() {// 通过jdbc查询这10000条数据记录查询时间long start System.currentTimeMillis();queryDataWithJDBC();long end System.currentTimeMillis();System.out.println(JDBC查询时间: (end - start) ms);// 通过redis查询这10000条数据记录查询时间start System.currentTimeMillis();queryDataWithRedis();end System.currentTimeMillis();System.out.println(Redis查询时间: (end - start) ms);} 5.根据年龄进行排序 1mysql排序 //mysql实现排序public void queryAndSortDataWithJDBC() {Connection conn null;PreparedStatement ps null;ResultSet rs null;conn getConnection();try {ps conn.prepareStatement(SELECT * FROM user ORDER BY age);rs ps.executeQuery();System.out.println(mysql实现排序);while (rs.next()) {System.out.println(ID: rs.getInt(id) , Name: rs.getString(name) , Age: rs.getInt(age));}} catch (SQLException e) {e.printStackTrace();} finally {try {rs.close();ps.close();conn.close();} catch (SQLException e) {throw new RuntimeException(e);}}} 2redis排序 //redis实现排序public void queryAndSortDataWithRedis() {Jedis jedis new Jedis(localhost, 6379);ListTuple users jedis.zrangeWithScores(UserByAge, 0, -1);System.out.println(redis实现排序);for (Tuple user : users) {String id user.getElement();double age user.getScore();String name jedis.hget(user: id, name);System.out.println(ID: id , Name: name , Age: (int) age);}jedis.close();} 6.抽奖功能 //抽奖public void lottery() {Jedis jedis new Jedis(localhost, 6379);// 添加奖品String[] prizes {锅, 碗, 瓢, 盆, 金元宝};for (String prize : prizes) {jedis.sadd(prizes, prize);}// 年龄最小的前5人System.out.println(年龄最小的前5人);ListTuple youngestUsers jedis.zrangeWithScores(UserByAge, 0, 4);for (Tuple user : youngestUsers) {String id user.getElement();double age user.getScore();String name jedis.hget(user: id, name);String prize jedis.srandmember(prizes);System.out.println(恭喜 name 获得了抽奖机会奖品是 prize);}jedis.close();} 7.主函数 public static void main(String[] args) throws SQLException {JedisHomework jedisHomework new JedisHomework();jedisHomework.addMysql();jedisHomework.addRedis();jedisHomework.compareTime();jedisHomework.queryAndSortDataWithJDBC();jedisHomework.queryAndSortDataWithRedis();jedisHomework.lottery();} Redis中的缓存穿透、雪崩、击穿的原因以及解决方案 1.缓存击穿 1产生原因 在高并发访问下某个热点key在缓存中过期后大量并发请求同时查询数据库导致数据库压力激增的现象。 2解决方案 合理的过期时间将热点数据设置为永远不过期 使用互斥锁基于redis or zookeeper实现互斥锁等待第一个请求构建完缓存之后再释放锁进而其他请求才能通过该key访问数据。 2.缓存雪崩 1产生原因 由于缓存服务器在同一时间大面积失效或宕机导致大量请求直接打到数据库瞬间引发数据库压力激增甚至导致数据库崩溃。 2解决方案 事前redis 高可用主从哨兵redus cluster避免全盘崩溃 事中本地缓存 hystrix 限流降级避免 MySQL被打死。同时设置合理的过期时间。 事后redis持久化一旦重启自动从磁盘上加载数据快速回复缓存数据。 3.缓存穿透 1产生原因 查询一个一定不存在的数据由于缓存是不命中时需要从数据库查询查不到数据则不写入缓存这将导致这个不存在的数据每次请求都要到数据库去查询进而给数据库带来压力。 缓存穿透很有可能是黑客攻击所为黑客通过发送大量的高并发的无法响应的请求给服务器由于请求的资源根本就不存在DB数据库就很容易被打垮了。 2解决方案 缓存空对象对查询结果为空的情况也将其缓存起来并设置合理的过期时间。 参数校验在接收到请求之前进行参数校验判断请求参数是否合法。 布隆过滤器判断请求的参数是否存在于缓存或数据库中。 4.三者的异同 相同点大量的请求在redis上得不到响应那么就会导致这些请求会直接去访问DB导致DB的压力瞬间变大而卡死或者宕机。 不同点缓存击穿是某个热点过期后导致大量请求访问DB 缓存雪崩是多个key过期后导致大量请求访问DB 缓存穿透是不存在的key收到大量请求每次请求都要到DB查询。
http://www.dnsts.com.cn/news/179173.html

相关文章:

  • 北京 广告 手机网站ai智能ppt制作
  • 北京建设大学官方网站广告设计公司宣传文案
  • 浙江 网站建设wordpress怎么设置访问
  • 页面模板功能网站做优化得话从哪里优化
  • wordpress建站吧一般使用的分辨率显示密度是多少?
  • 杭州设计 公司 网站建设WordPress门户系统
  • 深圳有没有什么网站做家务的男人网站
  • 网站建设犀牛云开网店详细步骤流程
  • 哪个域名注册网站好做公司网站的多少钱
  • 门户网站素材致力于邯郸网站建设制作服务_使众多客户将网站转化为网络市场营销.
  • dw做的网站怎么发布到网上做网站的公司排行
  • 如何查询网站关键词密度中国建设工程造价信息网站
  • dede网站文章同步淘宝购物网站
  • 三联网站建设价格重庆做企业网站
  • 长沙做电商网站设计网站菜单导航
  • 网站建设 团队介绍网站收录差
  • 网站教程dwwordpress图片按钮
  • 重庆市建设施工安全网公司网站做优化
  • 网站排名监控工具北京公司注销
  • 自己做的网站怎么绑定域名怎么样做国外推广网站
  • 网站的地图要怎么做建旅游网站的意义
  • 网站平台建设技术报告wordpress 分类关键词
  • 英语网站建设微信推广网站建设
  • 企业手机网站建设推广长沙品牌设计公司
  • c 转网站开发如何做网站推广的策略
  • 网站界面用什么做的ui设计网站开发
  • it网站建设网络营销总结及体会
  • 上海做网站好的公司有哪些如何建网站费用多少
  • 主机做网站服务器注册公司没有场地怎么办
  • wordpress定时网站地图php与 wordpress