【Java】配置redis 注解 @Async 实现异步调用方法 uuid 完整代码(个人梳理)

本文介绍了如何在Java中配置Redis,并利用@Async注解实现异步方法处理批量请求。在后台接收到请求后,生成唯一UUID,将处理结果以UUID为键存储在Redis中,前端通过轮询获取处理状态并展示。

【Java】配置redis 注解 @Async 实现异步方法 uuid 完整代码(个人梳理)

【Java】配置redis 注解 @Async 实现异步方法 uuid 完整代码(个人梳理)



前言

前台发送批处理请求到后台,后台接受请求,生成唯一值uuid,调用异步处理方法,将实时处理结果以uuid为key值存储到redis中, 前台接收到请求后不断以uuid轮询后台,后台将redis中处理结果返还前台进行页面展示。


一、配置redis.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://www.springframework.org/schema/beans" xmlns:p="http://www.springframework.org/schema/p"
	xmlns:context="http://www.springframework.org/schema/context"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
                        http://www.springframework.org/schema/beans/spring-beans-4.0.xsd  
                        http://www.springframework.org/schema/context  
                        http://www.springframework.org/schema/context/spring-context-4.0.xsd">
	<!-- Jedis线程 -->
	<bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
		<property name="maxIdle" value="20" />
		<property name="minIdle" value="5" />
		<property name="maxTotal" value="100" />
		<property name="testOnBorrow" value="true" />
	</bean>

	<!-- jedis客户端单机版 -->
	<bean id="jedisPool" class="redis.clients.jedis.JedisPool">
		<constructor-arg name="host" value="192.168.1.201"></constructor-arg>
		<constructor-arg name="port" value="自己的端口号"></constructor-arg>
		<constructor-arg name="password" value="自己的密码"></constructor-arg>
		<constructor-arg name="timeout" value="3000"></constructor-arg>
		<constructor-arg name="poolConfig" ref="jedisPoolConfig"></constructor-arg>
	</bean>

    <bean id="jedisClient" class="com.自己的包名.training.util.jedis.JedisClientSingleImpl"/>
</beans>

二、配置Jedis工具类

1.JedisClient

package com.自己的包名.training.util.jedis;

import java.util.Set;

/**
 * Created by Administrator 
 */
public interface JedisClient {
   
   
    /**
     * 获取缓存
     * @param key
     * @return
     */
    String get(String key);

    byte[] get(byte[] key);

    /**
     * 设置缓存
     * @param key
     * @param value
     * @return
     */
    String set(String key, String value);

    /**
     * 设置缓存
     * @param key
     * @param value
     * @param expire 过去时间
     * @return
     */
    String set(String key, String value, int expire);

    String set(byte[] key, byte[] value);

    String set(byte[] key, byte[] value, int expire);

    /**
     * 哈希 获取缓存
     * @param hkey
     * @param key
     * @return
     */
    String hget(String hkey, String key);

    /**
     * 哈希 设置缓存
     * @param hkey
     * @param key
     * @param value
     * @return
     */
    long hset(String hkey, String key, String value);

    /**
     *获取自增值
     * @param key
     * @return
     */
    long incr(String key);

    /**
     *设置有效期
     * @param key
     * @param second
     * @return
     */
    long expire(String key, int second);

    /**
     *获取有效期
     * @param key
     * @return
     */
    long ttl(String key);

    /**
     * 删除缓存
     * @param key
     * @return
     */
    long del(String key);

    long del(byte[] key);

    /**
     * 删除哈希 缓存
     * @param hkey
     * @param key
     * @return
     */
    long hdel(String hkey, String key);

    Set<byte[]> keys(String pattern);

    /**
     * 刷新数据
     */
    void flushDB();

    Long dbSize();
}

2.配置JedisClientSingleImpl

package com.自己的包名.training.util.jedis;

import org.springframework.beans.factory.annotation.Autowired;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;

import java.util.Set;

public class JedisClientSingleImpl implements JedisClient{
   
   

	@Autowired
	private JedisPool jedisPool;

	@Override
	public String get(String key) {
   
   
		String value = null;
		Jedis jedis = jedisPool.getResource();
		try{
   
   
			value = jedis.get(key);
		} catch (Exception e) {
   
   
			jedisPool.returnBrokenResource(jedis);
		} finally {
   
   
			jedisPool.returnResource(jedis);
		}
		return value;
	}

	@Override
	public byte[] get(byte[] key) {
   
   
		byte[] value = null;
		Jedis jedis = jedisPool.getResource();
		try{
   
   
			value = jedis.get(key);
		} catch (Exception e) {
   
   
			jedisPool.returnBrokenResource(jedis);
		} finally {
   
   
			jedisPool.returnResource(jedis);
		}
		return value;
	}

	@Override
	public String set(String key, String value) {
   
   
		Jedis jedis = jedisPool.getResource();
		try {
   
   
			value = jedis.set(key, value);
		}catch (Exception e) {
   
   
			jedisPool.returnBrokenResource(jedis);
		} finally {
   
   
			jedisPool.returnResource(jedis);
		}
		return value;
	}

	@Override
	public String set(String key, String value, int expire) 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值