SpringBoot+Redis整合
1.在pom.xml添加Redis依赖
org.springframework.boot spring-boot-starter-data-redis redis.clients jedis 2.9.0
2.在application.yml配置Redis
#引入Redis 安装在Linuxjedis : pool : host : 192.168.13.128 port : 6379 password: 123456 timeout: 10000 config : maxTotal: 100 maxIdle: 10 maxWaitMillis : 100000
3.在Resources添加redis.properties
#redis配置开始# Redis数据库索引(默认为0)spring.redis.database=0# Redis服务器地址spring.redis.host=192.168.13.128# Redis服务器连接端口spring.redis.port=6379# Redis服务器连接密码(默认为空)spring.redis.password=123456# 连接池最大连接数(使用负值表示没有限制)spring.redis.jedis.pool.max-active=1024# 连接池最大阻塞等待时间(使用负值表示没有限制)spring.redis.jedis.pool.max-wait=10000# 连接池中的最大空闲连接spring.redis.jedis.pool.max-idle=200# 连接池中的最小空闲连接spring.redis.jedis.pool.min-idle=0# 连接超时时间(毫秒)spring.redis.timeout=10000#redis配置结束spring.redis.block-when-exhausted=true
4.配置RedisConfiguration.java类,自动注入
@Configuration@PropertySource("classpath:redis.properties")public class RedisConfiguration { @Value("${spring.redis.host}") private String host; @Value("${spring.redis.port}") private int port; @Value("${spring.redis.timeout}") private int timeout; @Value("${spring.redis.jedis.pool.max-idle}") private int maxIdle; @Value("${spring.redis.jedis.pool.max-wait}") private long maxWaitMillis; @Value("${spring.redis.password}") private String password; @Value("${spring.redis.block-when-exhausted}") private boolean blockWhenExhausted; @Bean public JedisPool redisPoolFactory() throws Exception{ System.out.println("JedisPool注入成功!!"); System.out.println("redis地址:" + host + ":" + port); JedisPoolConfig jedisPoolConfig = new JedisPoolConfig(); jedisPoolConfig.setMaxIdle(maxIdle); jedisPoolConfig.setMaxWaitMillis(maxWaitMillis); // 连接耗尽时是否阻塞, false报异常,ture阻塞直到超时, 默认true jedisPoolConfig.setBlockWhenExhausted(blockWhenExhausted); // 是否启用pool的jmx管理功能, 默认true jedisPoolConfig.setJmxEnabled(true); JedisPool jedisPool = new JedisPool(jedisPoolConfig, host, port, timeout, password); return jedisPool; }}
5.配置Util类:序列化类SerializeUtil,参数静态类RedisConstants,Redis基础操作类RedisUtil
public class SerializeUtil { public static byte[] serialize(Object object) { ObjectOutputStream oos = null; ByteArrayOutputStream baos = null; try {//序列化 baos = new ByteArrayOutputStream(); oos = new ObjectOutputStream(baos); oos.writeObject(object); byte[] bytes = baos.toByteArray(); return bytes; } catch (Exception e) { } return null; } public static Object unserialize(byte[] bytes) { ByteArrayInputStream bais = null; try {//反序列化 bais = new ByteArrayInputStream(bytes); ObjectInputStream ois = new ObjectInputStream(bais); return ois.readObject(); } catch (Exception e) { } return null; } /** * 序列化 list 集合 * * @param list * @return */ public static byte[] serializeList(List list) throws Exception { if (list == null || list.size() == 0) { return null; } ObjectOutputStream oos = null; ByteArrayOutputStream baos = null; byte[] bytes = null; try { baos = new ByteArrayOutputStream(); oos = new ObjectOutputStream(baos); for (Object obj : list) { oos.writeObject(obj); } bytes = baos.toByteArray(); } catch (Exception e) { e.printStackTrace(); } finally { close(oos); close(baos); } return bytes; } /** * 反序列化 list 集合 * * @param * @return */ public static List unserializeList(byte[] bytes) throws Exception { if (bytes == null) { return null; } List
public class RedisConstants { public static final String spilt=":"; /** * redis库0 保存档案树 */ public static final Integer datebase0=0; /** * redis库1 保存档案树 */ public static final Integer datebase1=1; /** * 1.redis库2 保存档案表格 * 2.保存分页码 */ public static final Integer datebase2=2; /** * redis库3 保存档案image url */ public static final Integer datebase3=3; /** * 1.redis库4 保存手机验证码 * */ public static final Integer datebase4=4; /** * redis库5 保存身份认证信息 */ public static final Integer datebase5=5; /** * redis库6 记录身份认证次数 */ public static final Integer datebase6=6; /** * redis库7 记录重发次数 */ public static final Integer datebase7=7; /** * redis库8 记录任务参数 */ public static final Integer datebase8=8; public RedisConstants() { }}
@Component//@Slf4jpublic class RedisUtil { private static final Log log= LogFactory.getLog(RedisUtil.class); @Autowired private JedisPool jedisPool; public RedisUtil() { } /** ** 通过key获取储存在redis中的value *
** 并释放连接 *
* * @param key * @param indexdb 选择redis库 0-15 * @return 成功返回value 失败返回null */ public String get(String key,int indexdb) { Jedis jedis = null; String value = null; try { jedis = jedisPool.getResource(); jedis.select(indexdb); value = jedis.get(key); System.out.println(value); // log.info(value); } catch (Exception e) { log.error(e.getMessage()); } finally { returnResource(jedisPool, jedis); } return value; } /** ** 通过key获取储存在redis中的value *
** 并释放连接 *
* * @param key * @param indexdb 选择redis库 0-15 * @return 成功返回value 失败返回null */ public byte[] get(byte[] key,int indexdb) { Jedis jedis = null; byte[] value = null; try { jedis = jedisPool.getResource(); jedis.select(indexdb); value = jedis.get(key); } catch (Exception e) { log.error(e.getMessage()); } finally { returnResource(jedisPool, jedis); } return value; }}
6.在Controller添加操作类RedisController
@Controller@RequestMapping(value="/redis")public class RedisController{ @Autowired RedisUtil redisUtil; @Autowired AccountService accountService; @RequestMapping(value = "getRedis",method = RequestMethod.POST) @ResponseBody public ModelMap getRedis() throws Exception { //存储String// redisUtil.set("20182019","这是一条测试数据1", RedisConstants.datebase1);// Long resExpire = redisUtil.expire("20182018", 60, RedisConstants.datebase1);//设置key过期时间// String res = redisUtil.get("20182019", RedisConstants.datebase1);// String name = redisUtil.get("name", RedisConstants.datebase0);// //存储hash-map// Mapmap=new HashMap ();// map.put("a","a1");// map.put("b","a2");// map.put("c","a2");// redisUtil.hmset("dd",map,RedisConstants.datebase1);// List list111 = (List ) redisUtil.getList("testlist");// System.out.println(list111); //存储list serialize// List userList=accountService.selsetUserList();// System.out.println(userList);// for(UserVO user:userList){// redisUtil.lpush(RedisConstants.datebase1,"userList",user.getUserid()+"");// redisUtil.hset("user:"+user.getUserid(),"userId",user.getUserid()+"");// redisUtil.hset("user:"+user.getUsername(),"userName",user.getUsername()+"");// redisUtil.hset("user:"+user.getEmail(),"usereEail",user.getEmail()+"");//// } //获取List数据 String userId= redisUtil.hget("userList:"+1,"userId"); String userName= redisUtil.hget("userList:"+1,"userName"); String userEmail= redisUtil.hget("userList:"+1,"userEmail"); System.out.println(userId); System.out.println(userName); System.out.println(userEmail); return null; }}