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

网站主持人长沙建网站的

网站主持人,长沙建网站的,搜索词热度查询,wordpress特殊插件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.hkea.cn/news/14582609/

相关文章:

  • 做网站哪个公司好 快选宁陵建站宝湖南天辰建设责任公司网站
  • 潍坊优化网站排名食品网站设计
  • 通过主机名访问网站做网站导航站的注意点
  • seo是东莞企业网站排seo免费挣钱最快的游戏
  • 网站标题栏做多大网站建设工作都包括哪些方面
  • 网站建设简介电话石家庄效果图设计
  • 广州市建设工程安监站网站福州建设项目管理公司
  • 个人是否可以申请持有网站网站快速排名是怎么做的
  • 湛江免费制作网站杭州营销型网站建设工作室
  • 县科协微网站建设网站建设与规划的文献
  • 网站留言如何做的如何网上注销自己的公司
  • 怎么建自己公司网站宣传推广策略有哪些
  • 临安区做网站的公司深圳企业公司有哪些
  • 天河门户网站建设北京百姓网
  • 怎么做网站的排名网站建设项目团队
  • 小程序拉新推广平台百度快照优化的优势是什么
  • 招聘网站官网邵阳竞价网站建设设计
  • 网站建设炫彩图片网站域名费一年交多少
  • 番号网站怎么做图片生成器在线
  • 企业建站电话多少免费的网站怎么做
  • 宁夏做网站好的公司上海网站设计建设公司
  • 外贸进出口业务流程优化网站设计有哪些方法
  • 东莞如何建设网站制作平台创建网站成功案例
  • 落实网站建设培训班精神花钱想贷款结果成了做网站
  • 桂林模板网站建设佛山设计网站公司吗
  • 医院网站可以自己做吗网页设计的特点有哪些
  • 创意上海专业网站建设专业的设计网站
  • 创新设计江苏网站建设seo优化
  • 镇江网站制作公司免费的建手机网站
  • 个人网站模板设计步骤快速网站推广首页排名