文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Redis increment 函数处理并发序列号案例

2024-08-29 19:48

关注

1. 创建Spring Boot项目

首先,创建一个新的Spring Boot项目。你可以使用Spring Initializr(https://start.spring.io/)来生成项目结构。选择以下依赖:

2. 配置application.yml

在你的 ​application.yml​文件中添加Redis配置:

spring:
  cache:
    type: GENERIC
  redis:
    host: ${sy.redis.ip}
    password:
    port: ${sy.redis.port}
    database: ${sy.redis.database}

3. 创建缓存配置类

创建一个配置类来手动配置基于Redis的缓存管理器:

import org.springframework.cache.CacheManager;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.cache.RedisCacheConfiguration;
import org.springframework.data.redis.cache.RedisCacheManager;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.serializer.GenericJackson2jsonRedisSerializer;
import org.springframework.data.redis.serializer.RedisSerializationContext;
import Java.time.Duration;
@Configuration
public class CacheConfig {
    @Bean
    public CacheManager cacheManager(RedisConnectionFactory redisConnectionFactory) {
        RedisCacheConfiguration cacheConfiguration = RedisCacheConfiguration.defaultCacheConfig()
                .entryTtl(Duration.ofMinutes(10)) // 设置缓存过期时间
                .disableCachingNullValues()
                .serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(new GenericJackson2JsonRedisSerializer()));
        return RedisCacheManager.builder(redisConnectionFactory)
                .cacheDefaults(cacheConfiguration)
                .build();
    }
}

4. 创建服务类

创建一个服务类来使用Redis的 ​INCR​方法生成每天的序号

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Service;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
@Service
public class SequenceService {
    @Autowired
    private StringRedisTemplate redisTemplate;
    public long getDailySequence() {
        String dateStr = DateUtils.format(new Date(), "yyyy-MM-dd");
        String key = "dailySequence_" + dateStr;
        // 执行 increment 操作
        Long applicantNumber = redisTemplate.opsForValue().increment(key);
        // 设置过期时间为2天,不设置默认永久
        redisTemplate.expire(key, 2, TimeUnit.DAYS);
        //redisTemplate.expire(key) // 查询key的过期时间。
        //-1: 表示键存在但没有设置过期时间。
        //-2: 表示键不存在。
        //返回秒:如上面返回值是 172780,这意味着该键将在大约 172780 秒(约 48 小时)后过期。
        return applicantNumber;
    }
}

5. 创建控制器

创建一个控制器来暴露获取每天序号的API:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class SequenceController {
    @Autowired
    private SequenceService sequenceService;
    @GetMapping("/daily-sequence")
    public String getDailySequence() {
        long sequence = sequenceService.getDailySequence();
        return "Daily sequence: " + sequence;
    }
}

6. 启动类

确保你的启动类包含 ​@EnableCaching​注解以启用缓存功能:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cache.annotation.EnableCaching;
@SpringBootApplication
@EnableCaching
public class RedisIncrApplication {
    public static void main(String[] args) {
        SpringApplication.run(RedisIncrApplication.class, args);
    }
}

到此这篇关于Redis increment 函数处理并发序列号的文章就介绍到这了,更多相关Redis increment 序列号内容请搜索编程客栈(www.lsjlt.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网(www.lsjlt.com)!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