Redis 概述
首先,先简单简绍下Redis,使用ANSI C语言编写、支持网络、基于内存但支持持久化。性能优秀,并提供多种语言的API。Redis是基于键值对的noSQL数据库,把键值对当作一个map集合,只是Redis的Value,具有多种类型,如String,HaSh、List、set、Zset基本的数据结构。
Redis 在我们使用中,缓存和集群是其应用的主要两大场景,但是由于它具有丰富的数据结构,所以在特定的情况下,选择合适的数据结构尤其重要,用Rdis 就是为了使用它的高性能,高扩展,高可靠的特性。所以只有了解精通Redis 才能更好的选取合适的数据结构,去处理合适的问题。
Redis应用场景
1,缓存
首先几乎所有的大型网站,包括一些公司,都在使用缓存,设计一个合理的缓存设计,可以为我们的项目稳定保驾护航,合理的使用缓存机制不仅仅可以加快数据的访问速度,而且可以有效的降低数据库的访问压力,Redis提供了键值的过期时间,并且也提供了控制最大内存,和内存溢出的淘汰策略。
Redis官方,Redis 单台可以达到10万+的并发。而mySql读在2000间。
2.排行榜系统
排行榜系统几乎所有进行社交属性的网站都在使用。如按照时间的排行耪,按照热度的排行榜,按照其特定规则的排行榜,按照各种复杂度计算出的排行榜。Redis提供List 和zset集合,通过这两个数据结构的特性,可以更加方便的帮助我们去计算。
3计数器的应用
Redis支持计数功能,性能非常好。非常适用于各种网站的计数
5.消息队列
消息队列,是现在所有大的网站必备的基础组件,应为它具有业务解耦,非实时业务削峰的特性,Redis提供了发布订阅功能阻塞队列功能。(不是专业的消息队列)
Redis的三大特性
1.高性能
包括线程模型,数据结构,持久化,网络框架,
2.高可靠
主从复制,哨兵机制
3.高扩展
数据分片,和负载均衡
Redis的应用场景是非常多的我们需要了解它的特性,如果不了解,我们可能会遇到以下问题
1.数据结构的复杂度,跨CPU核的访问会导致CPU飙升的问题
2,主从同步和AOF竞争会导致内存的问题
3.在SSD上做快照的性能抖动,会导致存储持久化问题
4,多实例时的异常网络丢包问题