from:http://database.51cto.com/art/201504/471158.htm
一些Redis原语命令比如LPUSH、LTRIM和 LREM等等能够用来帮助开发者完成需要的任务——这些任务在传统的数据库存储中非常困难或缓慢。这是一篇非常有用并且实际的文章。那么要如何在你的框架中完成这些任务呢?
下面列出11种Web应用场景,在这些场景下可以充分的利用Redis的特性,大大提高效率。
1.在主页中显示最新的项目列表
Redis使用的是常驻内存的缓存,速度非常快。LPUSH用来插入一个内容ID,作为关键字存储在列表头部。LTRIM用来限制列表中的项目数最多为5000。如果用户需要的检索的数据量超越这个缓存容量,这时才需要把请求发送到数据库。
2.删除和过滤
如果一篇文章被删除,可以使用LREM从缓存中彻底清除掉。
3.排行榜及相关问题
排行榜(leader board)按照得分进行排序。ZADD命令可以直接实现这个功能,而ZREVRANGE命令可以用来按照得分来获取前100名的用户,ZRANK可以用来获取用户排名,非常直接而且操作容易。
4.按照用户投票和时间排序
这就像Reddit的排行榜,得分会随着时间变化。LPUSH和LTRIM命令结合运用,把文章添加到一个列表中。一项后台任务用来获取列表,并重新计算列表的排序,ZADD命令用来按照新的顺序填充生成列表。列表可以实现非常快速的检索,即使是负载很重的站点。
5.过期项目处理
使用unix时间作为关键字,用来保持列表能够按时间排序。对current_time和time_to_live进行检索,完成查找过期项目的艰巨任务。另一项后台任务使用ZRANGE...WITHSCORES进行查询,删除过期的条目。
6.计数
进行各种数据统计的用途是非常广泛的,比如想知道什么时候封锁一个IP地址。INCRBY命令让这些变得很容易,通过原子递增保持计数;GETSET用来重置计数器;过期属性用来确认一个关键字什么时候应该删除。
7.特定时间内的特定项目
这是特定访问者的问题,可以通过给每次页面浏览使用SADD命令来解决。SADD不会将已经存在的成员添加到一个集合。
8.实时分析正在发生的情况,用于数据统计与防止垃圾邮件等
使用Redis原语命令,更容易实施垃圾邮件过滤系统或其他实时跟踪系统。
9.Pub/Sub
在更新中保持用户对数据的映射是系统中的一个普遍任务。Redis的pub/sub功能使用了SUBSCRIBE、UNSUBSCRIBE和PUBLISH命令,让这个变得更加容易。
10.队列
在当前的编程中队列随处可见。除了push和pop类型的命令之外,Redis还有阻塞队列的命令,能够让一个程序在执行时被另一个程序添加到队列。你也可以做些更有趣的事情,比如一个旋转更新的RSS feed队列。
11.缓存
Redis缓存使用的方式与memcache相同。
网络应用不能无休止地进行模型的战争,看看这些Redis的原语命令,尽管简单但功能强大,把它们加以组合,所能完成的就更无法想象。当然,你可以专门编写代码来完成所有这些操作,但Redis实现起来显然更为轻松。
相关推荐
下面列出11种Web应用场景,在这些场景下可以充分的利用Redis的特性,大大提高效率。 1.在主页中显示最新的项目列表 Redis使用的是常驻内存的缓存,速度非常快。LPUSH用来插入一个内容ID,作为关键字存储在列表头部。...
在目前广泛的Web应用中,都会出现一种场景:在某一个时刻,网站会迎来一个用户请求的高峰期(比如:淘宝的双十一购物狂欢节,12306的春运抢票节等),一般的设计中,用户的请求都会被直接写入数据库或文件中,在高...
Redis还具有多种应用场景,如在Web应用中存储会话信息、实现消息队列、排行榜和计数器、分布式锁以及实时分析等。例如,Redis的发布订阅功能可以用来实现消息队列,通过将消息发布到特定的频道,可以让订阅该频道的...
这种高性能使得Redis成为构建高性能、可扩展的Web应用程序的理想选择。 数据持久化:虽然Redis主要基于内存运行,但它也支持数据的持久化。通过周期性地将更新的数据写入磁盘或将修改操作写入追加的记录文件,Redis...
高并发秒杀:商品秒杀、抢红包分布式锁:商品库存、账户资金增减这两种应用场景技术解决方案,无论是常规的系统,还是现在火热的区块链、物联网开发,都是必须且很有用的技术选型! 在本课程中,主要会讲到如下内容...
Redis 是一种基于键值对的NoSQL数据库,它提供了对多种数据类型(字符串、哈希、列表、集合、有序集合、位图等)的支持,能够满足很多应用场景的需求。Redis将数据放在内存中,因此读写性能是非常惊人的。与此同时,...
应用场景:Web网站系统 Redis 1.Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。 2.性能极高- Redis能读的速度是110000次/s,写的速度是81000次/s 应用场景:用来做缓存-...
爬虫(Web Crawler)是一种自动化程序,用于从互联网上收集信息。其主要功能是访问网页、提取数据并存储,以便后续分析或展示。爬虫通常由搜索引擎、数据挖掘工具、监测系统等应用于网络数据抓取的场景。 爬虫的...
基于区块链的这两大特点,本篇将介绍如何将区块链应用于政府办公,实现协同办公,数据脱敏上链,以及数据溯源打破数据孤岛等功能。以小程序为载体,体现区块链在实际生活中的具体作用。 区块链部分基于FISCO BCOS ...
本报告主要介绍了Vue3、SpringBoot、Redis、MySQL、Mybatis-plus、TypeScript等WEB开发技术的基本概念、特点、优势和应用场景,分析了这些技术在WEB开发中的协同作用和价值,展示了使用这些技术开发一个简单的在线...
本文实例讲述了php多进程应用场景。分享给大家供大家参考,具体如下: pcntl介绍 扩展介绍 php多进程模块依赖pcntl扩展,官方手册介绍:http://php.net/manual/zh/book.pcntl.php Note: 1. 此扩展在 Windows 平台上...
SRC包含其使用场景,例如大文件传输,websocket客户端和服务器,高性能消息队列,RPC,redis驱动程序,httpserver,mqtt,MVC,DNS,消息服务器等 SAEA.Socket是一个IOCP高端套接字网络框架,基于dotnet standard ...
【应用场景】: 竞赛准备:适用于各种教育部认可的竞赛,如全国电子设计大赛、全国大学生智能汽车竞赛等,他们可以借助这些资料了解竞赛的规则、要求和技巧。 学习与项目开发:可以用作毕设、课设、作业和竞赛项目的...
前端开发:HTML、CSS、JavaScript等用于构建网页和Web应用程序的技术。 后端开发:涉及服务器端编程、API开发、数据库集成等技术。 移动应用开发:包括iOS开发(使用Swift或Objective-C)和Android开发(使用Java或...
但是在一些复杂的应用场景中,我们需要管理的前端设备可能运行于不同的局域网中,不一定能直接通过设备的IP地址访问,所以上述使用直接ip地址访问的方式就不能适用了。要实现在复杂网络结构中对前端设备进行管理,...
关系型数据库(如MySQL、PostgreSQL)和非关系型数据库(如MongoDB、Redis)各有其特点和应用场景。关系型数据库适合存储结构化数据,而非关系型数据库则更适合处理大量非结构化数据。 此外,Web开发框架也是后端...
通俗易懂的Redis安装和配置指南,一看就会系列,利于新手学习,安装部署...Redis被广泛应用于Web开发、实时数据分析、缓存加速、队列任务处理等场景。它简单易用,性能优秀,是许多开发人员和企业的首选数据库之一。
web应用; version2.0为web服务性能提升:tomcat集群与页面分离版本; version3.0为分布式架构web系统:实现了分布式锁,队列等。版本与1.0,2.0区别较大,另起一个名为“SpaceX-Web-Distributed”项目。 maven依赖 ...
消息队列的场景 我们都知道,消息是在两台计算机之间传送的数据单位,这个“消息”可以非常简单,例如只包含文本字符串,也可以更复杂,可能包含嵌入对象。而所谓的“消息队列”是在消息的传输过程中保存消息的容器...