6.Jedis例子

6.Jedis例子_第1张图片


JedisUtil.java

package com.gf.redisservice.service;

import org.springframework.stereotype.Service;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

@Service
public class JedisUtil {
	public Jedis getJedis() {
		//声明Redis连接
		Jedis jedis = null;
		//声明创建连接池的配置类
		JedisPoolConfig config = new JedisPoolConfig();
		//配置最大连接数
		config.setMaxTotal(30);
		//设置最大空闲数量
		config.setMaxIdle(10);
		//设置每次释放的数目
		config.setNumTestsPerEvictionRun(100);
		//设置释放连接的扫描时间
		config.setTimeBetweenEvictionRunsMillis(30000);
		//设置连接最小空闲时间
		config.setMinEvictableIdleTimeMillis(30000);
		//设置redis连接在空闲多久后进行释放,当实际的空闲大于设置的时间,且空闲数量大于最大空闲数量时
		config.setSoftMinEvictableIdleTimeMillis(10000);
		//设置连接时的最大等待时间
		config.setMaxWaitMillis(30000);
		//设置是否检测 连接的有效性,默认false
		config.setTestOnBorrow(true);
		//是否检查 空闲连接的有效性,默认false
		config.setTestWhileIdle(true);
		//连接池中的连接使用完毕后是否让它阻塞,默认true(阻塞,继续等待)  false:报异常
		config.setBlockWhenExhausted(false);
		
		//根据配置信息创建连接池
		//参数1:配置信息类              参数二:redis集群中的某个服务的IP    参数三:端口
		JedisPool jd = new JedisPool(config, "127.0.0.1",6380);
		//从连接池中获取一个连接
		jedis=jd.getResource();
		return jedis;
	}
}


QueryGoodsController.java

package com.gf.redisservice.controller;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import com.gf.redisservice.pojo.Goods;
import com.gf.redisservice.service.GoodsService;
import com.gf.redisservice.service.JedisUtil;

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

@RestController
public class QueryGoodsController {

	@Autowired
	private GoodsService gs;
	
	@Autowired
	private JedisUtil ju;
	
	
	@GetMapping("/getgoods")
	public String getAllGoods() {
		//先开启redis缓存
		//获取和redis的连接
		Jedis jedis = ju.getJedis();
		//选择库
		jedis.select(1);
		//先上redis库中获取数据
		String data = jedis.hget("goods", "foods");//不一定获取到
		System.out.println("从redis中读取到的数据:"+data);
		if(data==null) {
			//为空说明redis缓存中没有数据,此时需要到数据库中查询获取
			List<Goods> goods=gs.getAllGoods();
			//把集合转成json形式
			data = JSONArray.fromObject(goods).toString();
			//存入redis缓存中
			jedis.hset("goods", "foods", data);
		}
		//设置数据在缓存中的有效时间:
		jedis.expire("goods", 60*60*24);
		return data;
	}
}

你可能感兴趣的:(Linux和Redis)