当前位置: 首页 > news >正文

赤峰市网站建设_网站建设公司_服务器维护_seo优化

做一份网站动态图多少钱,湛江网站建设方案策划,网站的基础知识,建设校园网站文章目录 1.前言2.使用方式1. 添加Redisson依赖#xff1a;2. 配置Redis连接信息3. 使用场景3.1. 分布式锁3.2. 限流器#xff08;Rate Limiter#xff09;3.3. 可过期的对象#xff08;Expirable Object#xff09;3.4. 信号量#xff08;Semaphore#xff09;3.5. 分布… 文章目录 1.前言2.使用方式1. 添加Redisson依赖2. 配置Redis连接信息3. 使用场景3.1. 分布式锁3.2. 限流器Rate Limiter3.3. 可过期的对象Expirable Object3.4. 信号量Semaphore3.5. 分布式调度器Distributed Scheduler 5. 源码地址6. Redis从入门到精通系列文章7.参考文档 1.前言 Redisson是一个基于Redis的分布式Java对象和数据结构库它提供了丰富的功能和易于使用的API使开发人员能够轻松地在分布式环境中操作和管理数据。 作为一个分布式对象和数据结构库Redisson提供了许多常见的数据结构和算法的实现包括通用对象桶、二进制流、地理空间对象桶、BitSet、原子长整型、原子双精度浮点数、话题订阅分发、布隆过滤器和基数估计算法。这些数据结构和算法为开发人员提供了处理分布式数据的工具从而简化了复杂性提高了效率。简直就是一个Redis的最佳实践框架和最牛X的Redis客户端工具宝箱基本上覆盖了所有场景。 通过Redisson开发人员可以使用简单而一致的API来存储和检索对象处理二进制数据管理地理位置信息操作位集合进行原子操作进行发布-订阅消息传递实现布隆过滤器和基数估计等功能。Redisson还提供了许多附加功能如分布式锁、分布式信号量、分布式队列和分布式限流器等进一步增强了分布式应用的能力。 Redisson的设计目标是提供高性能、可扩展和可靠的分布式数据操作解决方案。它与Redis数据库紧密集成并利用Redis的特性来实现分布式对象和数据结构的存储和管理。Redisson还支持与Spring框架的无缝集成使开发人员能够更方便地在Spring应用程序中使用Redisson功能。 所以我们本篇文章了解一下Redisson 在项目实践中最常用的5种场景分别搞了一个示例方便大家理解。 2.使用方式 1. 添加Redisson依赖 在Spring Boot项目的pom.xml文件中添加Redisson的依赖。 dependencygroupIdorg.redisson/groupIdartifactIdredisson-spring-boot-starter/artifactIdversion3.15.5/version /dependency2. 配置Redis连接信息 在Spring Boot项目的application.properties或application.yml文件中配置Redis连接信息包括主机地址、端口、密码等。例如 spring.redis.host127.0.0.1 spring.redis.port6379 spring.redis.password3. 使用场景 3.1. 分布式锁 例如你可以在Spring Boot的Service类中注入RedissonClient并使用它进行操作 import org.redisson.api.RedissonClient; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service;Service public class MyService {Autowiredprivate RedissonClient redissonClient;public void myMethod() {// 获取分布式锁RLock lock redissonClient.getLock(myLock);try {// 尝试加锁如果加锁成功则执行加锁后的逻辑if (lock.tryLock()) {// 执行加锁后的逻辑// ...}} finally {// 释放锁lock.unlock();}}}3.2. 限流器Rate Limiter import org.redisson.api.RRateLimiter; import org.redisson.api.RedissonClient; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component;Component public class MyService {Autowiredprivate RedissonClient redissonClient;public void myMethod() {// 获取限流器RRateLimiter limiter redissonClient.getRateLimiter(myLimiter);// 定义限流速率例如每秒最多允许10个操作limiter.trySetRate(RateType.OVERALL, 10, 1, RateIntervalUnit.SECONDS);// 尝试获取许可boolean acquired limiter.tryAcquire();if (acquired) {// 执行需要限流的操作// ...} else {// 限流逻辑例如返回错误信息或执行降级处理// ...}} }3.3. 可过期的对象Expirable Object 在Redis中Hash结构是一种用于存储键值对的数据结构。每个Hash结构都可以包含多个字段field和对应的值value。而要为Hash结构中的二级key设置过期时间可以使用Redisson的RMapCache接口。如果使用Redisson 来实现对Hash结构中二级key的值设置过期时间其实很简单了。 我们使用redissonClient.getMapCache(myHash)获取一个名为myHash的可过期对象的Hash结构。然后我们可以使用put()方法将具有过期时间的二级键值对存储到Hash结构中并指定过期时间和时间单位。存储的二级键值对将会在指定的过期时间后自动过期。 在setHashValueWithExpiration()方法中我们传入Hash结构的一级键hashKey、二级键fieldKey、值value、过期时间和时间单位将值存储到Hash结构中的二级键并为其设置过期时间。 在getHashValue()方法中我们根据Hash结构的一级键和二级键从Hash结构中获取对应的值。 通过使用Redisson的RMapCache接口你可以方便地为Hash结构中的二级键值对设置过期时间并且无需手动处理过期逻辑。Redisson会自动管理过期和清理操作简化了在分布式环境中使用可过期的Hash结构的开发工作。 import org.redisson.api.RMapCache; import org.redisson.api.RedissonClient; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component;import java.util.concurrent.TimeUnit;Component public class HashService {Autowiredprivate RedissonClient redissonClient;public void setHashValueWithExpiration(String hashKey, String fieldKey, Object value, long expirationTime, TimeUnit timeUnit) {RMapCacheString, Object hash redissonClient.getMapCache(myHash);hash.put(hashKey, fieldKey, value, expirationTime, timeUnit);}public Object getHashValue(String hashKey, String fieldKey) {RMapCacheString, Object hash redissonClient.getMapCache(myHash);return hash.get(hashKey, fieldKey);} }3.4. 信号量Semaphore redissonClient.getSemaphore(“mySemaphore”)获取一个名为mySemaphore的信号量。然后使用trySetPermits()方法设置信号量的初始数量例如设置为10个。在myMethod()方法中我们使用acquire()方法尝试获取信号量如果获取到信号量则执行需要受信号量限制的操作。在操作完成后使用release()方法释放信号量。 通过使用Redisson的信号量功能你可以控制在分布式环境中对某个资源的并发访问数量限制并发访问的能力从而保护资源的稳定性和可用性。 import org.redisson.api.RSemaphore; import org.redisson.api.RedissonClient; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component;Component public class ResourceService {private final RedissonClient redissonClient;Autowiredpublic ResourceService(RedissonClient redissonClient) {this.redissonClient redissonClient;}public void accessResource() {RSemaphore resourceSemaphore redissonClient.getSemaphore(resourceSemaphore);resourceSemaphore.trySetPermits(10);try {resourceSemaphore.acquire();// 执行需要受信号量限制的操作访问资源// ...} catch (InterruptedException e) {// 处理中断异常// ...} finally {resourceSemaphore.release();}} }3.5. 分布式调度器Distributed Scheduler 我们使用redissonClient.getMapCache(myHash)获取一个名为myHash的可过期对象的Hash结构。然后我们可以使用put()方法将具有过期时间的二级键值对存储到Hash结构中并指定过期时间和时间单位。存储的二级键值对将会在指定的过期时间后自动过期。 在setHashValueWithExpiration()方法中我们传入Hash结构的一级键hashKey、二级键fieldKey、值value、过期时间和时间单位将值存储到Hash结构中的二级键并为其设置过期时间。 在getHashValue()方法中我们根据Hash结构的一级键和二级键从Hash结构中获取对应的值。 通过使用Redisson的RMapCache接口你可以方便地为Hash结构中的二级键值对设置过期时间并且无需手动处理过期逻辑。Redisson会自动管理过期和清理操作简化了在分布式环境中使用可过期的Hash结构的开发工作。 import org.redisson.api.RScheduledExecutorService; import org.redisson.api.RedissonClient; import org.redisson.api.annotation.RInject; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component;import java.util.concurrent.TimeUnit;Component public class DistributedScheduler {private final RedissonClient redissonClient;Autowiredpublic DistributedScheduler(RedissonClient redissonClient) {this.redissonClient redissonClient;}/*** 安排一个延迟执行的分布式任务** param task 要执行的任务* param delay 延迟时间* param timeUnit 时间单位*/public void scheduleTask(Runnable task, long delay, TimeUnit timeUnit) {RScheduledExecutorService executorService redissonClient.getExecutorService(myScheduler);executorService.schedule(task, delay, timeUnit);}/*** 安排一个以固定速率重复执行的分布式任务** param task 要执行的任务* param initialDelay 初始延迟时间* param period 重复执行的周期* param timeUnit 时间单位*/public void scheduleTaskAtFixedRate(Runnable task, long initialDelay, long period, TimeUnit timeUnit) {RScheduledExecutorService executorService redissonClient.getExecutorService(myScheduler);executorService.scheduleAtFixedRate(task, initialDelay, period, timeUnit);} }5. 源码地址 https://github.com/wangshuai67/Redis-Tutorial-2023 6. Redis从入门到精通系列文章 《Redis使用Lua脚本和Redisson来保证库存扣减中的原子性和一致性》《SpringBoot Redis 使用Lettuce和Jedis配置哨兵模式》《Redis【应用篇】之RedisTemplate基本操作》《Redis 从入门到精通【实践篇】之SpringBoot配置Redis多数据源》《Redis 从入门到精通【进阶篇】之三分钟了解Redis HyperLogLog 数据结构》《Redis 从入门到精通【进阶篇】之三分钟了解Redis地理位置数据结构GeoHash》《Redis 从入门到精通【进阶篇】之高可用哨兵机制(Redis Sentinel)详解》《Redis 从入门到精通【进阶篇】之redis主从复制详解》《Redis 从入门到精通【进阶篇】之Redis事务详解》《Redis从入门到精通【进阶篇】之对象机制详解》《Redis从入门到精通【进阶篇】之消息传递发布订阅模式详解》《Redis从入门到精通【进阶篇】之持久化 AOF详解》《Redis从入门到精通【进阶篇】之持久化RDB详解》《Redis从入门到精通【高阶篇】之底层数据结构字典(Dictionary)详解》《Redis从入门到精通【高阶篇】之底层数据结构快表QuickList详解》《Redis从入门到精通【高阶篇】之底层数据结构简单动态字符串(SDS)详解》《Redis从入门到精通【高阶篇】之底层数据结构压缩列表(ZipList)详解》《Redis从入门到精通【进阶篇】之数据类型Stream详解和使用示例》 大家好我是冰点今天的【Redis实践篇】使用Redisson 优雅实现项目实践过程中的5种场景全部内容就是这些。如果你有疑问或见解可以在评论区留言。 7.参考文档 Redisson官方文档 https://github.com/redisson/redisson/wiki/Table-of-Content
http://www.ihoyoo.com/news/92188.html

