为什么要使用redis?redis到底有什么用?

TheDisguiser 2020-03-29 20:38:49 java常见问答 7570

Redis是什么?为什么要使用redis?刚入行的程序员小伙伴们可能还不知道,今天小编就为大家详细介绍一下为什么要使用redis。

我们先介绍一下redis的基本概念吧,redis属于Nosql数据库,是一个key-value存储系统。虽然redis是key-value的存储系统,但是redis支持的value存储类型非常的多,比如:字符串、链表、集合、有序集合和哈希等。

那么我们为什么要使用类似redis这样的Nosql数据库呢?

1.当数据量的总大小一个机器放不下时;

2. 数据索引一个机器的内存放不下时;

3. 访问量(读写混合)一个实例放不下时。

为什么要使用redis

单机时代,存储只用一台机器装mysql,如果每次存储成千上万条数据,这样很会导致mysql的性能很差,存储以及读取速度很慢,然后就演变成缓存+mysql+垂直拆分的方式。

Cache作为中间缓存时代,将所有的数据先保存到缓存中,然后再存入mysql中,减小数据库压力,提高效率。

但是当数据再次增加到又一个量级,上面的方式也不能满足需求,由于数据库的写入压力增加,缓存只能缓解数据库的读取压力。读写集中在一个数据库上让数据库不堪重负,大部分网站开始使用主从复制技术来达到读写分离,以提高读写性能和读库的可扩展性。Mysql的master-slave模式成为这个时候的网站标配了。

主从分离模式时代,在redis的高速缓存,MySQL的主从复制,读写分离的基础之上,这时MySQL主库的写压力开始出现瓶颈,而数据量的持续猛增,由于MyISAM使用表锁,在高并发下会出现严重的锁问题,大量的高并发MySQL应用开始使用InnoDB引擎代替MyISAM。


为什么要使用redis

Nosql数据库的优势

1.易扩展

这些类型的数据存储不需要固定的模式,无需多余的操作就可以进行横向的扩展。相对于关系型数据库可以减少表和字段特别多的情况。也无型之间在架构的层面上带来了可扩展的能力

2.大数据量提高性能

3.多样灵活的数据模型

4、 丰富的附加功能

持久化:将储存在内存里面的数据保存到硬盘里面,保障数据安全,方便进行数据备份和恢复。

发布与订阅:将消息同时分发给多个客户端,可用于构建广播系统。

过期键:为键设置一个过期时间,让它在指定的时间之后自动被删除。

事务:原子地执行多个操作,并提供乐观锁功能,保证处理数据时的安全性。

脚本:在服务器端原子地执行多个操作,完成复杂的功能,并减少客户端与服务器之间的的通信往返次数。

复制:为指定的 Redis 服务器创建一个或多个复制品,用于提升数据安全性,并分担读请求的负担。

Sentinel:即 Redis 哨兵,监控 Redis 服务器的状态,并在服务器发生故障时,进行自动故障转移。

集群:创建分布式数据库,每个服务器分别执行一个部分写操作和读操作。

5.完善的文档

Redis 具有完善、易读的 文档 ,加上 Redis 本身功能的简单性,就算新手也可以轻松上手。

6.良好的支持

Redis 作者非常勤奋,在每个版本都会不断地增加有用的新功能。Bug 一旦出现就会很快被修复,齐全的测试套件以及稳扎稳打的开发策略,使得 Redis 非常健壮可靠。

有问题时,在 Redis 的论坛上发贴,或者到 Redis 的Github 页面发 issue,又或者直接和作者 Antirez 联系,通常都可以很快得到回应。

Pivotal 公司雇用 Antirez 全力开发 Redis,无后顾之忧,这个公司也提供专门的 Redis 开发和维护咨询服务。阿里云、百度云、Amazon、RedisLab 等公司都提供了基于 Redis 的应用服务。

7.广泛的使用

Twitter 使用 Redis 储存用户时间线。

StackOverflow 使用Redis 进行缓存和消息分发。

Pinterest 使用 Redis 构建关注模型(follow model)和兴趣图谱(interest graph)。

Flickr 使用 Redis 构建队列。

Github 使用 Redis 作为持久化的键值对数据库,并使用其构建消息队列。

新浪微博使用 Redis 实现计数器、反向索引、排行榜、消息队列和存储用户关系。

知乎使用 Redis 进行计数、缓存、消息分发和任务调度

以上就是关于为什么要使用redis的一点知识,你明白了吗?更多相关内容请持续关注本站。