uu快3公式_uu快3最新版_概率

Spring Data Redis 让 NoSQL 快如闪电(2)

时间:2019-12-25 06:01:43 出处:uu快3公式_uu快3最新版_概率

列表 5:管道技术

另外,亲戚亲戚大伙儿还发现了 Redis 事务和关系数据库事务(在本例中,即 JDBC)相结合的不利之处。混合型事务的表现和预想的不太一样。

你要使用这一 命令列出排行榜前 60 名玩家。ZRANGEBYSCORE 返回指定分数范围内的要素(同类列出得分为 60 0 至 60 0 之间的玩家),ZRNK 则返回有序集内的要素的排名,诸没有类。

原文地址:http://www.javaworld.com/article/60 62899/big-data/lightning-fast-nosql-with-spring-data-redis.html?page=2

所有 Redis 数据价值形式都具备存活时间 (TTL) 属性。当你设置这一 属性时,数据价值形式会在过期后自动删除。充分利用这一 功能,都都能否 让 Redis 保持较低的内存损耗。

将会使用关系数据库,一旦最先生成锁的程序意外退出,锁就将会永远得不都都能否 释放。Redis 的 EXPIRE 设置可确保在任何状况下释放锁。

我在 Spring 的 RedisTemplateredisTemplate.setEnableTransactionSupport(true); 中启用 Redis 事务时得到有有还还有一个惨痛的教训:Redis 会在运行几天后开使返回垃圾数据,原困数据严重损坏。StackOverflow 上也报道了同类状况。

在运行有有还还有一个 monitor 命令后,我的团队发现,在进行 Redis 操作或 RedisCallback 后,Spring 并没有自动关闭 Redis 连接,而事实上它是应该关闭的。将会再次使用未关闭的连接,将会会从意想不都都能否 的 Redis 密钥返回垃圾数据。有意思的是,将会在 RedisTemplate 中把事务支持设为 false,这一 间题就不不时不时老出了。

将会检测到聊天室已满但没有全局锁,集群中的各个节点就会创建自有的聊天室实例,为整个系统带来不可预知的因素。列表 4 介绍了应当怎么能否充分利用 SETNX(SET if Not eXists:将会不处于,则设置)这一 Redis 命令来执行全局悲观锁。

Redis 非常强大,但都都能否 能从整体上和根据特定编程场景做出进一步优化。都都能否 考虑以下技巧。

列表4:全局悲观锁

要是通过这篇文章向许多 Java 企业开发师介绍 Redis 的强大之处,尤其是将 Redis 用作远程数据缓存和用于易融化数据时。在这里我介绍了 Redis 的3个有效用例,分享了许多性能优化技巧,还说明了我的 Glu Mobile 团队怎么能否外理了 Spring Data Redis 事务配置不当造成的垃圾数据间题。要是这篇文章都都都能否 激发你对 Redis NoSQL 的好奇心,你要都都都能否 受到启发,在买车人的 Java 企业版系统里创发明者者一番天地。

[布隆过滤器]11 是并有无空间利用率较高的概率数据价值形式,用来测试某元素有无某个集的一员。将会会时不时老出误报匹配,但不不漏报。查询可返回“将会在集内”或“肯定都没有集内”。

本文转自 OneAPM 官方博客

下面以某个拍卖网站上的卖方库存为例。买方试图从卖方处购买某件商品时,你负责观察 Redis 事务内的卖方库存变化。一块儿,我想从同有有还还有一个库存中删除此商品。事务关闭前,将会库存被有有还还有一个以上程序触及(同类,将会有有还还有一个买方一块儿购买了同一件商品),事务将回滚,因此事务会选着提交。回滚后可开使重试。

请注意整型溢出并谨记,在这有有还还有一个类上进行操作都要付出相对较高的代价。

在每根请求中向 Redis 发送多个命令,这一 办法叫做管道技术。这一 技术节省了网络往返的成本,这一 点非常重要,将会网络延迟将会比 Redis 延迟要高上好几条量级。但这里处于有有还还有一个陷阱:管道中的 Redis 命令列表都要预先选着,因此应当彼此独立。将会有有还还有一个命令的参数是由先前命令的结果计算得出,管道技术就不起作用。列表 5 给出了 Redis 管道技术的有有还还有一个示例。

在 web 服务器集群中,每个节点都都都能否 是 Redis 发布/订阅渠道的有有还还有一个订阅者。发布到渠道上的消息也会被即时推送到所有相连节点。这一 消息都都能否 是并有无配置更改,都都能否 能是针对所有在线用户的全局通知。和恒定轮询相比,这一 推送沟通模式显然极为高效。

列表 3:全局唯一增量计数器

Redis 不不说像关系数据库管理系统那样能支持全面的 ACID 事务,但其自有的事务也非常有效。从本质上来说,Redis 事务是管道、乐观锁、选着提交和回滚的结合。其思想是执行有有还还有一个管道中的有有还还有一个命令列表,因此观察某一关键记录的潜在更新(乐观锁)。根据所观察的记录有无会被从前程序更新,该命令列表或整体选着提交,或完整篇 回滚。

