Redis(缓存/缓存数据库)
一、MyBatis缓存
1. 一级缓存
存放在SQLSession中
在mybatis.xml中配置缓存开启之后,查询生效
当实现增删改操作的时候失效
2. 二级缓存
- 存入mapper.xml文件的namespace中
- 当在mybatis.xml文件中配置了缓存开启之后,执行查询语句,SQLSession缓存关闭,mybatis会自动把执行的结果存入namespace中
- 当执行增删改的操作之后,二级缓存不失效;
手动清空二级缓存或者重启Tomcat二级缓存失效
二、什么样的数据,可以存入缓存?
经常使用且不经常更改的数据存入缓存,如身份证号、性别、国家省市区等
三、Redis
1. 关系型数据库
表和表之间可以产生关联,数据和数据之间,也可以产生关联,这种类型的数据库称之为关系型数据库,如MySQL、Oracle
2. 非关系型数据库(NoSql数据库:没有sql的数据库)
所有的数据都必须独立存在,数据和数据之间没有关联关系,而且,没有表的概念,这种类型的数据库,称之为非关系型数据库,如redis、MongoDB、HBase
Redis:键值对数据库
- redis中存入的数据是key-value形式的数据
- 对应json数据格式
- redis是通过key值来获取value值
- redis的支持5种数据格式
key:数据格式永远为String
value:
String:(最常见的)
List:有序,数据可重复
Set:无序,数据不可重复
ZSet:有序,数据不可重复
新版本的Redis支持的是Hash
Hash(key:value)
HashMap
HashTable
旧版本的Redis支持的是Map
Map
- redis缓存是将数据存入redis数据库,那为什么还要用redis?
redis在内存中做计算,是一个内存数据库,效率快,关系型数据库,只在硬盘中做计算。 - redis在内存中做计算,只要关机/重启,整个计算机的内存就要释放,redis最终会把数据持久化到硬盘。
- MongoDB:文档数据库(text)
- HBase:列数据库
3. Redis配置
- 从官网下载Redis
redis5.0.5(蓝奏云) - 使用xftp工具把redis压缩包上传到Linux服务器上
- 解压redis压缩包
- 进入redis的解压包中,编译并安装
make
make install
- 在redis根目录下创建redis_cluster文件夹
- 在redis_cluster中,分别创建端口号文件夹6380~6385,通过改变端口号,来模拟6台redis
- 在这些端口号文件夹中,创建redis.conf配置文件
#端口号:
port 6380
#设置ip,默认为127.0.0.1,需要将其改为集群可以访问的ip
bind 192.168.244.145
#redis后台运行
daemonize yes
#pidfile文件对应的端口号
pidfile /var/run/redis_6380.pid
#开启集群,把注释#去掉
cluster-enabled yes
#集群的配置
cluster-config-file node_6380.conf
#设置请求超时时间,默认为15秒
cluster-node-timeout 10100
#aof日志开启,有需要就开启,他会每次写操作都记录一条日志
appendonly yes
- 启动集群
在redis的src目录下执行
./redis-server …/redis_cluster/6380/redis.conf
依次启动6380~6385
- 创建redis缓存数据库
redis和mysql一样,虽然集群已经启动成功,但是redis并没有默认数据库,需要手动创建
在src目录下执行
./redis-cli --cluster create 192.168.xxx.xxx:6380 192.168.xxx.xxx:6381 192.168.xxx.xxx:6382 192.168.xxx.xxx:6383 192.168.xxx.xxx:6384 192.168.xxx.xxx:6385
- 检测redis的集群是否启动成功
ps -ef | grep redis
- 停止redis集群
在src执行
./redis-cli -h 192.168.244.145 -p 6380 shutdown
- 进入redis缓存数据库的命名
./redis-cli -h 192.168.244.145 -c -p 6380