Redis (全称:Remote Dictionary Server 远程字典服务)是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。它是一个运行在内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。
Redis 比其他 key-value 缓存产品有以下三个特点:
- Redis 支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载到内存使用。
- Redis 不仅支持简单的 key-value 类型的数据,同时还提供 list,set,zset,hash 等数据结构的存储。
- Redis 支持主从复制,即 master-slave 模式的数据备份。
Redis 的特点
- 高性能: Redis 将所有数据集存储在内存中,可以在入门级 Linux 机器中每秒写(SET)11 万次,读(GET)8.1 万次。Redis 支持 Pipelining 命令,可一次发送多条命令来提高吞吐率,减少通信延迟。
- 持久化:当所有数据都存在于内存中时,可以根据自上次保存以来经过的时间和/或更新次数,使用灵活的策略将更改异步保存在磁盘上。Redis 支持仅附加文件(AOF)持久化模式。
- 数据结构: Redis 支持各种类型的数据结构,例如字符串、散列、集合、列表、带有范围查询的有序集、位图、超级日志和带有半径查询的地理空间索引。
- 原子操作:处理不同数据类型的 Redis 操作是原子操作,因此可以安全地 SET 或 INCR 键,添加和删除集合中的元素等。
- 支持的语言: Redis 支持许多语言,如 C、C++、Erlang、Go、Haskell、Java、JavaScript(Node.js)、Lua、Objective-C、Perl、PHP、Python、R、Ruby、Rust、Scala、Smalltalk 等。
- 主/从复制: Redis 遵循非常简单快速的主/从复制。配置文件中只需要一行来设置它,而 Slave 在 Amazon EC2 实例上完成 10 MM key 集的初始同步只需要 21 秒。
- 分片: Redis 支持分片。与其他键值存储一样,跨多个 Redis 实例分发数据集非常容易。
- 可移植: Redis 是用 C 编写的,适用于大多数 POSIX 系统,如 Linux、BSD、Mac OS X、Solaris 等。
Redis主要能做什么
a、缓存,这毫无疑问是Redis被大众所熟知的功能,也是其最强大的功能之一,在提示服务器性能方面非常有效
b、排行榜功能,利用Redis中有序集合的特性可以很容易的实现排行榜功能,由于排行榜功能一般都要求实时性,如果采用传统数据库来实现将会非常麻烦。
c、计数器/限速器,利用Redis中原子性的自增操作,我们可以统计类似用户点赞数、用户访问数以及在需要限制某些用户访问某个api的频率时(例如抢购),我们均可以使用Redis来代替传统数据库实现,因为传统数据库在实现该类需求时会有非常大的读写压力。
d、好友关系,利用集合的一些命令,如交集、差集、并集等能方便的搞定一些共同好友及共同爱好等功能
e、简单消息队列,除了Redis自身的发布/订阅模式,我们也可以使用其List来实现一个简单的消息队列,例如:到货通知、邮件发送之类的需求,不需要高可靠但是会带来非常大的db压力,完全可以用List来完成异步解耦
f、session共享,一般情况下session都是存在服务器的文件中,在集群部署下,同一用户登陆时session文件可能落在不同的服务器上,因此导致了频繁的登陆操作,采用Redis保存session信息后,无论用户访问到哪台机器都能够获取到对应的session信息。
当然Redis也不是万能的,如果某部分数据内容非常大或者说该部分数据访问频率很低,那么这部分数据便不建议存储在Redis中,数据太大会增加成本,访问频率过低则非常浪费内存资源
Mysql与Redis区别
MySQL是关系型数据库,主要用于存放持久化数据,将数据存储在硬盘中,读取速度较慢.
Redis是NOSQL,即非关系型数据库,也是缓存数据库,即将数据存储在缓存中,缓存的读取速度快,能够大大的提高运行效率,但是保存时间有限.
标签:缓存,认识,数据库,Redis,session,内存,数据 From: https://www.cnblogs.com/canyooo/p/17220409.html