Redis入门介绍
入门
-
互联网需求的3高
高并发,高可扩,高性能
-
Redis 是一种运行速度很快,并发性能很强,并且运行在内存上的NoSql(not only sql)数据库
-
NoSQL数据库 和 传统数据库 相比的优势
(1) NoSQL数据库无需事先为要存储的数据建立字段,随时可以存储自定义的数据格式。
(2) 而在关系数据库里,增删字段是一件非常麻烦的事情。如果是非常大数据量的表,增加字段,简直就是一个噩梦
Redis的常用使用场景:
- 缓存,毫无疑问这是Redis当今最为人熟知的使用场景。在提升服务器性能方面非常有效;一些频繁被访问的数据,经常被访问的数据如果放在关系型数据库,每次查询的开销都会很大,而放在redis中,因为redis 是放在内存中的可以很高效的访问
- 排行榜,在使用传统的关系型数据库(mysql oracle 等)来做这个事儿,非常的麻烦,而利用Redis的SortSet(有序集合)数据结构能够简单的搞定;
- 计算器/限速器,利用Redis中原子性的自增操作,我们可以统计类似用户点赞数、用户访问数等,这类操作如果用MySQL,频繁的读写会带来相当大的压力;限速器比较典型的使用场景是限制某个用户访问某个API的频率,常用的有抢购时,防止用户疯狂点击带来不必要的压力;
- 好友关系,利用集合的一些命令,比如求交集、并集、差集等。可以方便搞定一些共同好友、共同爱好之类的功能;
- 简单消息队列,除了Redis自身的发布/订阅模式,我们也可以利用List来实现一个队列机制,比如:到货通知、邮件发送之类的需求,不需要高可靠,但是会带来非常大的DB压力,完全可以用List来完成异步解耦;
- Session共享,以jsp为例,默认Session是保存在服务器的文件中,如果是集群服务,同一个用户过来可能落在不同机器上,这就会导致用户频繁登陆;采用Redis保存Session后,无论用户落在那台机器上都能够获取到对应的Session信息
Redis/Memcache/MongoDB对比
都是nosql数据库的著名代表
-
Redis和Memcache
(1)Redis和Memcache都是内存数据库。不过memcache还可用于缓存其他东西,例如图片、视频等等。
(2)memcache 数据结构单一kv,redis 更丰富一些,还提供 list,set, hash 等数据结构的存储,有效的减少网络 IO 的次数
(3)虚拟内存–Redis当物理内存用完时,可以将一些很久没用到的value交换到磁盘
(4)存储数据安全–memcache挂掉后,数据没了(没有持久化机制);redis可以定期保存到磁盘(持久化)
(5)灾难恢复–memcache挂掉后,数据不可恢复; redis数据丢失后可以通过RBD或AOF恢复 -
Redis和MongoDB
(1)redis和mongodb并不是竞争关系,更多的是一种协作共存的关系。
(2)mongodb本质上还是硬盘数据库,在复杂查询时仍然会有大量的资源消耗,而且在处理复杂逻辑时仍然要不可避免地进行多次查询。
(3)这时就需要redis或Memcache这样的内存数据库来作为中间层进行缓存和加速。
(4)比如在某些复杂页面的场景中,整个页面的内容如果都从mongodb中查询,可能要几十个查询语句,耗时很长。如果需求允许,则可以把整个页面的对象缓存至redis中,定期更新。这样mongodb和redis就能很好地协作起来