java操作redis队列

场景:
    1.获取一个实体对象;
    2.使用fastjson将实体对象转换为json字符串;
    3.将json字符串写入队列
    4.从队列中取出json字符串
    5.将json字符串转换为对象
本例主要jar包:
    jedis-2.9.0.jar;fastjson-1.2.41.jar
     
本例三个类:
    1. 实体类CityBean.java

package com.zbz.redis.bean;

import java.io.Serializable;
import com.alibaba.fastjson.annotation.JSONField;

/**
 * 城市信息
 * 
 * @ClassName: CityBean
 * @date: 2018-12-26 下午12:33:18
 */
public class CityBean implements Serializable {

	private static final long serialVersionUID = 4443714978780088961L;
	
	/** 城市名称 */
	String CITY_NAME;
	/** 电话区号 */
	String AREA_CODE;
	/** 邮政编码 */
	String POSTAL_CODE;
	/** 行政区划代码 */
	String AREA_NUMBER;
	/** 城市描述 */
	String DESCRIBE;

	@JSONField(name = "CITY_NAME")
	public String getCITY_NAME() {
		return CITY_NAME;
	}

	public void setCITY_NAME(String cITY_NAME) {
		CITY_NAME = cITY_NAME;
	}

	@JSONField(name = "AREA_CODE")
	public String getAREA_CODE() {
		return AREA_CODE;
	}

	public void setAREA_CODE(String aREA_CODE) {
		AREA_CODE = aREA_CODE;
	}

	@JSONField(name = "POSTAL_CODE")
	public String getPOSTAL_CODE() {
		return POSTAL_CODE;
	}

	public void setPOSTAL_CODE(String pOSTAL_CODE) {
		POSTAL_CODE = pOSTAL_CODE;
	}

	@JSONField(name = "AREA_NUMBER")
	public String getAREA_NUMBER() {
		return AREA_NUMBER;
	}

	public void setAREA_NUMBER(String aREA_NUMBER) {
		AREA_NUMBER = aREA_NUMBER;
	}

	@JSONField(name = "DESCRIBE")
	public String getDESCRIBE() {
		return DESCRIBE;
	}

	public void setDESCRIBE(String dESCRIBE) {
		DESCRIBE = dESCRIBE;
	}

	@Override
	public String toString() {
		
		return "CityBean [CITY_NAME=" + CITY_NAME
				+",AREA_CODE=" + AREA_CODE
				+",POSTAL_CODE=" + POSTAL_CODE
				+",AREA_NUMBER=" + AREA_NUMBER
				+",DESCRIBE=" + DESCRIBE
				+"]";
	}
}


    2. json转换类BeanUtils.java

package com.zbz.redis.utils;

import com.alibaba.fastjson.JSON;
/**
 *  
 * @ClassName: BeanUtils
 * @date: 2018-12-26 下午12:44:31
 */
public class BeanUtils {
	
	/**实体对象转换为json字符串*/
	public static String toJSONString(Object city){
		String jsonStr = "";
		if(city!=null){
			jsonStr = JSON.toJSONString(city);
		}
		return jsonStr;
	}
	/**将json字符串转换为指定对象*/
	public static <T> T parseObject(String text, Class<T> clazz) {
        return JSON.parseObject(text, clazz);
    }

}


    3. redis操作类SimpleRedisClient.java

package com.zbz.redis.client;

import org.apache.commons.lang3.StringUtils;
import redis.clients.jedis.Jedis;
import com.zbz.redis.bean.CityBean;
import com.zbz.redis.utils.BeanUtils;

/**
 *  
 * @ClassName: SimpleRedisClient
 * @date: 2018-12-26 下午12:53:00
 */
public class SimpleRedisClient {

	/**队列名称*/
	public static final String cityQueue= "CITY_QUEUE";
	/**redis服务器IP*/
	public static final String redisIp= "127.0.0.1";
	/**redis服务器端口*/
	public static final int redisPort= 6379;
	
	/**测试主函数
	 * @throws InterruptedException */
	public static void main(String[] args) throws InterruptedException{
		
		System.out.println("测试开始......");
		writeRedisQueue();
		System.out.println("主线程休眠10秒");
		Thread.sleep(10000);
		String jsonStr = ReadRedisQueue();
		parseObject(jsonStr);
		System.out.println("测试结束......");
	}
	
	public static void writeRedisQueue(){
		
		System.out.println("测试写redis队列开始......");
		String cityStr = getCity(getCityBean());
		System.out.println("写入队列的数据: ");
		System.out.println(cityStr);
		
		/** 1.创建jedis实例,构造函数传入redis的IP地址和端口号 */
		Jedis jedis = new Jedis(redisIp,redisPort);
		/**2.字符串写入队列中*/
		jedis.lpush(cityQueue,cityStr);
		/** 3.关闭连接 */
		jedis.close();
		System.out.println("测试写redis队列结束......");
	}
	
	public static String ReadRedisQueue() {
		System.out.println("测试读redis列开始......");
		
		/** 1.创建jedis实例,构造函数传入redis的IP地址和端口号 */
		Jedis jedis = new Jedis(redisIp,redisPort);
		/** 2.在队列中读取数据*/
		String result = jedis.lpop(cityQueue);
		/** 3.关闭连接 */
		jedis.close();
		System.out.println("打印从队列获取的数据:");
		System.out.println(result);
		System.out.println("测试读redis列结束......");
		return result;
	}
	
	/**json字符串转换为对象*/
	public static void parseObject(String jsonStr){
		if(StringUtils.isBlank(jsonStr)) return ;
		CityBean cityBean = BeanUtils.parseObject(jsonStr, CityBean.class);
		System.out.println("输出从字符串转换后的对象:");
		System.out.println(cityBean.toString());
	}
	
	/**获取城市json字符串*/
	public static String getCity(CityBean city){
		
		return BeanUtils.toJSONString(city);
	}
	
	/**获取一个城市对象*/
	public static CityBean getCityBean(){
		CityBean cityBean = new CityBean();
		cityBean.setCITY_NAME("厦门");
		cityBean.setAREA_CODE("0592");
		cityBean.setPOSTAL_CODE("361000");
		cityBean.setAREA_NUMBER("350200");
		cityBean.setDESCRIBE("适合居住");
		return cityBean;
	}
}

测试:
    1.在redis-server安装目录双击启动redis-server.exe服务端
    2.在redis-cli安装目录双击启动redis-cli.exe客户端
    3.使用 Llen CITY_QUEUE 命令,在redis-cli客户端查看队列长度变化

提示:
    redis队列,写入数据时,队列存在则往队列写数据,不存在就创建再往队列写;
    取数据时,取出一个数据,队列数据就少一个,最后一个取出后,队列会消失,
    当队列没数据时去取数据,会返回null.
截图:
    1.redis-server截图
    
    2.redis-cli.exe截图
    
    3.控制台输出日志 

    

以上,TKS.

展开阅读全文

没有更多推荐了,返回首页