Java与Memcached连接(四):JDBC连接数据库,转换数据结果并使用Memcached遍历结果集。

使用list代替数据库例子:

public class MainTest {
	@Test
	public void test14() {
		//缓存一个集合通过memcached
		try {
			MemcachedClient mcc = new MemcachedClient(new InetSocketAddress("192.168.1.102",11211));
			System.out.println("Connection Successful");
			
			List<String> emps = new ArrayList<String>();
			emps.add("Tom");
			emps.add("Jack");
			emps.add("SCOTT");
			emps.add("SMITH");
			
			mcc.set("emps", 900, emps);
			System.out.println(mcc.get("emps"));
			mcc.shutdown();
			
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	@Test
	public void test15() {
		//获取缓存memcached
		try {
			MemcachedClient mcc = new MemcachedClient(new InetSocketAddress("192.168.1.102",11211));
			System.out.println("Connection Successful");
			
			List<String> emps =  (List<String>) mcc.get("emps");
			for(String emp : emps) {
				System.out.println(emp);
			}
			mcc.shutdown();
			
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}
上述程序:直接通过缓存去取值
优点:提高工作效率
与数据库连接
通过JDBC查询出对应的结果,将结果缓存到Memcached当中,来进行查找,
查找结果集,而不是每一次都和数据库连接,大大提升数据库的工作效率.

实例:
1.新建类Emp(如果想把对象写入到缓存中,对象得实现序列化)

public class Emp implements Serializable {

	private static final long serialVersionUID = -2984725466734507448L;
	private int empno;
	private String ename;
	private String job;
	
	public Emp() {
		
	}
	
	public Emp(int empno, String ename, String job) {
		super();
		this.empno = empno;
		this.ename = ename;
		this.job = job;
	}

	public int getEmpno() {
		return empno;
	}

	public void setEmpno(int empno) {
		this.empno = empno;
	}

	public String getEname() {
		return ename;
	}

	public void setEname(String ename) {
		this.ename = ename;
	}

	public String getJob() {
		return job;
	}

	public void setJob(String job) {
		this.job = job;
	}
}

2.新建读取测试类ReadTest.java

public class ReadTest {
	
	@Test
	public void test1() {
		//读取数据库中emp表的数据 然后将数据封装到集合中 最后将集合存储到缓存里
		try {
			//动态加载驱动
			Class.forName("com.mysql.jdbc.Driver");
			//创建数据库连接对象
			Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/hp_memcached", "root", "zzj6660534");
			//执行sql语句的对象
			Statement stmt = conn.createStatement();
			//执行SQL语句,将结果赋值给结果集
			ResultSet rs = stmt.executeQuery("select empno,ename,job from emp");
			List<Emp> emps = new ArrayList<Emp>();
			while (rs.next()) {
				//取得数据
				System.out.println(rs.getInt("empno")+" "+rs.getString("ename")+" "+rs.getString("job"));
				//结果集的数据封装到对象里,直接在对象里操作
				Emp emp = new Emp(rs.getInt("empno"),rs.getString("ename"),rs.getString("job"));
				//将数据放到集合里
				emps.add(emp);
			}
			
			System.out.println(emps.size());
			//定义Memcached对象
			MemcachedClient mcc = new MemcachedClient(new InetSocketAddress("192.168.1.102",11211));
			Future fo = mcc.set("emps", 900, emps);
			System.out.println("缓存状态:"+fo.get());
			
			
			mcc.shutdown();
			rs.close();
			stmt.close();
			conn.close();
			
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}
	
	@Test
	//遍历结果集
	public void test2() throws Exception{
		//获取缓存数据(服务器缓存不需要访问数据库,效率高)
		MemcachedClient mcc = new MemcachedClient(new InetSocketAddress("192.168.1.102",11211));
		List<Emp> emps = (List<Emp>) mcc.get("emps");
		//System.out.println(emps.size());
		for(Emp emp : emps) {
			System.out.println(emp.getEmpno()+" "+emp.getEname()+" "+emp.getJob());
		}
		
		mcc.shutdown();
	}
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值