相关文章:

  • 济南学网站建设哪里好北京网站制作的公司哪家好
  • 网站建设商务代表工作总结什么是做自己的网站
  • 网站设计与实现折叠分类目录模板wordpress
  • 建设高端网站的公司江苏专业做网站的公司有哪些
  • 移动网站设计教程北京建网站报价
  • 邢台手机网站建设公司给别人做网站别人违法经营6
  • 建设银行交学费网站芜湖做公司网站的
  • 贷款 东莞网站建设怎么给自己网站做搜索框
  • 岳阳网站开发网站运营哪家好用ps制作海报教程方法步骤
  • python nginx做网站生鲜网站模板
  • 备案网站有哪些网站new图标
  • 哪个网站做轴承外贸的人比较多私人搭建服务器
  • 网站建设淄博苏州汇聚人电子科技有限公司
  • php做简单网站 多久wordpress调用菜单的代码
  • 网站建设的作用是什么多少钱怎么翻译
  • 一个公司做两个网站有影响吗百度搜索引擎优化案例
  • 做的比较好的律师网站网站推广适合女生做吗
  • 网站建设的目的和目标泸州市建设厅网站
  • 宁波高端网站制作公司网站设计工程师
  • 网站规划内容方案英文网站建设推广
  • 个人网站的设计与实现主要技术指标想开网店哪个平台好
  • 网页制作与网站开发...建设网站设备预算
  • 企业网站图片上传平谷重庆网站建设
  • 长春网站建设网站贵州最好的网站建设推广公司哪家好
  • 网站推广的网站作用北京最新新闻
  • 兰州网站优化服务广州开发区人才交流服务中心
  • 易语言网站开发好的摄影网站
  • 网站建设石家庄快优内江广告制作公司
  • 网站图片360度旋转怎么做的提供信息门户网站搭建
  • 网站策划的重要性玩具网站规划说明书购物网站