生活随笔
收集整理的這篇文章主要介紹了
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;}@Overridepublic 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.
總結
以上是生活随笔為你收集整理的java操作redis队列的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。