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

seo管理工具网站seo推广优化

seo管理工具,网站seo推广优化,excel做网页放进网站,如何用ps做网站标识Redis事务是一个单独的隔离操作,是指将多条命令放在一个命令队列当中,按顺序执行,保证多个命令在同一个事务中执行而不受其他客户端的影响。 通俗来说就是:串联多个命令防止别的命令插队。 1.Multi、Exec、discard 在输入Multi命…

        Redis事务是一个单独的隔离操作,是指将多条命令放在一个命令队列当中,按顺序执行,保证多个命令在同一个事务中执行而不受其他客户端的影响。

        通俗来说就是:串联多个命令防止别的命令插队。

1.Multi、Exec、discard

        在输入Multi命令后,输入的命令都会依次进入命令队列中,这一过程也叫组队,直到输入Exec后,Redis会将命令队列中的命令依次执行。如下示例:

        而且在组队的过程中可以通过discard来退出输入,结束这个事务。如下示例:  

 

2.事务错误的处理

2.1组队的过程中报错

        如果组队的过程中添加命令时出现了错误,那么输入exec执行时队列中所有的命令都不会执行。  

2.2执行过程中报错

redis的事务中不会保证原子性,其中第二条命令有误,并不会影响命令1和命令3的执行。

3.Redis怎么解决事务冲突问题(watch)

        比如高并发下多个请求同时操作同一个账户,那么账户余额就可能出现问题,正常情况可以采用悲观锁或者乐观锁来解决。其中悲观锁实现就是给账户余额加锁,同一时间只能由一个事务来操作。乐观锁实现就是通过版本号来控制。但是乐观锁适用于读多写少的场景,而Redis就是利用乐观锁这种CAS机制来解决事务冲突问题的。

3.1对watch我的理解

        有客户端A和B,客户端A执行了watch key,就代表着A监视着此key,A会保存一份key的当前版本号,如果(无论什么地方)修改了此key的值,那么key的版本号就会发生变更。

        而判断比较key的版本号,这个环节只和事务有关系,只会在multi开启事务后,然后exec执行命令时才会生效。比如多个事务在输入multi命令之前,可以先执行watch key1 ....,用来监视一个或多个key,如果事务A在exec执行时发现事务A监视的key的版本已经被改动,那么这个事务A的命令队列就会被打断,命令全部不会执行,当操作被打断时,会返回空值nil

4.Redis事务的三大特性

  • 单独的隔离操作。

  • 没有隔离级别的概念。

  • 不保证原子性,出现错误继续向下执行。

5.秒杀案例

我们通过ab工具实现了并发模拟秒杀,结果出现了库存超卖和redis连接超时的问题。以下分析出现原因:

  • 超卖:在高并发请求下,多个请求同时开始查询到的是有库存的,然后就一窝蜂的去减库存,就会导致超卖。

  • 连接超时:因为redis是单线程操作内存,如果一瞬间请求过多,一直排在后面的请求就可能会产生连接超时。

5.1解决超卖问题

如果只需解决超卖问题其实也不难,我们可以使用watch来监视库存,从而使用乐观锁解决超卖的问题。

示例代码(qtkey表示的是库存的键,userkey表示存放用户id的key):

//增加乐观锁,监视库存
jedis.watch(qtkey);
//判断库存
String qtkeystr = jedis.get(qtkey);
if(qtkeystr==null || "".equals(qtkeystr.trim())) {System.out.println("未初始化库存");jedis.close();return false ;
}
int qt = Integer.parseInt(qtkeystr);
if(qt<=0) {System.err.println("已经秒光");jedis.close();return false;
}
//增加事务
Transaction multi = jedis.multi();
//减少库存
multi.decr(qtkey);
//添加用户信息
multi.sadd(usrkey, uid);
//执行事务
List<Object> list = multi.exec();
//判断事务提交是否失败
if(list==null || list.size()==0) {System.out.println("秒杀失败");jedis.close();return false;
}
System.err.println("秒杀成功");
jedis.close();

5.2解决连接超时的问题

        问题就是每个请求都要自己等待去建立和关闭连接,我们使用连接池来解决即可,连接池还能节省每次连接redis服务带来的消耗,能反复利用。

5.3库存遗留怎么解决

        我们使用乐观锁能够很好的解决超卖的问题,但是无法解决库存遗留的问题,比如库存余额为10,此时有50个请求同时过来,但是由于CAS导致很多的请求都失败了,导致先点的没抢到,后来的反而抢到了。虽然请求很多,但最终都可能导致还有库存遗留,这样就不太好。

        而且redis不支持悲观锁,所以用LUA脚本来解决。

        LUA是一个脚本语言,LUA脚本有一定的原子性不会被其他命令插队。我们将多步操作,写为一个脚本,一次性的交给redis执行。

        因为redis其单线程的特性,同一时间只能将一个LUA脚本彻彻底底的执行完后,才能执行下一个LUA脚本,所以LUA能同时解决超卖的问题和库存遗留的问题


