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

兰州电商平台网站建设购物网站界面设计欣赏

兰州电商平台网站建设,购物网站界面设计欣赏,企业宣传ppt模板,做网站一般工资如何目录 应用场景 代码实例1#xff1a; 代码实例2#xff1a; setIfAbsent#xff1a; expire#xff1a; 举例说明#xff1a; 代码实例3#xff1a; 代码实例4#xff1a; 还是一个同事问的一个问题#xff0c;然后闲着没事就记录下来了。多人操作同一个保单 代码实例2 setIfAbsent expire 举例说明 代码实例3 代码实例4 还是一个同事问的一个问题然后闲着没事就记录下来了。多人操作同一个保单会出现数据不一致所以呢就准备为此单子加一个锁所以就有了下面的代码。分享给大家 分布式锁的定义大家基本都很了解了具体就是当需要在分布式环境中保证资源的互斥访问或一致性时就可以考虑使用分布式锁。但需要注意的是分布式锁虽然可以解决问题但也会带来一定的性能开销和复杂度因此在使用时需要权衡系统的性能和可维护性以及使用分布式锁所带来的成本和风险。 应用场景 发任务调度在分布式系统中当需要对某个任务进行调度时如果多个节点同时发起任务调度请求可能会导致任务被多次执行。这时可以使用分布式锁来确保只有一个节点能够成功获取到任务调度的锁从而避免任务的重复执行。分布式事务在分布式事务中需要保证不同节点对共享资源的访问是互斥的以防止数据不一致的问题。分布式锁可以用来保证在事务执行过程中各个节点之间对共享资源的访问是互斥的。分布式缓存在分布式缓存中如果多个节点同时对缓存进行访问和修改可能会导致缓存中的数据不一致。这时可以使用分布式锁来确保各个节点对缓存的访问是互斥的。购买限制在电商等场景中如果需要对某个商品的购买数量进行限制当多个用户同时发起购买请求时可以使用分布式锁来确保只有一个用户能够成功获取到购买锁从而避免超卖等问题。 代码实例1 redisTemplate.opsForValue().setIfAbsent(redisLock, uuid, 1000, TimeUnit.SECONDS);这段代码是使用Spring Data Redis的RedisTemplate来执行一个Redis操作。具体来说它尝试在Redis中设置一个键值对但仅当该键不存在时。 详细解释如下 ruleRefreshLock这是要设置的Redis键。uuid这是要设置的Redis值。1000这是值的过期时间单位是毫秒。TimeUnit.SECONDS这是过期时间的单位这里是秒。 setIfAbsent方法的行为如下 如果键ruleRefreshLock在Redis中不存在那么它会设置这个键的值为uuid并给这个键设置一个1000秒的过期时间。此时setIfAbsent方法返回true。如果键ruleRefreshLock在Redis中已经存在那么它不会做任何操作并且setIfAbsent方法返回false。 这个方法通常用于实现分布式锁。在这个例子中你可能想要确保只有一个实例或线程能够获取到ruleRefreshLock这个锁。如果锁已经被其他实例或线程获取即键已经存在那么当前实例或线程就不会再尝试获取锁。如果锁未被获取即键不存在那么当前实例或线程就会获取锁并设置一个过期时间以确保锁最终会被释放。 代码实例2 设置KEY值过期时间 //假设 lockName 是你的锁的名称expireTime 是你希望锁持续的时间以分钟为单位 redisTemplate.expire(lockName, expireTime, TimeUnit.MINUTES); 这段代码是使用 RedisTemplate 来设置 Redis 中某个键的过期时间。这与之前的 setIfAbsent 操作有所不同主要区别如下 setIfAbsent 目的尝试设置一个键值对但仅当该键不存在时。返回值如果键原本不存在且成功设置了键值对返回 true如果键已经存在则不做任何操作并返回 false。用途通常用于实现分布式锁或其他需要原子性设置键值对的场景。 expire 目的为已存在的键设置或更新其过期时间。返回值如果键存在则成功设置或更新过期时间并返回 true如果键不存在则不进行任何操作并返回 false。用途通常用于确保存储在 Redis 中的数据在一段时间后被自动删除以避免内存无限制增长。 举例说明 假设你已经有了一个名为 lockName 的锁并且这个锁已经被某个实例获取即该键在 Redis 中已经存在。你想让这个锁在一段时间后自动释放那么你可以使用 expire 方法来设置锁的过期时间。 代码实例3 redis版本        spring-data-redis-2.7.10.jar Slf4j Component public class redisSchedule implements SchedulingConfigurer {Value(${rule.limit.cron})private String cron;Value(${schedule.rule})private String scheduleRule;Autowiredprivate StringRedisTemplate redisTemplate;Overridepublic void configureTasks(ScheduledTaskRegistrar taskRegistrar) {taskRegistrar.addCronTask(() - {// 分布式锁集群环境只允许一台服务修改定时任务String uuid UUID.randomUUID().toString();Boolean bool redisTemplate.opsForValue().setIfAbsent(redisLock, uuid, 1000, TimeUnit.SECONDS);try {if (bool) {//逻辑代码}} catch (Exception e) {log.error(e.getMessage());} finally {// 释放锁先比对自己锁的值是否相等相等则为自己的锁String script if redis.call(get,KEYS[1]) ARGV[1] then return redis.call(del,KEYS[1]) else return 0 end;redisTemplate.execute(new DefaultRedisScriptLong(script, Long.class), Arrays.asList(redisLock), uuid);}}, cron);} } 代码实例4 redis版本        spring-data-redis-1.8.0.RELEASE.jar //锁的过期时间默认为5分钟 private Long expireTime 5L;try {//多个执行任务去获得锁如果没有获取证明还有任务在执行中那么将不再执行任务Boolean isLock redisTemplate.opsForValue().setIfAbsent(lockName, lock);if (isLock){//获取到锁那么设置过期时间防止死锁this.redisTemplate.expire(lockName, expireTime, TimeUnit.MINUTES);//逻辑代码}else {logger.info(任务执行锁定失败Lock被占用当前分片);throw new Exception(任务执行锁定失败);}} catch (Exception e) {e.printStackTrace();throw new Exception(e.getMessage());} 总结一下setIfAbsent 用于在键不存在时设置键值对并返回操作是否成功的布尔值而 expire 用于设置或更新已存在键的过期时间并返回操作是否成功的布尔值。这两个操作经常一起使用来实现分布式锁其中 setIfAbsent 用于尝试获取锁而 expire 用于设置锁的过期时间以确保锁最终会被释放。两种方式的用法看对应的应用场景来使用
http://www.pierceye.com/news/219236/

