redis 在现实世界的 5 个用法 -买球官网平台

11顶
0踩

redis 在现实世界的 5 个用法

2018-04-11 11:19 by 副主编 jihong10102006 评论(3) 有74311人浏览
redis是一个强大的内存数据结构存储,包含数据库,缓存和消息代理等多种用途。大多数人经常认为它不过是一个简单的键值存储,但其实它有更多的能力。下面我将会总结一些redis可以做的事情的真实例子。

1.全页面缓存

首先是整页缓存。如果你正在使用服务器端呈现的内容,则不需要为每个单独的请求重新渲染每个页面。使用如redis这样的缓存,你可以缓存经常请求的内容,从而大大减少请求最多的页面的延迟,并且大多数框架针对redis缓存页面都有hooks。
简单命令
/ set the page that will last 1 minuteset key "..." ex 60// get the pageget key

2.排行榜

redis令人耀眼的地方之一就是排行榜。由于redis在内存中,因此可以非常快速和高效地处理递增和递减。将此与每个请求运行sql查询比较,性能收益巨大!这与redis的排序集相结合意味着你可以以毫秒为单位抓取列表中评分最高的项目,而且实现起来非常容易。
简单命令
// add an item to the sorted setzadd sortedset 1 "one"// get all items from the sorted setzrange sortedset 0 -1// get all items from the sorted set with their score
zrange sortedset 0 -1 withscores

3.会话session存储

我所见的redis最常见的用途是会话存储。与其他会话存储(如memcache)不同,redis可以保留数据,以便在缓存停止的情况下,在重新启动时,所有数据仍然存在。即便不是需要严格持续的任务,此功能仍可以为你的用户省去大量的麻烦。没有人会乐于见到他们的会话被无缘无故随机删掉。
简单命令
// set session that will last 1 minuteset randomhash "{userid}" ex 60// get useridget randomhash

4.队列

使用redis可以做的一个不太常见,但非常有用的事情是排队。无论是电子邮件队列还是其他应用程序使用的数据,你都可以在redis中创建一个高效的队列。任何熟悉堆栈以及会push和pop项目的开发人员都可以轻松自然地使用此功能。
简单命令
// add a message
hset messages  zadd due  // recieving message
zrangebyscore due -inf  limit 0 1
hget messages // delete  message
zrem due hdel messages 

5.pub/sub

redis在真实世界的最终用法即我将在这篇文章中提出的pub / sub。这是redis内置的最强大的功能之一;得到的可能是无限的。你可以创建一个实时聊天系统,在社交网络上触发好友请求的通知等等。这个功能是redis提供的最被低估的功能之一,但功能非常强大,而且使用简单。
简单命令
// add a message to a channelpublish channel message// recieve messages from a channelsubscribe channel

结论

我希望你会喜欢这些redis在真实世界的使用。虽然这篇文章只抓住了redis能为你做的事情的表面,但是我希望你能从中获得应如何充分利用redis的启发。
  • 大小: 14.4 kb
来自:
11
0
评论 共 3 条 请登录后发表评论
3 楼 hongyabing 2018-05-02 15:25
2 楼 andy54321 2018-04-13 14:48
redis很强大。
尤其是结合 redis sentinel 和 3.x后支持 的 redis cluster。
1 楼 masuweng 2018-04-12 15:03
  

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • redis是一个强大的内存数据结构存储,包含数据库,缓存和消息代理等多种用途。大多数人经常认为它不过是一个简单的键值存储,但其实它有更多的能力。下面我将会总结一些redis可以做的事情的真实例子。  1.全页面...

  • redis是一个强大的内存数据结构存储,包含数据库,缓存和消息代理等多种用途。大多数人经常认为它不过是一个简单的键值存储,但其实它有更多的能力。下面我将会总结一些redis可以做的事情的真实例子。 1.全页面缓存 ...

  • redis是一个强大的内存数据结构存储,包含数据库,缓存和消息代理等多种用途。大多数人经常认为它不过是一个简单的键值存储,但其实它有更多的能力。下面将会总结一些redis...

  • 本文翻译自building a reactive architecture around redis[1],如果觉得本文对你有所帮助,不妨点个赞支持一下redis 是我遇到过的最强大、最通...

  • 之前,我已在本系列中讨论过 nosql 的概念,也介绍了一些与 java 平台兼容的 nosql 数据存储,其中包括 google 的 bigtable 和 amazon 的 simpledb。此外,我还讨论过较为常见的基于服务器的数据存储,比如 mongodb ...

  • redis streams roshan kumar是redis labs的高级产品经理。 redis streams是redis... 在本文中,我将解释如何在redis streams中使用使用者组。 消费者组是一种在多个客户端之间分配消息流以加快处理速度或减轻较慢...

  • redis 是当前互联网世界最为流行的 nosql(not only sql)数据库。nosql 在互联网系统中的作用很大,因为它可以在很大程度上提高互联网系统的性能。 redis 具备一定持久层的功能,也可以作为一种缓存工具。对于 ...

  • redis学习 nosql历史发展 单机 mysql 的美好时代 场景:网站访问量、数据量不大 瓶颈:无法解决数据量大,数据b树...在90年代,一个网站的访问量一般都不大,用单个数据库完全可以轻松应付。在那个时候,更多的都是静

  • 我们使用 redis 7.0.0,直接通过源码构建dragonfly 使用的则是构建自 https://github.com/dragonfly/dragonfly#building-from-source 的 6 月 3 日版源码(hash=e806e6ccd8c79e002f721a1a5ecb847bd7a06489)验证 ...

  • 不难发现,分布式锁比进程内本地锁要复杂得多,也重得多(本地锁操作是纳秒级别,分布式锁操作是毫秒级别),现实中,在使用分布式锁之前我们要思考下有没有其它更优方案,比如乐观锁、lua脚本等。//给用户增加积分...

  • 2有效的避免了获取redis发生down机或超时造成的阻塞状态,我们设置获取锁的尝试时间远远小于锁的超时时间,当reids不可用时立刻与下一个redis进行通信。 3对集群的每个节点进行加锁,如果大多数(n/2 1)加锁成功了...

  • 后端需要知道的关于redis的事,基本都在这里了。 此文后续会改为粉丝可见,所以喜欢的请提前关注。 你的点赞和评论是我创作的最大动力,谢谢。 《三天给你聊清楚redis》第1天先唠唠redis是个啥(18629字) ...

  • ”一、redis 博客文章翻译二、速度问题三、架构差异四、总结今年年中,一位前谷歌、前亚马逊的工程师推出了他创作的开源内存数据缓存系统 dragonfly,用 c/c 编写,基于 bsl 许可(business source license)分发...

  • redis 本文使用的为redis6.2.6版本 ...redis(remote dictionary server ),即远程字典服务,是一个开源的使用ansi c语言编写、支持网络、可基于内存亦可持久化的日志型、key-value数据库,并提供多种语言

global site tag (gtag.js) - google analytics