Redis简介
Redis数据库是目前NoSQL数据库中应用最广泛的数据库,其最大特征是实现数据的分布式缓存,随着集群设计的逐步普及,很多的开发过程中为了提高程序的处理性能,所以往往会使用缓存,但是在集群环境就必须考虑到其它服务也需要相应的数据,所以才需要建立分布式缓存。
Redis是由意大利人Salvatore Sanfileppo(网名:antirez)开发的一款内存高速缓存数据库;
Redis全称是:Remote Dictionary Server(远程数据服务),软件使用C语言编写;
Redis是开源的,使用key-value存储可用于构建高性能,可扩展的Web应用程序的解决方案;
支持丰富的数据类型,如:string,list,set,zset(sorted set),hash,GEO,Stream(据说性能可以与Kafka性能相当)
Redis特点
> 异常迅速:Redis响应速度快,美妙可以执行大约110000设置的操作,81000个/美妙的读取操作;
>支持丰富的数据类型:Redis支持列表,集合,可排序集合,哈希等数据类型;
>原子性操作:所有的Redis的操作都是源自,可以确保两个客户同时访问Redis服务器得到的是更新后的最新值;
>MultiUtility工具: 可以在缓存,消息传递队列中使用(Redis原生支持发布/订阅),在程序应用中:Web应用程序会话, 网站羊肉面点击数等任和短站的数据。
Redis与Memcached比较
>Redis支持比Memcached更多的数据类型;
>Redis支持主从结构(Master-Slave)可以实现数据备份;
>Redis支持数据持久化,可以将数据保存到磁盘中,重启时数据依然可用。
Memcached最大特点时所有的数据都保存在内存中,如果实例关闭。所有的数据都会消失。
Redis雪崩:
使用Redis主要是解决SQL数据库查询性能慢的问题,所以在实际的项目中会是首先将需要的数据保存在Redis数据库中,这样就可以避免SQL数据库的频发查询,但是如果按照则正常的设计思路来讲,如果此时的Redis没有数据则会向SQL数据库查询,呢吗如果此时Redis在高并发访问下已经瘫痪了(无法使用),最终的结果是是所有的用户请求都会发送给SQL数据库,那么首先SQL数据库会甭哭,随后连带数据层和业务层也会雪崩,最终影响到WEB端,导致整个程序不能运行。
造成雪崩因素有:网络因素,单实例Redis问题,所以实际项目之中就可以考虑进行Redis集群开发,因为Redis官方没有提供Redis集群的设计方案,所以世界上Redis的集群设计方案非常多。
数据会优先从Redis加载,如果无法加载,则会从传统数据库加载。