Java操作Redis完成特定的组合查询

来源:互联网 发布:汽车修理结算软件 编辑:程序博客网 时间:2024/05/21 09:20

对于频繁查询的数据,可以设置特定的查询业务,使用Redis的Set集合中的交集、并集、差集来实现指定的组合查询。

本文要实现查询产品Product中,品牌名称为“yh”并且产品分类为1的产品信息。

清空Redis数据库


Product实体类

package com.cb.entity;public class Product {private int id;private String name;//产品名称private String brand;//品牌private int category;//所属分类public Product(int id, String name, String brand, int category) {super();this.id = id;this.name = name;this.brand = brand;this.category = category;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getBrand() {return brand;}public void setBrand(String brand) {this.brand = brand;}public int getCategory() {return category;}public void setCategory(int category) {this.category = category;}@Overridepublic String toString() {return "Product [id=" + id + ", name=" + name + ", brand=" + brand + ", category=" + category + "]";}}

MyRedis类

package com.cb.test;import java.util.HashMap;import java.util.Iterator;import java.util.Map;import java.util.Set;import com.cb.entity.Product;import net.sf.json.JSONObject;import redis.clients.jedis.Jedis;public class MyRedis {public static void main(String[] args) {//查询业务,产品表final String PRODUCT_TABLE="PRODUCT_TABLE";//查询业务,品牌为yh的产品final String PRODUCT_TABLE_BRAND_yh="PRODUCT_TABLE_BRAND_yh";//查询业务,产品分类为1的产品final String PRODUCT_TABLE_CATEGORY_1="PRODUCT_TABLE_CATEGORY_1";Jedis jedis=new Jedis("192.168.0.202", 6379);Map<String,String> map=new HashMap<String,String>();Product p1=new Product(1,"product01","yh",1);map.put("1",JSONObject.fromObject(p1).toString());//首先将Product对象转为json对象,再将其转为json串jedis.sadd(PRODUCT_TABLE_BRAND_yh,"1" );//向Redis中Set集合PRODUCT_TABLE_BRAND_yh添加元素jedis.sadd(PRODUCT_TABLE_CATEGORY_1,"1" );//向Redis中Set集合PRODUCT_TABLE_CATEGORY_1添加元素Product p2=new Product(2,"product02","yh",2);map.put("2",JSONObject.fromObject(p2).toString());jedis.sadd(PRODUCT_TABLE_BRAND_yh,"2" );Product p3=new Product(3,"product03","qrzy",1);map.put("3",JSONObject.fromObject(p3).toString());jedis.sadd(PRODUCT_TABLE_CATEGORY_1,"3" );jedis.hmset("PRODUCT_TABLE", map);Set<String> sinterSet=jedis.sinter(PRODUCT_TABLE_BRAND_yh,PRODUCT_TABLE_CATEGORY_1);for(Iterator iter=sinterSet.iterator();iter.hasNext();){String idString=(String) iter.next();System.out.println("PRODUCT_TABLE_BRAND_yh与PRODUCT_TABLE_CATEGORY_1的交集元素="+idString);String productInfo=jedis.hget(PRODUCT_TABLE,idString);System.out.println(idString+"对应的商品信息:"+productInfo);}}}

run as --java application

查看Redis中相关信息如下图:


查看Eclipse的console中输出信息如下图:





















原创粉丝点击