目录
一、在以往项目中可能遇到的问题
- 数据库的访问压力过大,为了降低数据库的访问压力,当多个用户请求相同的数据时,我们可以将第一次从数据库查询到的数据进行缓存,存储在内存中,以减少对数据库的访问次数(用空间换取时间)
- 页面的首页(静态页面)加载效率低,将大量的且不常改变的数据缓存在内存中,可以大幅度提高访问速度
- 集群部署下如果需要对相同的商品进行不同操作会发生冲突(分布式事务)
- 用户登录的验证问题
二、Redis介绍
2.1 Redis产生的背景
2008年萨尔瓦多开发了一个软件项目-网站实时统计,需要大量的数据库读写操作,对数据库的读写要求很高,但是普通的关系型数据库并不能满足如此高的读写操作,于是萨尔瓦多使用C语言自定义了一个数据库(数据存储系统-redis);后来他将Redis进行了封装,并对此进行开源,从此redis走进了开发人员的世界~
2.2 Redis的使用
Redis使用的C语言开发的,基于内存结构进行以“键值对数据”存储的,它是一款高性能、非关系型的Nosql(不支持SQL语句)的数据库
2.3 Redis支持的数据类型
Redis支持的数据类型 ,基于键值对进行存储的;具体有以下几种:
- 字符串(String)
- Hash(哈希、映射)
- 列表/队列-先进先出 (list)
- 集合(Set)
- 无序集合(ZSet)
2.4 Redis的特点
- Redis基于内存存储的,数据读写效率很高
- Redis本身支持持久化
- Redis虽然基于Key-Value存储,但是支持多种数据类型
- Redis支持集群,支持主从模式
三、Redis的应用场景
- 缓存:在绝大数的互联网项目中,为了提高数据库的访问效率,降低数据库的访问压力,可以使用Redis作为缓存来实现
- 点赞功能/浏览量功能/排行榜/计数器:对一些数据要求一致性不高但是实时变动比较大(对数据库的读写要求高)的时候的功能进行开发的时候
- 分布式锁:基于Redis操作可以实现分布式锁的功能
- 分布式会话:在分布式系统中,Redis可以实现session(共享缓存)
- 消息中间件:可以使用Redis实现应用之间通信
四、Redis的优缺点
4.1 Redis的优点
- redis 是基于内存结构,性能极高(读110000次秒,写81000次秒)
- redis 基于键值对存储,但是支持多种数据类型
- redis 的所有操作都是原子性,可以通过 Iua 脚本将多个操作合并为一个原子操作( Redis 的事务)
- reids 是基于单线程操作,但是其多路复用实现了高性能读写
4.2 Redis的缺点
- 缓存数据与数据库数据必须通过两次写操作才能保持数据的一致性
- 使用缓存会存在缓存穿透、缓存击穿及缓存雪崩等问题,需要处理
- redis 可以作为数据库使用进行数据的持久存储,存在丢失数据的风险
五、Redis的安装及简单使用
在安装Redis之前我们需要先安装gcc,在前面我们提到了,Redis是用c语言写的,二gcc就是提供c++语言支持的,所以我们在安装Redis之前需要对gcc进行安装
(1)、安装gcc
#安装gcc指令
yum -y install gcc
(2)、安装Redis
#安装指令
wget http://download.redis.io/releases/redis-5.0.7.tar.gz
注意:这里需要使用到wget指令,若之前未装wget则会“未找到wget指令”
此时则需要使用 yum -y install wget 进行wget的安装,安装成功后再次对Redis进行安装
(3)、解压Redis
#指令
tar -zvxf redis-5.0.7.tar.gz
解压之后输入“ll”指令,则会看到redis已经解压成功
(4)、解压之后进入redis-5.0.7目录
#指令
cd redis-5.0.7
(5)、对redis进行编译
#指令1
make MALLOC=libc
#指令2
make
(二选一即可)
(6)、安装redis
#指令
make install
到此redis就安装成功了,让我们测试一下吧~~
使用指令开启redis服务:redis-server
我们还可以使用:redis-server & 指令让redis后台运行。除此之外我们还可以通过指令redis-cli打开redis'的客户端(打开redis客户端必须是在启动redis的前提下进行)