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

免费网站模板怎么做网站九易建网站的建站流程

免费网站模板怎么做网站,九易建网站的建站流程,中山网站设计外包,有没有做武棍的网站Redis 存在事务#xff0c;尽管它没有数据库那么强大#xff0c;但是它还是很有用的#xff0c;尤其是在那些需要高并发的网站当中。 使用 Redis 读/写数据要比数据库快得多#xff0c;如果使用 Redis 事务在某种场合下去替代数据库事务#xff0c;则可以在保证数据一致性…Redis 存在事务尽管它没有数据库那么强大但是它还是很有用的尤其是在那些需要高并发的网站当中。 使用 Redis 读/写数据要比数据库快得多如果使用 Redis 事务在某种场合下去替代数据库事务则可以在保证数据一致性的同时大幅度提高数据读/写的响应速度。 互联网和传统企业管理系统不一样互联网系统面向的是公众很多用户同时访问服务器的可能性很大尤其在一些商品抢购、抢红包等场合对性能和数据的一致性有着很高的要求而存储系统的读/写响应速度对于这类场景的性能的提高是十分重要的。 在 Redis 中也存在多个客户端同时向 Redis 系统发送命令的并发可能性因此同一个数据可能在不同的时刻被不同的线程所操纵这样就出现了并发下的数据一致的问题。为了保证异性数据的安全性Redis 为提供了事务方案。而 Redis 的事务是使用 MULTI-EXEC 的命令组合使用它可以提供两个重要的保证 事务是一个被隔离的操作事务中的方法都会被 Redis 进行序列化并按顺序执行事务在执行的过程中不会被其他客户端发生的命令所打断。事务是一个原子性的操作它要么全部执行要么就什么都不执行。在一个 Redis 的连接中请注意要求是一个连接所以更多的时候在使用 Spring 中会使用 SessionCallback 接口进行处理在 Redis 中使用事务会经过 3 个过程 开启事务。命令进入队列。执行事务。Redis事务命令 在 Redis 中开启事务是 multi 命令而执行事务是 exec 命令。multi 到 exec 命令之间的 Redis 命令将采取进入队列的形式直至 exec 命令的出现才会一次性发送队列里的命令去执行而在执行这些命令的时候其他客户端就不能再插入任何命令了这就是 Redis 的事务机制。 Redis 命令执行事务的过程。 从图中可以看到先使用 multi 启动了 Redis 的事务因此进入了 set 和 get 命令我们可以发现它并未马上执行而是返回了一个“QUEUED”的结果。 这说明 Redis 将其放入队列中并不会马上执行当命令执行到 exec 的时候它就会把队列中的命令发送给 Redis 服务器这样存储在队列中的命令就会被执行了所以才会有“OK”和“value1”的输出返回。 如果回滚事务则可以使用 discard 命令它就会进入在事务队列中的命令这样事务中的方法就不会被执行了使用 discard 命令取消事务如图所示。 当我们使用了 discard 命令后再使用 exec 命令时就会报错因为 discard 命令已经取消了事务中的命令而到了 exec 命令时队列里面已经没有命令可以执行了所以就出现了报错的情况。 在 Spring 中要使用同一个连接操作 Redis 命令的场景这个时候我们借助的是 Spring 提供的 SessionCallback 接口采用 Spring 去实现上述命令代码如下所示。 ApplicationContext applicationContext new ClassPathXmlApplicationContext(applicationContext.xml); RedisTemplate redisTemplate applicationContext.getBean(RedisTemplate.class); SessionCallback callBack (SessionCallback) (RedisOperations ops)- {ops.multi();ops.boundValueOps(key1).set(value1);//注意由于命令只是进入队列而没有被执行所以此处采用get命令而value却返回为nullString value (String) ops.boundValueOps(key1).get();System.out.println (事务执行过程中命令入队列而没有被执行所以value为空 valuevalue);//此时list会保存之前进入队列的所有命令的结果List list ops.exec(); //执行事务//事务结束后获取value1value (String) redisTemplate.opsForValue().get(key1);return value; }; //执行Redis的命令 String value (String)redisTemplate.execute(callBack); System.out.println(value);这里采用了 Lambda 表达式注意Java 8 以后才引入 Lambda 表达式来为 SessionCallBack 接口实现了业务逻辑。从代码看使用了 SessionCallBack 接口从而保证所有的命令都是通过同一个 Redis 的连接进行操作的。 在使用 multi 命令后要特别注意的是使用 get 等返回值的方法一律返回为空因为在 Redis 中它只是把命令缓存到队列中而没有去执行。使用 exec 后就会执行事务执行完了事务后执行 get 命令就能正常返回结果了。 最后使用 redisTemplate.execute(callBack); 就能执行我们在 SessionCallBack 接口定义的 Lambda 表达式的业务逻辑并将获得其返回值。执行代码后可以看到这样的结果如图所示 这里打印出来的 valuenull是因为在事务中所有的方法都只会被缓存到 Redis 事务队列中而没有立即执行所以返回为 null。如果我们希望得到 Redis 执行事务各个命令的结果可以用这行代码 List list ops.exec(); //执行事务这段代码将返回之前在事务队列中所有命令的执行结果并保存在一个 List 中我们只要在 SessionCallback 接口的 execute 方法中将 list 返回就可以在程序中获得各个命令执行的结果了。
http://www.pierceye.com/news/34138/

相关文章:

  • 海口网站建设公司天津站内关键词优化
  • 品牌网站建设磐石网络优等福州网站设计培训
  • 如何做网站管理维护东莞网站建设 模具
  • 营销型网站建设网站建设资讯wordpress文章编辑框
  • wap免费网站拼团网站建设
  • struck wordpressseo外链工具有用吗
  • 海南做房地产网站的网络公司青岛优化网站技术
  • 网站首页地址是什么wordpress电影主题网站
  • 新注册网站微信小程序怎么制作游戏
  • 企业如何免费做网站百度网址大全下载到桌面
  • 网站免费正能量直接进入在线黄金网站app免费视频下载
  • 那个网站教我做美食最好wordpress 文章名
  • 莱州网站建设公司电话色无极网站正在建设中
  • 网站建设后台管理流程wordpress大学 加载慢
  • 网站后台超链接怎么做重庆营销型网站建设沛宣
  • 手机网站模板欣赏网络小说写作网站
  • 做生蚝的网站永久免费做网站
  • 南京建设网站哪家好深圳市盐田区建设局网站
  • 如果是创建的网站软件开发公司
  • 廊坊网站建设企业百度建设网站
  • 网站优化大计wordpress 音乐服务器
  • 微电影网站源码北京快三平台
  • 社保个人网站石家庄网站建设 河北供求网
  • 做网站可能遇到的困难wordpress相册管理插件下载
  • 济南智能网站建设电话17网站一起做网店广州
  • php 网站开发收费大学生网站建设规划书
  • 网站如何做微信推广娱乐网站导航
  • 低价建设网站网页小游戏插件不支持
  • 网站建好怎么发布wordpress 云存储插件
  • 上海知名建站公司邯郸wap网站建设价格