Redis第一天学习
一、Redis作用:
1、从系统的层面说, CPU的速度远远高于磁盘IO的速度;所以要想提高响应速度, 必须要减少磁盘IO的操作, 但是有很多信息又是存在数据库当中的, 而每次查询数据库就是一次IO操作
比如查询用户信息的例子,通常如下图:

2、当客户端调用getUser接口的查询用户信息的时候,执行顺序1、2、3、4;由于用户信息存放在DB中,所以2、3就有一次磁盘IO;当成千上万的用户频繁的调用这个接口的时候,这个看似简单业务的接口会使整个系统变慢,降低整个系统的性能。

用户访问量大,会导致MySQL服务器放入内存的数据过多,资源压力过大
解决问题的办法:

3、当用客户端调用getUser接口查询用户信息的时候,getUser接口直接去redis中查询,如果redis中有该用户信息,直接返回,从而避免了磁盘IO操作;如果redis中没有该用户信息,则从DB查询,并且把该用户信息存放到redis中,下一次查询的时候缓存中就有了。
4、这样在服务接口(getUser)和DB中间增加了一个缓存层,看似逻辑增加了,但当面对高并发的时候,比如上边提到的频繁查询用户信息的情况,只有第一次查询有磁盘IO操作,以后只要redis中存在就没必要再查询数据库了。由于没有了磁盘IO操作,并且redis所有数据都在内存操作,所以性能会大大提升。
二、Redis 数据类型
Redis支持五种数据类型 (了解)
string(字符串)
hash(哈希)
list(列表)
set(集合)
zset(sorted set:有序集合)
三、Redis事务
Redis 事务可以一次执行多个命令, 并且带有以下几个重要的保证:
事务是一个单独的隔离操作:事务中的所有命令都会序列化、按顺序地执行。
事务在执行的过程中,不会被其他客户端发送来的命令请求所打断。
事务是一个原子操作:事务中的命令要么全部被执行,要么全部都不执行。
一个事务从开始到执行会经历以下三个阶段:
开始事务。
命令入队。
执行事务。
以下是一个事务的例子, 它先以 MULTI 开始一个事务, 然后将多个命令入队到事务中, 最后由 EXEC 命令触发事务, 一并执行事务中的所有命令:
四、Redis服务器
一. 密码设置及验证
Redis服务器默认没有密码
设置密码
临时设置:

永久设置密码:


五、Redis做MySQL缓存
实验:使用redis做mysql数据库缓存
实验目的:通过此实验观察redis用作数据库缓存的效果,了解在工作中如何使用redis
此项目的效果:如果直接访问数据库将在终端中显示,否则不会在终端显示
实验过程:
安装redis(略)
安装mysql(略)
配置java环境
1、配置项目配置文件
1)解压
2)在mysql中创建shopping库,将user.sql导入到shopping库
3)创建项目用户test并授权其对shopping库拥有权限
4)修改配置文件(注意所有注释的地方)


5. 启动项目
进入bin目录,执行 ./startup.sh
1、访问测试:启动成功后,开启另外一个终端,进行测试
curl过后,数据库端的显示内容。
六、多实例
1、创建实例目录
2、创建实例配置文件 - 修改各实例的配置 (端口,pid文件,log文件,数据目录 ... )
3、利用实例配置文件启动实例