Redis生成订单号

本文介绍了如何在Java应用中配置Redis来生成唯一的订单号。首先展示了`application-dev.yml`的Redis配置,接着详细讲解了自定义的Redis配置类,然后阐述了Redis工具类的实现,最后说明了如何通过这些工具生成订单号。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. Redis配置

application-dev.yml

spring:
  redis:
    host: 47.115.43.234
    port: 6379
    password: 2njv2EIXmLj5DjdH
    database: 0
    jedis:
      pool:
        max_total: 500   #控制一个pool可分配多少个jedis实例,用来替换max-active,如果是jedis 2.4以后用该属性
        #max-active: 10   #连接池最大连接数(负值表示没有限制)
        max-wait: 3000   #连接池最大阻塞等待时间(负值表示没有限制)
        max-idle: 10     #连接池最大空闲连接数
        min-idle: 1      #连接汉最小空闲连接数
        max_wait_millis: 1000 #最大建立连接等待时间。如果超过此时间将接到异常。设为-1表示无限制
        min_evictable_idle_time_millis: 300000 #连接的最小空闲时间 默认1800000毫秒(30分钟)
        num_tests_per_eviction_run: 3    #每次释放连接的最大数目,默认3
        time_between_eviction_runs_millis: 30000  #逐出扫描的时间间隔(毫秒) 如果为负数,则不运行逐出线程, 默认-1
        test_on_borrow: true  #是否在从池中取出连接前进行检验,如果检验失败,则从池中去除连接并尝试取出另一个
        test_while_idle: true #在空闲时检查有效性, 默认false
    timeout: 60          #连接超时时间(毫秒)

2. Redis配置类

import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.PropertyAccessor;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cache.annotation.CachingConfigurerSupport;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.connection.RedisPassword;
import org.springframework.data.redis.connection.RedisStandaloneConfiguration;
import org.springframework.data.redis.connection.jedis.JedisClientConfiguration;
import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.RedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;
import redis.clients.jedis.JedisPoolConfig;

/**
 * Redis配置类
 *
 * @author 
 * @date 2021/6/24
 * @since JDK 11
 */
@Configuration
@EnableCaching
public class RedisConfig extends CachingConfigurerSupport {

    private static final Logger log = LoggerFactory.getLogger(RedisConfig.class);

    // 连接信息
    @Value("${spring.redis.host}")
    private String host;
    @Value("${spring.redis.port}")
    private int port;
    @Value("${spring.redis.password}")
    private String password;
    @Value("${spring.redis.database}")
    private int database;
    @Value("${spring.redis.timeout}")
    private int timeout;

    // 连接池信息
    @Value("${spring.redis.jedis.pool.max_total}")
    private int maxTotal;
    @Value("${spring.redis.jedis.pool.max-idle}")
    private int maxIdle;
    @Value("${spring.redis.jedis.pool.min-idle}")
    private int minIdle;
    @Value("${spring.redis.jedis.pool.max_wait_millis}")
    private int maxWaitMillis;
    @Value("${spring.redis.jedis.pool.min_evictable_idle_time_millis}")
    private int minEvictableIdleTimeMillis;
    @Value("${spring.redis.jedis.pool.num_tests_per_eviction_run}")
    private int numTestsPerEvictionRun;

    @Value("${spring.redis.jedis.pool.time_between_eviction_runs_millis}")
    private int timeBetweenEvictionRunsMillis;
    @Value("${spring.redis.jedis.pool.test_on_borrow}")
    private boolean testOnBorrow;
    @Value("${spring.redis.jedis.pool.test_while_idle}")
    private boolean testWhileIdle;

    @Bean
    public JedisConnectionFactory redisConnectionFactory() {

        log.info("Create JedisConnectionFactory,host:{},port:{},password:{}", host, port, password);

        RedisStandaloneConfiguration rf = new RedisStandaloneConfiguration();
        rf.setDatabase(database);
        rf.setHostName(host);
        rf.setPort(port);
        rf.setPassword(RedisPassword.of(password));
        JedisClientConfiguration.JedisPoolingClientConfigurationBuilder jpb = (JedisClientConfiguration.JedisPoolingClientConfigurationBuilder) JedisClientConfiguration
                .builder();
        jpb.poolConfig(redisPoolConfig());

        JedisConnectionFactory jedisConnectionFactory &#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值