数据库

Redis简介

2019-02-02  本文已影响268人  若兮缘

内容概要

Redis是什么

官网:https://redis.io/
中文官网:http://www.redis.cn/

Redis的前世今生

redis的作者,叫Salvatore Sanfilippo,来自意大利的西西里岛,2008年这个作者在做一个网站实时统计系统LLOOGG,就是用来统计用户访问网站的记录,最开始采用的是MySQL来实现,可能是由于MySQL的特性不太适用于这个场景,或者是当时机器不太好,导致他未能实现这个功能,所以他就开发了redis第一个版本来实现这个功能。

Redis的作者并不满足只将redis用于这一款产品,而是希望有更多的人来使用它,于是同一年将Redis开源发布,短短几年时间Redis就在国内外拥有了庞大的用户群体。直到今天,Redis仍然是一个非常优秀的存储服务系统。

谁在使用Redis

假如说我们现在问Redis作者一个问题,有哪些公司在使用Redis,我想他可能会开玩笑的说,Who is not using Redis?言下之意难道还有公司不在使用Redis吗。当然这也只是一句玩笑,但是从侧面证明Redis的使用确实是非常广泛的。来看一下国内外有哪些大公司在使用Redis,如图所示

Redis特性

在下一小节我们会对Redis特性进行详细说明

Redis数据结构

如图是Redis内部使用的一个redisObject对象的结构,redis使用redisObject表示所有的key和value。
Redis数据类型有:string(字符串)、list(链表)、set(无序集合)、sorted set(有序集合)、hash(散列类型)

Redis典型使用场景

缓存系统

来看一个典型的场景,一个用户访问一个App Server,首先App Server会从cache中去获取,如果cache中有需要的数据,就直接返回给App Server,然后返回给用户。
如果cache中没有会从数据源Storage中去获取真实数据,为了下次方便在cache中获取相同的数据,我们会将Storage中的数据存到cache中,然后最终将Storage中的数据返回给用户。
实际当中cache可以是很多种类型,例如本地缓存、memcache等,这里我们就使用Redis来表示。

计数器

如图像微博的转发数和评论数,都是可以使用Redis来完成这样一个功能,redis有提供incr这样的命令可以在单线程下非常高效的进行计数,而且不会有计数错误的问题。所以像很多视频网站都会使用redis来对视频的播放数来进行一个记录,这些计数对产品决策以及上层的决策是非常有帮助的。

消息队列系统

消息队列系统在很多的公司已经成为项目中开发的一个标配,成熟的消息队列系统有很多,例如activemq、rabbitmq等。
而Redis也提供了像发布订阅、阻塞队列来实现类似的模型。在实现一些对消息队列功能不是很强要求的一些系统时,可以使用Redis来实现。

排行榜

Redis也可以实现类似排行榜的功能,Redis提供了一个有序集合对完成排行榜这样的功能是非常有帮助的。

社交网络

可以说Redis和社交网络是天然吻合的,很多媒体社交功能都可以使用redis实现,例如粉丝数、关注数、共同关注、时间轴列表等。

实时系统

最典型的如布隆过滤器,可以使用Redis提供的位图功能来实现布隆过滤器这样的功能,在对于一些垃圾邮件过滤、实时系统的处理会非常有帮助。

上一篇 下一篇

猜你喜欢

热点阅读