本节中,我们将会了解一些Redis的由来、使用场景、特性。
Redis的含义
REmote DIctionary Server(Redis) 本义是远程字典服务器,是一个由Salvatore Sanfilippo写的key-value存储系统。 Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。 它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Map), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。
Redis使用场景
Redis是一个开源的、高性能的、基于键值对的缓存与存储系统,通过多种数据类型的键值来适应不同场景下缓存与存储的需求。 Redis用户有的将它用作数据库,有的用作消息总线,也有的用来做cache。
Redis特性
国内如新浪微博、街旁网和知乎以及大大小小的互联网初创公司,国外如GitHub、StackOverflow、Flickr、暴雪和Instagram,都在使用Redis。那么,Redis何以如此之富有魅力呢?
- 存储结构 Redis以字典结构存储数据,允许其他应用通过TCP协议连接读取字典中的内容。Redis还可以对集合类型的数据进行如交集、并集这样的集合操作。比如在SQL中,你是否曾经为找到“”同时属于A领域和B领域但又不属于C领域和D领域的某些技能“”的实现性能不高且繁杂而哀叹过呢?
- 内存与持久化 Redis数据主要存储在内存中。因此Redis性能相比于其他基于硬盘存储的数据库具有非常明显的优势。Redis还提供了持久化功能,你可以将内存中的数据异步写入到磁盘中,同时不影响继续提供服务。
- 功能丰富 Redis虽然是定位于数据库开发的,但是由于其功能的丰富,越来越多的人将其用作缓存、消息队列来使用。
- Redis可以设置键生存时间 Time To Live,设置生存时间后,如果到期,会自动删除该键。这一功能可以错位缓存系统来使用。在某个场景中:一个程序将今天要发送的短信写入某个键,另外一个程序需要读取并发送到用户手机,由于某种原因第二个程序执行较慢(生产中严禁效率过低)导致今天的短信没有发送完造成数据积压,这时可以使用TTL设置过期时间,今天的短信过了零点就全部删除,第二天不再发送。
- Redis可以设置占用内存空间 作为缓存系统,Redis还有一大好处就是可以限定数据占用的最大内存空间,可以制定规则,当数据量超过某一容量时,按照规则删除不需要的键值。
- Redis与队列 Redis的list类型键可以用来实现队列,并且支持阻塞式读取,Redis还支持“”发布/订阅“”模式,关于此内容后面学习内容中会详细讲解到。
- Redis简介稳定 没有什么比一个简单易上手的东西更吸引人的了,Redis存储结构与交互操作十分简单。我们使用Redis命令就和RDBMS中使用SQL是一样的,举一个例子:找到学号为1的学生的名字,SQL(MySQL):SELECT name FROM student WHERE id = 1 LIMIT 1 ,相对应的Redis读取键名为student:1的散列键类型的name字段:HGET student:1 name。两相比较,Redis更加简便易于操作。Redis命令常用的就二十多种,后面我们都会用到。
本节内容仅是简单地介绍了Redis,具体操作以及业务场景中的使用,我们在后面会了解到。