> 文章列表 > Nosql与Redis两次实验回顾

Nosql与Redis两次实验回顾

Nosql与Redis两次实验回顾

文章目录

    • 1. 实验一
    • 2. 实验二

1. 实验一

一、实验目的

  1. 掌握redis常用命令
  2. 掌握5种数据类型

二、实验内容

  1. 添加键值存储登录用户的编号,该数据 10 分钟后失效

2.使用 list 类型在 redis 中实现以下操作:
1)添加 10 个员工的薪资
2)查看 list 数据长度
3)查看 index 为 3 的薪资
4)查看所有员工的薪资
5)将最左边的元素移除

  1. 使用 set 类型在 redis 中实现以下操作:
    1)添加 3 个班级的成绩,每个班级使用一个 set 描述,键为班级编号
    2)查看 3 个班级中所有不重复的成绩
    3)对比第一以及第二个班级的成绩,查看第二个班级相比于第一个班级有哪些差异化
    的成绩

  2. 使用 zset 类型实现以下操作:
    1)存储用户姓名以及积分
    2)根据积分由高到低排列所有用户的姓名
    3)查看姓名为 tom 的用户排名
    4)查看积分在 1000-5000 内的所有用户

信息截图:
Nosql与Redis两次实验回顾

Nosql与Redis两次实验回顾

Nosql与Redis两次实验回顾

2. 实验二

一、实验目的

  1. 熟练掌握redis及其常用方法
  2. 掌握5种数据类型
  3. 掌握单例模式
  4. 掌握redis连接池

二、实验内容

  1. 使用单例模式创建redis连接池对象
package com.igeek.entity;
/*单例
1.构造方法私有化,不允许外部创建对象
2.提供对象
3.通过方法的方式访问
*/
public class User {// 饿汉式:直接创建对象
//    private static User user=new User();
// 懒汉式:使用时创建对象private static User user;private User(){}public static User getUser(){if (user==null){return new User();}return user;}
package com.igeek.demo;import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;public class Demo6RedisPool {public static void main(String[] args) {JedisPoolConfig jedisPoolConfig=new JedisPoolConfig();jedisPoolConfig.setMaxTotal(100);jedisPoolConfig.setMaxIdle(60);JedisPool jedisPool=new JedisPool(jedisPoolConfig,"localhost",6379);Jedis jedis=jedisPool.getResource();jedis.close();}
}
  1. 通过方法的方式获取资源(jedis对象)及关闭资源
package com.igeek.demo.util;import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;public class JedisPoolDemoUtil {private static JedisPool jedisPool ;static {JedisPoolConfig jedisPoolConfig=new JedisPoolConfig();jedisPoolConfig.setMaxTotal(100);jedisPoolConfig.setMaxIdle(60);jedisPool =new JedisPool(jedisPoolConfig,"localhost",6379);}public static Jedis getSource(){return jedisPool.getResource();}}
  1. 添加键值存储当前登录用户
    1)该数据 10 分钟后失效并打印当前剩余时间
    2)用户为自己姓名+学号后三位
package com.igeek.demo;import com.igeek.demo.util.JedisPoolDemoUtil;
import redis.clients.jedis.Jedis;public class Demo7 {public static void main(String[] args) {Jedis jedis= JedisPoolDemoUtil.getSource();jedis.select(4);jedis.set("moyufeng","221");String str=jedis.get("moyufeng");System.out.println("学号后三位:"+str);jedis.expire("moyufeng",600);Long moyufeng = jedis.ttl("moyufeng");System.out.println("当前剩余时间:"+moyufeng);jedis.close();}
}

Nosql与Redis两次实验回顾
Nosql与Redis两次实验回顾

  1. 在数据库1中保存班级信息,
    1) value中包含专业名、班级名称、班级人数
package com.igeek.demo;import com.igeek.demo.util.JedisPoolDemoUtil;
import redis.clients.jedis.Jedis;import java.util.List;public class Demo10 {public static void main(String[] args) {Jedis jedis= JedisPoolDemoUtil.getSource();jedis.select(1);jedis.mset("major","SoftwareEngineering","class_name","ClassTwo","class_size","33");List<String> ls = jedis.mget("major","class_name","class_size");System.out.println(ls);jedis.close();}
}

