Redis是什么

首先是灵魂三问,是什么,能做什么,为什么用它

一. Redis是什么

我们引用官网的描述(这个就不会错了)

Redis是一个使用内存存储数据结构,用作数据库,缓存和消息代理的开源项目。它支持多种数据结构,例如String,hash,List,Set,可排序Set,bitmaps,HyperLogLog,Geo。 Redis具有内置的复制,Lua脚本,LRU 淘汰机制,事务和不同级别的磁盘持久性,并通过Redis Sentinel和Redis Cluster自动分区提供高可用性

Redis is an open source (BSD licensed), in-memory data structure store, used as a database, cache and message broker. It supports data structures such as strings, hashes, lists, sets, sorted sets with range queries, bitmaps, hyperloglogs, geospatial indexes with radius queries and streams. Redis has built-in replication, Lua scripting, LRU eviction, transactions and different levels of on-disk persistence, and provides high availability via Redis Sentinel and automatic partitioning with Redis Cluster.

最好背下来,面试有人问这个,我也不知道能回答这个有什么用。

二. Redis能做什么

Redis能做什么,也可以说是Redis的应用场景

要回答这个,首先要了解Redis的特性

特性(优点)

1.基于内存,速度特别快 (读写速度分别达到10万/20万 )

2.支持多种数据结构,自动化管理数据

3.支持事务,原子性操作 (因为Redis使用的是单线程模型+IO多路复用技术)

4.支持持久化

5.官方提供集群,主从复制技术方案 (这个很重要,官方提供证明稳定性有保证,性能方面也得到内核级的优化)

缺点

1、由于 Redis 是内存数据库,所以,单台机器,存储的数据量,跟机器本身的内存大小。虽然 Redis 本身有 Key 过期策略,但是还是需要提前预估和节约内存。如果内存增长过快,需要定期删除数据。

2、Redis是单线程的,单台服务器无法充分利用多核服务器的CPU

---------------------------------------------------------------------我是分割线---------------------------------------------------------------------

好,了解完Redis的优缺点,我们就看一下,Redis适用于哪些场景

1.数据缓存

利用Redis存储与内存,读写都特别快的特性,很明显能用于热点数据的缓存和个性化文件缓存

2.计数器

由于Redis是单线程的,所以其中的计算时能保证原子性操作,不会出现传统数据库的脏读,幻读等并发问题

3.队列

Redis支持List的存储,所以使用Redis可以很方便地创建和管理一个消息队列

4.发布/订阅

Redis的Pub/Sub系统可以构建实时的消息系统
比如很多用Pub/Sub构建的实时聊天系统的例子。(这个暂时没实际用过)

5.集群时的数据中心

譬如集群时的sessoin,token等

其实利用Redis支持多种数据结构的特性,有很多种不同的用法,这里就不一一列举了

三. 为什么用Redis

Redis感觉能干的事情特别多,但它不是万能的,合适的地方用它事半功倍。如果滥用可能导致系统的不稳定、成本增高等问题。

其实市面上还有好几款类似的内存NoSql数据库,为什么要使用Redis呢,下面是Redis和其他数据库的对比

数据库对比

从上图可以看出,Redis的主要区别是,非关系型数据库,多数据类型,基于内存,单线程。

1.数据量少(弱于MongoDB)

2.对事务要求不高,持久化要求不高的场景(弱于Mysql,PostgreSQL)

3.除了缓存,还有其他功能要求的场景(性能弱于功能单一,更稳定的,多线程的Memcached)

总之,世界上不存在银弹,合适的场景选择合适的技术,这就是真理



每天学习一小时,每天进步一点点

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • redis是什么?都有哪些使用场景? Redis是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化...
    JAVA伯乐阅读 3,401评论 0 1
  • Redis是Remote Dictionary Server(远程数据服务)的缩写,由意大利人Antirez(Sa...
    JunChow520阅读 7,419评论 0 2
  • 1 redis优点有哪些? Redis是当前互联网世界最为流行的 NoSQL(Not Only SQL)数据库。N...
    祐吢房_2c9a阅读 4,221评论 0 2
  • Redis是一个开源的底层使用C语言编写的Key-Value存储数据库。可用于缓存、事件发布订阅、高速队列等场景。...
    未_来_可_期阅读 2,875评论 0 2
  • 我想要做一匹黑色野马 踩着时间的待黎明的曙光出发 从此以后再也没有了远方 驰骋在一望无尽的呼伦贝尔 我放肆奔跑与天...
    窮奇阅读 2,166评论 0 4

友情链接更多精彩内容