相关文章:

  • app开发网站模板该网站正在紧急升级维护中
  • 公众号编辑器365保定seo推广
  • 陕西整站关键词自然排名优化外贸获客渠道有哪些
  • 网站策划需要具备什么福州高端建站
  • 域名注册没有网站美食网页设计素材图片
  • wordpress网站在哪里修改密码ps做网站要求高吗
  • 企业网站带商城源码Audiology wordpress
  • 星月教你做网站东营城乡建设局官网
  • 镇江网站建设开发旺店通erp系统
  • 体育直播网站建设深圳制作小程序
  • 手机微信管理系统搜索引擎优化的流程是什么
  • 壁纸公司网站源码做网站价格表
  • 潜江网站设计商务科技网站建设
  • 合肥企业网站制作网站开发公司简介
  • 德州市建设小学网站文员工作内容
  • 网站域名买卖营销技巧第三季在线观看
  • 西宁市公司网站建设比较网站建设
  • 深圳网站设计公司建设部人才网站
  • 广水住房和城乡建设部网站巅峰网站建设
  • 建设智能家居网站SWOT分析商业网站有哪些
  • 相亲网站男人拉我做外汇h5特效网站欣赏
  • 网站一个多少钱有什么做同城的网站
  • 网站 改版 方案wordpress谷歌字体 4.9
  • 全网引流推广 价格网站百度关键词seo排名优化
  • 信用门户网站建设规范win7 iis 发布asp.net网站
  • 织梦网站添加视频教程如何套用wordpress的源码
  • 网站服务器模式wordpress安装后只有英文版
  • 企业网站建设晋升wordpress 自助建站
  • 网站建设案例建站资源
  • 四大商业网站镇江制作网站的