图片来源于网络
Redis是什么
Redis即Remote Dictionary Server(远程字典服务)是完全开源的,使用ANSIC语言编写的,遵守BSD协议的高性能的Key-Value数据库。Redis提供了丰富的数据结构,例如String、Hash、List、Set、SortedSet等等。数据是存在内存中的,同时Redis文持事务、持久化、LUA脚本、发布/订阅、缓存淘汰、流技术等多种功能特性,提供了主从模式、Redis Sentinel和Redis Cluster集群架构方案。
Redis的作者是意大利程序员Antirez,作者个人博客:https://antirez.com/latest/
Redis的官网是:https://redis.io
Redis的主要用途
-
配合关系型数据库快速读取
主流应用基本都是80%的读取和20%写入,Redis拿来配合MyMQL等实现读写分离,MySQL数据存储在硬盘,关系型数据库需要执行复杂SQL,相比下Redis基于内存 和按key读取明显效率更高,Redis在一些场景下的使用明显优于MySQL,例如计数器,排行榜,抢红包等。Redis通常用于一些特定场景,需要与MySQL一起配合使用,两者并不是相互替换和竞争关系,而是共用和配合使用
-
分布式锁
synchronized
关键字和各种锁只能在一个JVM进程中有效,多服务器的集群环境下利用Redis的单线程特点,可以做分布式环境下的并发控制 -
队列
Reids提供list和set操作,这使得Redis能作为一个很好的消息队列平台来使用。我们常通过Reids的队列功能做购买限制。比如到节假日或者推广期间,进行一些活动,对用户购买行为进行限制,限制今天只能购买几次商品或者一段时间内只能购买一次,也比较适合适用。
-
消息中间件
Reids具有发布订阅消息功能,因此可以作为一个简单的消息中间件来使用,例如修改了数据字典后通知应用程序执行刷新缓存的方法
-
分布式会话
将session或token对应的用户信息保存到Redis,实现集群环境下会话共享
Redis的优势
-
性能极高
Redis能读的速度是110000次/秒,写的速度是81000次/秒
-
数据类型丰富
不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储
-
支持数据的持久化
可以将内存中的数据保持在磁盘中重启的时候可以再次加载进行使用Redis支持数据的备份,即master-slave模式的数据备份