Redis进阶(六)使用Java操作Redis

前言

      本章学习使用Java操作Redis

方法

1.准备工作

既然是使用Java来操作redis,那么需要引入对应的jar包,如果你是使用maven的话,需引入如下依赖:

<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>3.0.1</version>
</dependency>

如果是普通的工程,则需要下载如下的jar包:

http://central.maven.org/maven2/redis/clients/jedis/3.0.1/

2.测试基本功能

所谓基本功能,就是之前我们的五种数据类型的基本操作,和命令是差不多的,这里以其中最简单的string举例说明:

新建java工程,引入对应的jar包:

 这里讲解基本的set、get、del以及mset和mget

编写如下的测试类进行测试:

package cn.edu.ccut;

import java.util.ArrayList;
import java.util.List;

import org.junit.Test;

import redis.clients.jedis.Jedis;

public class RedisTest {

	@Test
	public void testRedis(){
		//获取redis实例
		Jedis jedis = new Jedis("192.168.1.103", 6379);
		//string类型新增、修改
		jedis.set("test01", "123");
		//string类型获取
		System.out.println(jedis.get("test01"));
		//string类型删除
		jedis.del("test01");
		//string批量新增、修改和获取
		jedis.mset(new String [] {"test02","456","test03","789"});
		System.out.println(jedis.mget(new String [] {"test02","test03"}));
	}
}

测试结果如下:

其他类型的操作也是类似的,方法和命令完全一致。这一点学过命令的同学可以完全放心。 

示例

我们使用Redis的时候需要检测数据库中的新增操作,从而将指定的数据存入Redis中。

这里我们直接手动的建立几个User对象用于进行试验。

首先我们需要一个User类用于操作:

package cn.edu.ccut;

public class User {
	private String id;
	private String username;
	private String password;
	
	public User(String id, String username, String password) {
		super();
		this.id = id;
		this.username = username;
		this.password = password;
	}
	
	public User() {
		super();
		// TODO Auto-generated constructor stub
	}

	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	@Override
	public String toString() {
		return "User [id=" + id + ", username=" + username + ", password=" + password + "]";
	}
}

编写如下测试类:
 

package cn.edu.ccut;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;

import org.apache.commons.collections.map.HashedMap;
import org.junit.Test;

import net.sf.json.JSONObject;
import redis.clients.jedis.Jedis;

public class RedisTest {

	@Test
	public void testRedis(){
		//获取redis实例
		Jedis jedis = new Jedis("192.168.1.103", 6379);
		
		Map<String,String> map = new HashMap<>();
		String id1 = UUID.randomUUID().toString().replace("-", "");
		User user1 = new User(id1, "admin", "admin");
		JSONObject json1 = JSONObject.fromObject(user1);
		map.put(id1, json1.toString());
		String id2 = UUID.randomUUID().toString().replace("-", "");
		User user2 = new User(id2, "jwang", "jwang");
		JSONObject json2 = JSONObject.fromObject(user2);
		map.put(id2, json2.toString());
		
		jedis.hset("Users", map);
	}
}

上述操作就是将我们两个User对象的实例存入了Redis中,在Redis中可看到如下内容:

这个时候,如果我们需要找username为admin的数据怎么办呢?

我们可以设计一个业务常量,将符合条件的对象的id存入redis中,那么具体该这样做:

全部测试代码如下:

package cn.edu.ccut;

import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.UUID;
import org.junit.Test;

import net.sf.json.JSONObject;
import redis.clients.jedis.Jedis;

public class RedisTest {
	//该常量代表查询user中username为admin的用户
	final static String USER_USERNAME_ADMIN = "USER_USERNAME_ADMIN";
	@Test
	public void testRedis(){
		//获取redis实例
		Jedis jedis = new Jedis("192.168.1.103", 6379);
		Set<String> set = new HashSet<>();
		Map<String,String> map = new HashMap<>();
		String id1 = UUID.randomUUID().toString().replace("-", "");
		set.add(id1);
		User user1 = new User(id1, "admin", "admin");
		JSONObject json1 = JSONObject.fromObject(user1);
		map.put(id1, json1.toString());
		String id2 = UUID.randomUUID().toString().replace("-", "");
		User user2 = new User(id2, "jwang", "jwang");
		JSONObject json2 = JSONObject.fromObject(user2);
		map.put(id2, json2.toString());
		
		jedis.hset("Users", map);
		jedis.sadd(USER_USERNAME_ADMIN, set.toArray(new String[set.size()]));
		
		//获取
		Set<String> smembers = jedis.smembers(USER_USERNAME_ADMIN);
		List<String> hmget = jedis.hmget("Users", smembers.toArray(new String[smembers.size()]));
		for (String string : hmget) {
			JSONObject jsonObject=JSONObject.fromObject(string);
			User user=(User)JSONObject.toBean(jsonObject, User.class);
			System.out.println(user);
		}
	}
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值