一:什么是Redis?
1.简介
- Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。
- Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API
- Redis是存储数据的软件(数据库),这个和语言无关,是一种
纯内存数据库
(所有数据都存在内存中) - 速度快,支持的数据类型多(5大数据类型:
字符串
、列表
、字典
、集合
、有序集合
)
2.有5种数据类型
它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 与范围查询, bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询。
3.Memcached 和 Redis 比较
- Redis是:单线程+单进程,数据类型丰富(只针对于Redis6.0以下)
- Memcache:多线程+多进程,但是 数据类型单一
4.对Windows不支持
Redis是用C写的一个开源软件,早期发行2.3W行,对Windows不支持
但是!Windows官方进行了编译,可以允许在Windows上运行(仅支持3.X版本)
5.官网
二:Redis的特性(8个)
1.速度快
- 10W OPS(每秒操作数10W,实测6W左右)
- 数据存在内存中(内存读写速度高达40~50GB/s)
- c语言实现,单线程模型
为什么Redis速度这么快?
1.单线程单进程,避免了进程线程间的切换
2.IO的多路复用(用的是epoll模型,只在Linux上支持)
3.是纯内存数据库,读写速度快
2.持久化
Redis有RDB
和AOF
机制
RDB其实就是把数据以快照的形式保存在磁盘上。什么是快照呢,你可以理解成把当前时刻的数据拍成一张照片保存下来。
全量备份总是耗时的,有时候我们提供一种更加高效的方式AOF,工作机制很简单,redis会将每一个收到的写命令都通过write函数追加到文件中。通俗的理解就是日志记录。
3.多种数据结构
- str:字符串类型 - 接口缓存
- list:列表 - 分布式
- hash:哈希(相当于Python中的字典) - 缓存
- set:集合 - 去重
- zset:有序的 - 排行榜
4.支持多种编程语言
基于TCP通信协议,各大编程语言都支持
5.功能丰富
发布订阅(消息) Lua脚本,事务(pipeline)等
6.简单
源代码几万行,不依赖外部库
7.主从复制
主服务器和从服务器,主服务器可以同步到从服务器中
8.高可用和分布式
2.8版本以后使用redis-sentinel 哨兵
支持高可用
3.0版本以后支持分布式
三:Redis的典型使用场景
1.缓存系统:
使用最广泛的就是缓存
2.计数器:
网站访问量,转发量,评论数(文章转发,商品销量,单线程模型,不会出现并发问题)
3.消息队列:
发布订阅,阻塞队列实现(简单的分布式,blpop:阻塞队列,生产者消费者)
4.排行榜:
有序集合(阅读排行,点赞排行,推荐(销量高的,推荐))
5.社交网络:
很多特效跟社交网络匹配,粉丝数,关注数
6.实时系统:
垃圾邮件处理系统,布隆过滤器
四:Redis的安装
见上篇博客