经常听别人说到redis redis redis,他到底是干啥用的,今天我们就来探究一下,简单粗暴,三个问题搞懂:
1. Redis为什么具有优势?
Redis是一款开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存也可持久化的日志型、Key-Value高性能数据库。Redis与其他Key-Value缓存产品相比有以下三个特点:
l 支持数据持久化,可以将内存中的数据保存在磁盘中,重启可再次加载使用
l 支持简单的Key-Value类型的数据,同时还提供List、Set、Zset、Hash等数据结构的存储
l 支持数据的备份,即Master-Slave模式的数据备份
同时,我们再看下Redis有什么优势:
l 性能极高——Redis能支持超过 100K+ 每秒的读写频率。
l 丰富的数据类型——Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。
l 原子——Redis的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子性执行,意思是要么成功执行要么失败完全不执行,多个操作也支持事务。
l 丰富的特性——Redis支持publish/subscribe、notify、key过期等。
2. Redis对于我们来说为什么重要?
1. 速度快:所有数据都在内存中完成,读写速度分别达到10万/20万。
2. 持久化:对数据的更新采用Copy-on-write技术,可以异步地保存到磁盘上。
3. 自动操作:对不同数据类型的操作都是自动的,很安全
4. 快速的主--从复制,官方提供了一个数据,Slave在21秒即完成了对Amazon网站10G key set的复制。
5. Sharding技术:很容易将数据分布到多个Redis实例中,数据库的扩展是个永恒的话题,Sharding这种技术把负载分布到多个特理节点上去的横向扩展方式用处越来越多。
3. Redis应用场景有哪些?
1、缓存,毫无疑问这是Redis当今最为人熟知的使用场景。再提升服务器性能方面非常有效;
2、排行榜,在使用传统的关系型数据库(mysql oracle 等)来做这个事儿,非常的麻烦,而利用Redis的SortSet(有序集合)数据结构能够简单的搞定;
3、计算器/限速器,利用Redis中原子性的自增操作,我们可以统计类似用户点赞数、用户访问数等;限速器比较典型的使用场景是限制某个用户访问某个API的频率,常用的有抢购时,防止用户疯狂点击带来不必要的压力;
4、好友关系,利用集合的一些命令,比如求交集、并集、差集等。可以方便搞定一些共同好友、共同爱好之类的功能;
5、简单消息队列,除了Redis自身的发布/订阅模式,我们也可以利用List来实现一个队列机制,比如:到货通知、邮件发送之类的需求,不需要高可靠,但是会带来非常大的DB压力,完全可以用List来完成异步解耦;
5、Session共享,以PHP为例,默认Session是保存在服务器的文件中,如果是集群服务,同一个用户过来可能落在不同机器上,这就会导致用户频繁登陆;采用Redis保存Session后,无论用户落在那台机器上都能够获取到对应的Session信息。
6、一些频繁被访问的数据,经常被访问的数据如果放在关系型数据库,每次查询的开销都会很大,而放在redis中,因为redis 是放在内存中的可以很高效的访问。
总结:以上三个问题是掌握redis的必备操作,希望能记下核心,有可能会作为企业面试题。
今天就分享到这里, 想要获取更多免费技术文章,请关注公众号:橙好测试开发,微信直接搜索