非关系型,可持久化内存,分布式的缓存库
缓存的逻辑在ssm框架中使用
描述缓存在业务层的逻辑;
查询商品信息;
判断当前查询在缓存是否有数据
- 如果有数据,直接返回,当前请求结束
- 如果没有数据,查询持久层数据库数据,获取数据存储在缓存一份,供后续访问使用;
redis安装
解压 tar -xf redis.tar.zg
编译安装 make && make install
启动 redis-server
登录redis redis-cli
redis有五种数据类型
String Hash List Set Zset
String类型包含基础命令
keys * 查看当前redis节点,所有已存在的key值
set key value:存储一个key-value结构的数据
get key :获取当前key对应的value数据
select 整数
exists key 判断当前节点是否包含key的数据。
del key删除呢key值对应的key-value数据
type key 查看当前key的类型
save 将当前的内存数据保存到磁盘文件
flushall 将当前redis所有数据清洗,包括持久化文件,内存数据(创建集群的时候使用)
flushd清空一个分库的数据,不删除持久化文件内容
incr derc key 自增1 自减1 计步器
incrby decrby key 整数:对key的value数字自增自减去整数步数
redis多实例部署
单实例单线程的redis进程不足以高效率使用cpu和内存资源,所以一般来讲redis在同一台机器上要启动多个进程完成多实例部署;默认占用6379的情况下无法完成直接的3个实例启动,这里我们需要了解如何通过指定配置文件,将多实例部署在linux上
启动redis服务的命令redis-server 没有加载任何配置文件指定各种各样的配置信息(端口指定,ip绑定,后台运行)
例如在根目录存在一个配置文件的模板(大部分与默认启动的配置相同)redis.conf
#redis-server 配置文件的名称
配置文件(在启动时指定的配置文件,核心的配置文件)
/redis根目录/redis.conf
一个redis实例默认占用所有物理内存(上限是物理内存大小),在实际使用中需要限制大小
配置文件的修改内容
p61 bind 用#注释掉
如果需要绑定监听的ip(客户端只有通过被绑定的ip才可以利用
redis-cli -h ip地址链接服务器)
bing 127.0.0.1 106.75.101.219(外网可访问当前服务器的ip)
一旦用#注释bind,没有任何限制,只要可以链接服务器,都允许使用
redis
p80 保护模式不启动
保护模式开启,需要登录密码,改成no
p84 6379是默认端口(要启动其他的redis实例需要修改端口)
p105 当客户端空闲时间达到一小时,就会自动断开连接,0秒表示
不启用超时配置
p128 daemonize 设置成yes让redis服务器启动有守护进程管理
(后台执行):
p150 对应不同的redis实例,pid的文件名称需要和端口同名
每个进程在linux或者其他操作系统中都会占用pid号,当系统中的进程过多时,需要查找redis进程号可能比较麻烦,直接打开pid文件查看即可
P163logfile 需要指定,利用端口号命名,放到redis根目录
save 900(秒) 1(变动的数据条数)
当900以内,至少有1条数据变动,看是flush保存数据到文件
save 300 10
300秒以内至少10条数据变动,保存文件
save 60 10000
P237左右,指定dump的持久化文件,每个服务单独指向一个文件,
重启时,数据不会错乱
启动第二和第三个redis实例
redis-server redis.conf(指定启动文件)
编辑利用vim 的替换命令
:%s/6379/6380/g
需要第二个实例的配置文件
需要第三个实例的配置文件
拷贝redis.conf,用redis6380.conf,redis6381.conf
将拷贝的文件中只修改与端口有关内容
port
pid文件
6381的略
启动另外两个节点
#redis-server redis6380.conf
#redis-server redis6381.conf
#ps -ef|grep redis
指定端口登录客户端redis-cli -p [端口号] -h [ip]
#redis-cli -p 6380
#redis-cli -p 6381