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

【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 =
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot是一个开发框架,它简化了使用Spring框架进行Java应用程序开发的过程。Redis是一个内存数据结构存储系统,它可以用作缓存和数据库。@Cacheable是Spring框架的注解之一,它可以用于缓存方法的返回值。 要在Spring Boot中使用Redis和@Cacheable来实现缓存,首先需要配置Redis连接。可以通过在`application.properties`或`application.yml`文件中添加以下配置来完成: ```yaml spring.redis.host=127.0.0.1 spring.redis.port=6379 ``` 接下来,在需要缓存的方法上使用`@Cacheable`注解。例如,假设我们有一个名为`getUserById`的方法,用于根据用户ID获取用户信息: ```java @Service public class UserService { @Cacheable(value = "users", key = "#id") public User getUserById(Long id) { // 从数据库或其他数据源获取用户信息 return userRepository.findById(id); } } ``` 在上述示例中,`@Cacheable`注解用于将方法的返回值缓存起来。其中,`value`属性指定了缓存的名称,`key`属性指定了缓存的键。在这个例子中,缓存的名称为"users",缓存的键为方法的参数id。 最后,需要在Spring Boot应用程序的启动类上添加`@EnableCaching`注解来启用缓存功能: ```java @SpringBootApplication @EnableCaching public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } ``` 以上就是使用Spring Boot、Redis和@Cacheable实现缓存的基本步骤。通过配置Redis连接,使用`@Cacheable`注解来标记需要缓存的方法,并在启动类上添加`@EnableCaching`注解来启用缓存功能,可以轻松地实现缓存功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值