技术栈入门-----Redisson

简介: 技术栈入门-----Redisson

使用Redisson的准备工作

1、导入依赖

<!-- 以后使用redisson作为分布式锁,分布式对象等功能框架 -->
<dependency>
  <groupId>org.redisson</groupId>
  <artifactId>redisson</artifactId>
  <version>3.16.8</version>
</dependency>

2、设置Redission配置类

package com.saodai.saodaimall.saodaimall.seckill.config;
import org.redisson.Redisson;
import org.redisson.api.RedissonClient;
import org.redisson.config.Config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.io.IOException;
/**
* redission分布式锁配置类
*/
@Configuration
public class MyRedissonConfig {
    /**
    * 所有对Redisson的使用都是通过RedissonClient
    * @return
    * @throws IOException
    */
    @Bean(destroyMethod="shutdown")
    public RedissonClient redisson() throws IOException {
        //1、创建配置
        Config config = new Config();
        //配置虚拟机的地址
        config.useSingleServer().setAddress("redis://192.168.241.128:6379");
        //2、根据Config创建出RedissonClient实例(单个实例)
        //Redis url should start with redis:// or rediss://
        RedissonClient redissonClient = Redisson.create(config);
        return redissonClient;
    }
}


本商城项目哪里用到了Redisson

秒杀服务

1、秒杀服务中定时任务的秒杀商品上架的库存存入redis时就用到了redission实现分布式信号量

下面分布式信号量设置时就会把信号量以库存的格式key:seckill:stock:随机码 value:秒杀商品的总数量存到reids缓存中

@Autowired
private RedissonClient redissonClient;
/**5、使用库存作为分布式Redisson信号量(限流)**/
//获取分布式信号量,信号量名称为seckill:stock:+随机码
RSemaphore semaphore = redissonClient.getSemaphore(SKU_STOCK_SEMAPHORE + token);
// 秒杀商品的库存数量作为信号量的值(允许同时seckillSkuVo.getSeckillCount()个用户获取到信号量)
semaphore.trySetPermits(seckillSkuVo.getSeckillCount());


2、秒杀时具体实现

@Autowired
private RedissonClient redissonClient;
//分布式锁
RSemaphore semaphore = redissonClient.getSemaphore(key);
//尝试快速拿到信号量,100毫秒没有用拿到就返回false
//在指定的时间内尝试地获取1个许可,如果获取不到就返回false
boolean semaphoreCount = semaphore.tryAcquire(num, 100, TimeUnit.MILLISECONDS);
目录
相关文章
|
缓存 编解码 网络协议
一文带你由浅入深Netty异步非阻塞世界
一文带你由浅入深Netty异步非阻塞世界
一文带你由浅入深Netty异步非阻塞世界
|
3月前
|
云计算
2026年阿里云学生优惠券领取及使用指南
阿里云面向中国高校学生推出2026年专属福利:认证后可领300元无门槛优惠券,有效期1年,支持多次拆分使用,助力低成本上云!涵盖专科至博士等全体在校生,一键直达学生权益专区领取。
417 3
|
11月前
|
敏捷开发 机器学习/深度学习 人工智能
需求重复、碎片化、无追溯?2025年智能化需求管理工具的关键应用
本文系统梳理需求管理工具从文档管理到AI驱动的四代技术演进,解析现代智能系统的核心功能架构与技术实现,并基于六维评估模型对比主流工具优劣。结合四阶段实施方法论与典型问题解决方案,为企业选型与落地提供全面指导。
497 0
|
监控 搜索推荐 应用服务中间件
301重定向进阶指南:从原理到实战
本文深度解析301重定向的原理与应用,涵盖HTTP状态码本质、权重传递机制及浏览器处理流程。同时探讨多域名整合、国际化网站和移动端适配等高级场景,并详解Apache、Nginx、CDN层及编程语言实现技术。此外,提供SEO最佳实践,包括重定向链优化、链接权益最大化及监控分析方法。针对混合内容处理、大规模重定向管理和特殊案例给出解决方案,还展望了HTTP/2、搜索引擎算法演进对未来的影晌。文章强调团队协作的重要性,帮助构建健壮的重定向策略以确保网站平稳过渡。
770 18
|
存储 监控 NoSQL
Redis设计与实现——单机Redis实现
Redis 是一个高性能的键值存储系统,支持丰富的数据结构(字符串、列表、哈希等)。其核心由键空间、过期字典和阻塞/监控键组成,通过惰性删除与定期删除策略管理过期数据。持久化方面,Redis 提供 RDB 快照和 AOF 日志两种机制,分别适用于快速恢复和高数据安全性场景。RDB 以二进制格式保存数据库快照,AOF 则记录写操作命令并支持重写优化文件大小。 此外,Redis 支持多数据库切换、内存淘汰策略(如 LRU)、慢查询日志等功能,满足不同业务需求。在生产环境中,推荐结合 RDB 和 AOF 的混合持久化方式,兼顾性能与数据安全。
445 12
TortoiseSVN安装使用教程(超详细)
TortoiseSVN安装使用教程(超详细)
14519 58
|
存储 人工智能
浙江大学与阿里云联合宣布共建人工智能通识课|阿里云云工开物合作动态
浙江大学与阿里云联合共建人工智能通识课,涵盖教育、法律、设计等多学科方向,将产业案例融入课程体系。阿里云开放大模型认证课程资源,提供云服务器、AI算力等支持,并通过“云工开物”计划为学生提供计算资源。双方还将发起“智能体创新大赛”,推动技术创新与人才培养。浙大是国内首批开展全校人工智能通识课的顶尖高校之一,2024年起“人工智能基础”成为全校本科生必修课。
|
缓存 监控 NoSQL
【MongoDB 专栏】MongoDB 的内存管理与优化
【5月更文挑战第11天】MongoDB的内存管理优化对性能至关重要,涉及数据缓存、索引及执行操作的内存使用。动态内存管理根据访问模式和负载调整,可通过配置参数优化,如设置合适缓存大小,调整内存分配参数。索引管理也很重要,需定期评估优化,避免内存占用过高。监控内存使用、数据清理压缩、架构规划也是优化手段。面对挑战,如高并发下的内存不足,需灵活调整策略,平衡系统资源。不断学习新方法,提升内存管理能力,以优化MongoDB性能。
942 2
【MongoDB 专栏】MongoDB 的内存管理与优化
|
消息中间件 负载均衡 数据管理
微服务架构在电商平台中的应用与实践
在现代电商平台的开发和运维中,微服务架构成为了提升系统灵活性和可扩展性的关键技术。本篇文章从实践出发,深入探讨了微服务架构在电商平台中的具体应用,包括服务拆分策略、通信机制、数据管理、以及常见的挑战和解决方案。通过真实的案例分析和代码示例,帮助读者全面了解微服务架构的优势和实施方法,提供在实际项目中的实践指导。