Nosql与Redis两次实验回顾
Nosql与Redis两次实验回顾

  1. 在数据库2中保存学生姓名学号信息
    1)新增5条数据
    2)打印数据,并将自己姓名及学号展示在第一行
package com.igeek.demo;import com.igeek.demo.util.JedisPoolDemoUtil;
import redis.clients.jedis.Jedis;import java.util.*;public class Demo11 {public static void main(String[] args) {Jedis jedis= JedisPoolDemoUtil.getSource();jedis.select(2);Map<String,String> map=new HashMap<>();map.put("moyufeng","192210712224");map.put("zhangsan","182210712227");map.put("lisi","182210712221");map.put("wangwu","182210712228");jedis.hmset("student",map);Map<String, String> map1= jedis.hgetAll("student");Set<String> set=map1.keySet();Iterator<String> iterator=set.iterator();while (iterator.hasNext()){String  str= iterator.next();System.out.println(str+":"+map1.get(str));}jedis.close();}

Nosql与Redis两次实验回顾
Nosql与Redis两次实验回顾
6. 在数据库3中保存学生成绩:
1)添加 5 个同学的成绩
2)按成绩高低打印学生成绩及姓名
3)分别打印 5 个同学中所有不重复的成绩以及重复成绩
4)分别打印及格同学姓名和不及格同学姓名
5)查看自己在所有同学中排名

package com.igeek.demo;import com.igeek.demo.util.JedisPoolDemoUtil;
import redis.clients.jedis.Jedis;import java.util.HashMap;
import java.util.Map;
import java.util.Set;public class Demo12 {public static void main(String[] args) {Jedis jedis = JedisPoolDemoUtil.getSource();jedis.select(3);Map<String,Double> scores=new HashMap<>();scores.put("moyufeng",98.0);scores.put("lisi",77.0);scores.put("tom",77.0);scores.put("mack",97.0);scores.put("liuliu",58.0);jedis.zadd("score",scores);Set<String> score = jedis.zrevrange("score", 0, -1);for (String s : score) {System.out.println(s+"的成绩:"+scores.get(s));}String[] temp = new String[score.size()];score.toArray(temp);System.out.println("\\n重复的同学成绩:");for(int i=0;i<temp.length-1;i++){Double score1 = scores.get(temp[i]);Double score2 = scores.get(temp[i+1]);if (Math.abs(score1-score2)<1e-6){System.out.println(temp[i]+"的成绩:"+score1);System.out.println(temp[i+1]+"的成绩:"+score2);}}System.out.println("\\n及格学生:");for (String s : score) {if (scores.get(s)>=60){System.out.println(s);}}System.out.println("\\n不及格学生:");for (String s : score) {if (scores.get(s)<60){System.out.println(s);}}Long rank = jedis.zrevrank("score", "moyufeng");System.out.println("\\n自己在同学中的排名是:"+"第"+(rank+1)+"名");}
}

Nosql与Redis两次实验回顾

Nosql与Redis两次实验回顾
7. 控制台遍历输出数据库2中所有key

package com.igeek.demo;import com.igeek.demo.util.JedisPoolDemoUtil;
import redis.clients.jedis.Jedis;import java.util.Set;public class demo13 {public static void main(String[] args) {Jedis jedis = JedisPoolDemoUtil.getSource();System.out.println("\\n数据库2中所有的key:");jedis.select(2);Set<String> students1 = jedis.hkeys("student");for (String s : students1) {System.out.println(s);}}
}

Nosql与Redis两次实验回顾
Nosql与Redis两次实验回顾

  1. 控制台打印当前redis中cpu信息
package com.igeek.demo;import com.igeek.demo.util.JedisPoolDemoUtil;
import redis.clients.jedis.Jedis;public class demo14 {public static void main(String[] args) {Jedis jedis = JedisPoolDemoUtil.getSource();System.out.println("\\n当前CPU信息:"+jedis.info());}
}

Nosql与Redis两次实验回顾

Nosql与Redis两次实验回顾

Nosql与Redis两次实验回顾