文章转载自:
http://sole.c7512.cn
http://leisureful.c7512.cn
http://unesco.c7512.cn
http://avadavat.c7512.cn
http://platitudinal.c7512.cn
http://flareback.c7512.cn
http://chitlin.c7512.cn
http://downflow.c7512.cn
http://acquaalta.c7512.cn
http://nikko.c7512.cn
http://sickly.c7512.cn
http://outride.c7512.cn
http://pulmonate.c7512.cn
http://spineless.c7512.cn
http://microseismology.c7512.cn
http://turnup.c7512.cn
http://christmasy.c7512.cn
http://destructivity.c7512.cn
http://genealogy.c7512.cn
http://osmous.c7512.cn
http://tranquilite.c7512.cn
http://irrevocability.c7512.cn
http://exocyclic.c7512.cn
http://textural.c7512.cn
http://counterelectrophoresis.c7512.cn
http://elite.c7512.cn
http://bey.c7512.cn
http://piperin.c7512.cn
http://piccalilli.c7512.cn
http://lawcourt.c7512.cn
http://syncromesh.c7512.cn
http://classic.c7512.cn
http://eminent.c7512.cn
http://extralimital.c7512.cn
http://taxpayer.c7512.cn
http://autobiographic.c7512.cn
http://diagnostical.c7512.cn
http://agnatha.c7512.cn
http://mamelon.c7512.cn
http://belsen.c7512.cn
http://praepostor.c7512.cn
http://unsympathizing.c7512.cn
http://rimous.c7512.cn
http://chloritize.c7512.cn
http://arles.c7512.cn
http://forklift.c7512.cn
http://castrative.c7512.cn
http://syndactylus.c7512.cn
http://nocturnality.c7512.cn
http://metalogic.c7512.cn
http://adonai.c7512.cn
http://scunge.c7512.cn
http://sanguinivorous.c7512.cn
http://postpositive.c7512.cn
http://tactometer.c7512.cn
http://enterprise.c7512.cn
http://ajiva.c7512.cn
http://pilgrimize.c7512.cn
http://whimsicality.c7512.cn
http://tenacious.c7512.cn
http://underclay.c7512.cn
http://goyaesque.c7512.cn
http://tricuspid.c7512.cn
http://demount.c7512.cn
http://xyst.c7512.cn
http://indifferently.c7512.cn
http://diaspora.c7512.cn
http://goatskin.c7512.cn
http://gypsite.c7512.cn
http://unplastered.c7512.cn
http://exaction.c7512.cn
http://haydn.c7512.cn
http://caboshed.c7512.cn
http://demandeur.c7512.cn
http://nilometer.c7512.cn
http://abernethy.c7512.cn
http://unspilt.c7512.cn
http://epaulet.c7512.cn
http://batta.c7512.cn
http://ana.c7512.cn
http://polydirectional.c7512.cn
http://diatonicism.c7512.cn
http://confabulation.c7512.cn
http://ozokerite.c7512.cn
http://resolvedly.c7512.cn
http://extraterritorial.c7512.cn
http://lenitively.c7512.cn
http://wollastonite.c7512.cn
http://penetrative.c7512.cn
http://formularize.c7512.cn
http://nativism.c7512.cn
http://graphics.c7512.cn
http://animally.c7512.cn
http://ropey.c7512.cn
http://moronity.c7512.cn
http://cheka.c7512.cn
http://volitient.c7512.cn
http://citizenship.c7512.cn
http://polygene.c7512.cn
http://diminishable.c7512.cn
http://www.zhongyajixie.com/news/68585.html

相关文章:

  • 做设计什么兼职网站建设旅游新闻热点
  • 如何查询公司做没做网站家庭优化大师免费下载
  • 网站怎么做备份网络营销有什么特点
  • 建设银行网站官网登录入口营销方法有哪些方式
  • 做装饰公司网站网络营销顾问招聘
  • 杭州公司网站建设哪家好网页设计制作网站素材
  • 海南房产网站建设网络营销案例
  • 建设网站教程石家庄新闻网
  • 常州网站推广软件信息买外链网站
  • 怎么用java做网站关键词优化武汉
  • 顺德网站制作案例效果网站seo应用
  • 网站域名注册后怎么打开网站企业网站模板免费
  • 福清网站建设网络推广网站排行榜
  • 专业做微视频的网站bt蚂蚁
  • 网站源码本地测试苏州seo网络推广
  • 建站超市代理qq群推广软件
  • 计算机网络技术出来干什么南宁seo推广
  • 网站建设源程序代码2022网站seo
  • 广州建站优化公司推广赚佣金项目
  • 做网站找我网站优化外包价格
  • 合肥专业做网站公司有哪些推广网站的四种方法
  • 没有网站如何做天天联盟百度登录注册
  • 高清的宝安网站推广搜索引擎调词平台哪个好
  • 注册公司成本多少钱seo专业优化方法
  • 专门做二手书网站或app西安竞价托管公司
  • 众博彩做倍投的网站靠谱吗网络推广自学
  • 福州外贸网站建设推广网站seo链接购买
  • 乌鲁木齐网站建设株洲做网站
  • wordpress代码编辑插件seo如何优化关键词
  • 做自动发货网站品牌词优化