Redis浅析

最近回顾了一下Redis,权且总结一下:

NoSQL

要了解Redis,最好先了解NoSQL(not only sql),泛指非关系型数据库,它包括Redis、MongodDB等。
NoSQL的出现绝非偶然,它是为了应对关系型数据库在Web2.0时代出现的数据超大规模、高并发、sns动态网站等新的需求的吃力表现而出现的。
NoSQL有高并发读写、可以对海量的数据进行高效率的存储和访问、具有良好的高可扩展和高可用性的优点、具有灵活的数据模型的优点。

什么是Redis

一种用C语言开发的开源的支持网络、可基于内存亦可持久化的日志型、Key-Value的非关系型数据库。

为什么用Redis

1.c语言实现,距离系统更近
2.数据都在内存中,访问速度更快
3.单线程,避免线程切换开销及多线程的竞争问题(单线程仅仅是说在网络请求这一模块上用一个请求处理客户端的请求,像持久化它就会重开一个线程/进程去进行处理)
4.采用epoll,非阻塞I/O,不在网络上浪费时间

Redis能做什么

1.缓存,毫无疑问这是Redis当今最为人熟知的使用场景。再提升服务器性能方面非常有效;

2.排行榜,如果使用传统的关系型数据库来做这个事儿,非常的麻烦,而利用Redis的SortSet数据结构能够非常方便搞定;

3.计算器/限速器,利用Redis中原子性的自增操作,我们可以统计类似用户点赞数、用户访问数等,这类操作如果用MySQL,频繁的读写会带来相当大的压力;限速器比较典型的使用场景是限制某个用户访问某个API的频率,常用的有抢购时,防止用户疯狂点击带来不必要的压力(限速器也是对请求限流的一种实现方式)。

4.好友关系,利用集合的一些命令,比如求交集、并集、差集等。可以方便搞定一些共同好友、共同爱好之类的功能;

5.简单消息队列,除了Redis自身的发布/订阅模式,我们也可以利用List来实现一个队列机制,比如:到货通知、邮件发送之类的需求,不需要高可靠,但是会带来非常大的DB压力,完全可以用List来完成异步解耦;

6.Session共享,默认Session是保存在服务器的文件中,即当前服务器,如果是集群服务,同一个用户过来可能落在不同机器上,这就会导致用户频繁登陆;采用Redis保存Session后,无论用户落在那台机器上都能够获取到对应的Session信息。

你可能感兴趣的:(Redis)