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

兰州网站设计有限公司访问公司网站公司会知道吗

兰州网站设计有限公司,访问公司网站公司会知道吗,杭州网络科技网站建设,基于jquery做的网站20240809 一、解决redis数据被删除的方案1、发现问题2、解决注意#xff01;#xff01; 二、声明式事务#xff08;当有redis的时候#xff09;1. 先看代码2. Transactional(rollbackFor Exception.class)3. 如何解决redis在事务里面#xff0c;如何保证原子性和一致性3… 20240809 一、解决redis数据被删除的方案1、发现问题2、解决注意 二、声明式事务当有redis的时候1. 先看代码2. Transactional(rollbackFor Exception.class)3. 如何解决redis在事务里面如何保证原子性和一致性3.1 我们可以用try catch finally来实现3.2 我们可以让redis的执行放到最后这样当其他的 三、使用分布式锁redis1. 先看代码2. 为什么要使用3. 使用的redis的 setnx进行加锁 一、解决redis数据被删除的方案 1、发现问题 在我们小组进行开发的时候发现redis中的数据老是会丢失刚开始以为是若依的SpringBoot配置问题一直找但是没有发现有关的地方。 然后开始看是不是服务器重启AOF不保存数据的问题然后发现没有那就只有一个了那就是redis的config配置了 2、解决 打开Redis配置文件在Redis服务器上找到redis.conf文件所在的位置通常位于Redis安装目录下的/etc/redis/目录中。使用文本编辑器打开该文件。 注释掉相关配置项 在打开的redis.conf文件中搜索以下两个配置项 auto-aof-rewrite-percentage auto-aof-rewrite-min-size修改为 auto-aof-rewrite-percentage 0 auto-aof-rewrite-min-size 0保存对redis.conf文件的修改 重启Redis服务器 使用以下命令重启Redis服务器以使修改后的配置生效 sudo systemctl restart redis 注意 完成以上步骤后Redis将不再自动进行AOF重写操作从而关闭了自动清理缓存的功能。 需要注意的是关闭自动清理缓存可能会导致AOF文件过大而影响性能因此在实际应用中需要根据实际情况合理配置AOF重写的触发条件以及定期手动执行AOF重写操作来清理缓存。 二、声明式事务当有redis的时候 1. 先看代码 OverrideTransactional(rollbackFor Exception.class)public void updateInspectList(ListSub subList) {for (Sub sub : subList) {SubVo subVo new SubVo();SubDTO subDTO new SubDTO();BeanUtils.copyProperties(sub, subVo);BeanUtils.copyProperties(sub, subDTO);// 更新 term_production_infohomePageCMapper.updateInspectA(subVo);// 更新 om_term_infosubDTO.setDevidqi_state(1);subDTO.setTerm_qi_devid_qi_time(sub.getDevid_qi_time());homePageCMapper.updateInspectB(subDTO);// 将 inspect_list 存入 RedisString term_sn sub.getTerm_sn();ListInspect configList sub.getInspect_list();for (Inspect inspect : configList) {if(Objects.equals(inspect.getResult(), ok)){inspect.setResult(1);}else {inspect.setResult(2);}}try {stringRedisTemplate.opsForValue().set(configList: term_sn, JSONUtil.toJsonStr(configList));} catch (Exception e) {stringRedisTemplate.delete(configList: term_sn);Console.error(Redis创建数据失败, e);throw e;}}}2. Transactional(rollbackFor Exception.class) 声明式事务根据捕获的异常进行回滚。 Exception.class这是很多异常的父类 Transactional(rollbackFor Exception.class)3. 如何解决redis在事务里面如何保证原子性和一致性 3.1 我们可以用try catch finally来实现 当遇到错误的时候我们可以在最后执行到finally来删除我们在这个里面创建的redis或者修改数据回去从而避免数据不一致或部分更新的情况。。 3.2 我们可以让redis的执行放到最后这样当其他的 我们也可以直接在最后执行redis然后对他进行try cath。只有在上面的所有操作都执行完毕之后才会执行redis然后对redis的操作进行判断如果是redis出错了就只用看抛出的异常然后操作redis。 三、使用分布式锁redis 1. 先看代码 Transactional(rollbackFor Exception.class)Overridepublic void Add(AddPageA addPageA) {String lockKey lock_key;Boolean lock stringRedisTemplate.opsForValue().setIfAbsent(lockKey, locked, 10, TimeUnit.SECONDS);if (lock ! null lock) {try {OmTermInfoDTO omTermInfoDTO new OmTermInfoDTO();OutTermShipDTO outTermShipDTO new OutTermShipDTO();BeanUtil.copyProperties(addPageA, omTermInfoDTO);BeanUtil.copyProperties(addPageA, outTermShipDTO);outTermShipDTO.setBom_no(addPageA.getOut_term_ship_bom_no());omTermInfoDTO.setCreat_time(new Date());/*omTermInfoDTO.setOut_term_ship_ship_time(addPageA.getShip_time());omTermInfoDTO.setOut_term_ship_take_address(addPageA.getTake_address());*/outTermShipDTO.setTake_address(addPageA.getOut_term_ship_take_address());outTermShipDTO.setShip_time(addPageA.getOut_term_ship_ship_time());ListString regionData new ArrayList();regionData addPageA.getOut_region_name_no();String term_sn addPageA.getTerm_sn();stringRedisTemplate.opsForValue().set(term_sn :region, JSONUtil.toJsonStr(regionData));// 获取集合ListString list addPageA.getOut_region_name_no();// 获取集合的最后一位int lastElement Integer.parseInt(list.get(list.size() - 1));omTermInfoDTO.setOut_region_id(lastElement);addMapper.AddOmTerInfo(omTermInfoDTO);addMapper.AddOutTerShip(outTermShipDTO);}catch (Exception e){throw new RuntimeException(代码异常);}finally {stringRedisTemplate.delete(lockKey);}}else {throw new RuntimeException(Could not acquire lock);}}2. 为什么要使用 因为我在一次操作中连点了好几次就发现数据和预想不一样多了一条所以针对于这样的操作就需要进行加锁。 3. 使用的redis的 setnx进行加锁 先定义一个key然后进来一个线程需要先去获取锁如果拿到就执行拿不到就没了哈哈哈没有重试啊因为它不是多线程吧这个稍后在研究。 最后执行完之后释放这个锁下次就能实现了。 String lockKey lock_key;Boolean lock stringRedisTemplate.opsForValue().setIfAbsent(lockKey, locked, 10, TimeUnit.SECONDS);if (lock ! null lock) {try{}finally {stringRedisTemplate.delete(lockKey);}}else {throw new RuntimeException(无法拿到锁);}
http://www.w-s-a.com/news/130241/