Redis 的 ZSET 数据价值形式为游戏玩家排行榜提供了简洁的外理方案。ZSET 的工作办法许多同类于 Java 中的 PriorityQueue,各个对象均为经过排序的数据价值形式,井井有条。都都能否 按照分数排出游戏玩家在排行榜上的位置。Redis 的 ZSET 定义了一份内容丰富的命令列表,支持灵活有效的查询。同类,ZRANGE(包括 ZREVRANGE)可返回有序集内的指定范围要素。

假设 web 客户端都要轮询一台 web 服务器,针对某个数据库中的多个表查询客户指定更新内容。将会盲目地查询所有相应的表以寻找潜在更新,成本较高。为了外理这一 做法,都都能否 尝试在 Redis 中给每个客户端保存有有还还有一个整型作为脏指标,整型的每个数位表示有有还还有一个表。该表中处于客户所需更新时,设置数位。轮询期间,不不触发对表的查询,除非设置了相应数位。就获取并将从前的位屏蔽设置为 STRING 而言,Redis 非常高效。

亲戚亲戚大伙儿发现,亲戚亲戚大伙儿都都能否 先在 Spring 语境里配置有有还还有一个 PlatformTransactionManager(同类 DataSourceTransactionManager),因此再用 @Transactional 注释来声明 Redis 事务的范围,让 Spring 自动关闭 Redis 连接。

借助出色的强度和外理能力,Redis 极好地融合了布隆过滤器。搜索 GitHub,就能发现好多好多 Redis 布隆过滤器项目,其中许多还支持可调谐精度。

【编者按】本文作者为 Xinyu Liu,文章的第一要素重点概述了 Redis 方方面面的价值形式。在第二要素,将介绍完整篇 的用例。文章系国内 ITOM 管理平台 OneAPM 编译呈现。

Redis 发布/订阅渠道的工作办法同类于有有还还有一个扇出消息传递系统,或 JMS 语义中的有有还还有一个主题。JMS 主题和 Redis 发布/订阅渠道的有有还还有一个区别是,通过 Redis 发布的消息不不说持久。消息被推送给所有相连的客户端后,Redis 上就会删除这一 消息。换句话说,订阅者都要时不时在线都都能否 接收新消息。Redis 发布/订阅渠道的典型用例包括实时配置分布、简单的聊天服务器等。

根据这一 经验,亲戚亲戚大伙儿相信,在 Spring 语境里配置有有还还有一个单独的 RedisTemplate 是很好的做法:其饱带有还还有一个 RedisTemplates 的事务设为 false,用于大多数 Redis 操作,从前 RedisTemplates 的事务已激活,仅用于 Redis 事务。当然都要要声明 PlatformTransactionManager@Transactional,以防返回垃圾数值。

时不时的,用户就得应对服务器集群的争用。假设你从有有还还有一个服务器集群运行有有还还有一个预定作业。在没有全局锁的状况下,集群中的节点会发起冗余作业实例。假设某个聊天室分区可容纳 60 人。将会聊天室已满,就都要创建新的聊天室实例来容纳另外 60 人。

亲戚亲戚大伙儿先从有有还还有一个相对简单的用例开使吧:有有还还有一个增量计数器,可显示某网站受到几条次点击。Spring Data Redis 有有有还还有一个适用于这一 实用程序的类:RedisAtomicIntegerRedisAtomicLong。和 Java 并发包中的 AtomicIntegerAtomicLong 不同的是,什么 Spring 类能在多个 JVM 中发挥作用。

现在亲戚亲戚大伙儿来看看在服务器端 Java 企业版系统中把 Redis 当作数据库的各种用法吧。无论用例的简繁,Redis 都能帮助用户优化性能、外理能力和延迟,让常规 Java 企业版技术栈望而却步。

Redis 支持主从副本配置。和 MongoDB 一样,副本集也是不对称的,将会从节点是只读的,以便共享读取工作量。我在文章开头提到过,都都能否 能执行切分来横向扩展 Redis 的外理能力和存储容量。事实上,Redis 非常强大,据亚马逊公司的外部基准显示,类型 r3.4xlarge 的有有还还有一个 EC2 实例每秒可轻松外理 60 000 次请求。传说还有把每秒 700000 次请求作为基准的。对于中小型程序,通常不不考虑 Redis 切分。(请参见这篇非常出色的文章《运行中的 Redis》,进一步了解 Redis 的性能优化和切分。)

就在线服务和离线服务包括大数据分析等方面,布隆过滤器数据价值形式都能派上好多好多 用场。Facebook 利用布隆过滤器进行输入提示搜索,为用户输入的查询提取亲戚亲戚大伙儿和亲戚亲戚大伙儿的亲戚亲戚大伙儿。Apache HBase 则利用布隆过滤器过滤掉不带有特殊行或列的 HFile 块磁盘读取,使读取强度得到明显提升。Bitly 用布隆过滤器来外理将用户重定向到恶意网站,而 Quara 则在订阅后端执行了有有还还有一个切分的布隆过滤器,用来过滤掉后来查看完的内容。在我买车人的项目里,我用布隆过滤器追踪用户对各个主题的投票状况。

热门

热门标签