package cn.itcast.travel.service.impl;
import cn.itcast.travel.dao.CategoryDao;
import cn.itcast.travel.dao.impl.CategoryDaoImpl;
import cn.itcast.travel.domain.Category;
import cn.itcast.travel.service.CategoryService;
import cn.itcast.travel.util.JedisUtil;
import redis.clients.jedis.Jedis;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
/**
* @author newcityman
* @date 2019/10/6 - 18:33
*/
public class CategoryServiceImpl implements CategoryService {
private CategoryDao category = new CategoryDaoImpl();
/**
* 查詢所有分類信息
* @return
*/
@Override
public List<Category> findAll() {
//1、從redis中查詢
//1.1、獲取jedis客戶端
Jedis jedis = JedisUtil.getJedis();
//1.2、可使用sortedset排序查詢
Set<String> categorys = jedis.zrange("category", 0, -1);
//2、判斷查詢的集合是否為空
List<Category> cs = null;
if(categorys==null || categorys.size()==0){
System.out.println("從數據庫中訪問數據。。。。");
//3、如果是空,需要從數據庫中查詢,並且存入redis中
//3.1、從數據庫中查詢
cs = category.findAll();
//3.2、將集合數據寫到redis緩存中
for (int i=0 ;i<cs.size();i++) {
jedis.zadd("category",cs.get(i).getCid(),cs.get(i).getCname());
}
}else {
//4、如果不為空,將set的數據存入到list中\
System.out.println("從redis中訪問數據");
cs= new ArrayList<Category>();
for (String name : categorys) {
Category category = new Category();
category.setCname(name);
cs.add(category);
}
}
return cs;
}
}