概念:
Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API的非关系型数据库,它支持丰富的数据类型,如:string、list、set、zset(sorted set)、hash.
传统数据库遵守ACID规则.而Nosql(Not Only SQL的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称) 一般为分布式,而分布式一般遵循CAP定理.
Redis的特点:
- Redis以内存作为数据存储介质,读写数据的效率极高;
- redis虽然数据的读取都存在内存中,但是最终它是支持数据持久化到磁盘中,Redis的存储分为内存存储、磁盘存储和log文件;
- redis提供了丰富的数据结构;
- redis的所有操作都是原子性、支持事务,所谓的原子性就是对数据的更改要么全部执行,要么全部不执行;
- redis支持主从复制,主机会主动将数据同步到从机,可以进行读写分离;
- 储存在Redis中的数据是持久化的,断电或重启,数据也不会丢失.
- Redis以内存作为数据存储介质,所以读写数据的效率极高,远远超过数据库。以设置和获取一个256字节字符串为例,它的读取速度可高达110000次/s,写速度高达81000次/s。
- Redis跟memcache不同的是,储存在Redis中的数据是持久化的,断电或重启后,数据也不会丢失。因为Redis的存储分为内存存储、磁盘存储和log文件三部分,重启后,Redis可以从磁盘重新将数据加载到内存中,这些可以通过配置文件对其进行配置,正因为这样,Redis才能实现持久化。
- Redis支持主从模式,可以配置集群,这样更利于支撑起大型的项目,这也是Redis的一大亮点。
Redis的应用场景,它能做什么
场景:
- 热点数据的缓存
- 限时业务的运行
- 分页、模糊查询
- 计数器相关问题
- 排行榜相关问题
- 延时操作
- 分布式锁
- 点赞、好友等相互关系的存储
- 队列
众多语言都支持Redis,因为Redis交换数据快,所以在服务器中常用来存储一些需要频繁调取的数据,这样可以大大节省系统直接读取磁盘来获取数据的I/O开销,更重要的是可以极大提升速度.
拿一个大型网站举例子,比如A网站首页一天有100万人访问,其中有一个板块为推荐新闻.要是直接从数据库查询,那么一天就要多消耗100万次数据库请求.上面提到过,Redis支持丰富的数据类型,所以这完全可以用Redis来完成,将这种热点数据存到Redis(内存)中,要用的时候,直接从内存中取,这样极大的提高了速度和节约了服务器的开销.