简介
Redis是一个开源的、高性能的、基于键值对的缓冲与存储系统,通过提供多种键值类型来适应不同场景下的存储需求。同时Redis的诸多高级的功能使其可以胜任消息队列、任务队列等不同的角色。
特性
存储结构
Redis是以字典的形式存储数据,并允许其他应用可以通过TCP协议来访问字典当中的内容。redis字典中的键值处理是字符串以外,还可以使其他的内容,到目前为止,Redis支持的键值数据类型如下:
- 字符串类型
- 散列类型
- 列表类型
- 集合类型
- 有序集合类型
这种字典形式的存储结构与常见的MySQl等关系型数据库的二维表的存储结构有很大的差异。
内存存储与持久化
Redis将所有的数据存储在内存当中。由于内存的读写速度明显的优与硬盘,因此Redis在性能上比其他基于硬盘的数据库有很大的优势,在一台普通的笔记本电脑上,Redis可以在一秒内读写超过10万个键值。
将数据存储在内存中也有问题,比如在程序退出后,内存中的数据全部丢失。不过Redis提供了对数据持久化的支持,即可以把内存中的数据异步写入到内存中,同时不影响对外继续提供服务。
功能丰富
Redis虽然作为数据库开发的,但是由于它提供了丰富的功能,很多人将Redis用作缓存、队列系统等。
Redis可以为每个键值对设置生存时间,生存时间到后会自动清除键值对,这一个特殊的功能可以把Redis用来做缓存系统,在缓存时间过期以后可以自定删除键值对。
作为缓存系统,Redis还可以设置最大内存占用空间,当数据的存储到达空间限制以后,可以按照一定的规则自定淘汰不需要的键值对。
除此之外,Redis还可以用来实现队列,并且支持阻塞式的读取,可以很容易的实现一个高性能的优先级队列。