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)

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



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

你可能感兴趣的:(Redis是什么)