相关文章:

  • 公司网站空间家装室内设计
  • 一个考试网站怎么做品牌建设10阶梯
  • 网站建设网站设计广东双语网站建设多少钱
  • 临时手机号注册网站建筑效果图
  • wordpress网站是什么类似wordpress博客
  • 国际网站空间昆明做网站开发维护的公司
  • 建网站选号域名网站优化大赛
  • 师范街网站建设广告制作公司口号
  • 电子商务网站开发设计报告为什么wordpress主题中字体不统一
  • 百度站长快速收录网站建设完工确认书
  • 企业网站备案代理商建设工程施工合同2013
  • 要学做网站wordpress xss漏洞
  • 白云品牌型网站建设在网上做国际快递淘宝网站
  • 无锡网站建设方式推广软件赚钱的app
  • 如何控制一个网站软件开发wordpress教育插件
  • 网站开发属于软件开发类吗wordpress邮件失败
  • 凡科网站怎么设计win8网站模板
  • 深圳整站seo个人网站建设一般流程
  • 济南网站中企动力wordpress主题ripro
  • 淮北网站建设求职简历怎么做点击图片进网站
  • 自适应网站推广注册公司流程和费用公司注册
  • 电子商务网站建设预算表网站建设卩金手指科杰
  • 广西响应式网站哪家好产品网络推广怎样做
  • 移动网可以上的网站是什么样子的淘宝优惠券网站开发
  • wordpress php设置伊宁seo网站建设
  • 兰陵住房建设局网站wordpress中文标题
  • 福州搜索优化网站个人网页网站制作模板
  • 网站开发分哪几个步骤使用wordpress开发一个页面跳转
  • 网站制作后还能更改么wordpress 近期文章 代码
  • 做一个小网站需要多少钱wordpress集成paypal