Redis安装
Redis用处
举个例子,A网站首页一天有100万人访问,其中有一个“积分商城”的板块,要直接从数据库查询,那么一天就要多消耗100万次数据库请求。如果将这些数据储存到Redis(内存)中,要用的时候,直接从内存调取,不仅可以大大节省系统直接读取磁盘来获得数据的IO开销,提高服务器的资源利用率,还能极大地提升速度。
- 页面缓存,Redis可将Web页面的内容片段,包括HTML,CSS和图片等静态数据,缓存到Redis实例,提高网站的访问性能。比如在电商类应用中,热销商品展示、秒杀推荐等数据面临高并发读的压力,分布式缓存Redis的高并发及灵活扩展,可轻松支持此类应用。
- 状态缓存,Redis可将Session会话状态及应用横向扩展时的状态数据等缓存到DCS实例,实现状态数据共享。在应对游戏应用中爆发式增长的玩家数据存储和读写请求时,使用分布式缓存Redis可通过将热点数据放入缓存,加快用户端访问速度,提升用户体验。
- 数据缓存(核心),Redis可作为服务层的二级缓存对外提供服务,减轻数据库的负载压力,加速应用访问
- 事件缓存,Redis可提供针对事件流的连续查询(continuous query)处理技术,满足实时性需求。
- 单线程服务,不管是多少高并发分布式的请求,到了redis上都是单线程的队列服务
window安装
这个版本很低,跟不上Linux的安装包,只能做本地调试,查看菜鸟教程的笔记
- 去github上下载安装包,安装后
- 在文件夹里打开cmd
redis-server.exe redis.windows.conf
- 打开另一个cmd
# 连接服务
redis-cli.exe -h 127.0.0.1 -p 6379
# 设置键值对:
set myKey abc
# 取出键值对:
get myKey
Linux安装
- 去官网下载tar.gz安装包,保存起来
- 用Xftp传到local文件夹里,解压
# 整个解压编译过程
tar -zxvf redis-5.x.tar.gz
cd redis-2.8.17
make
# 设置后台运行
ls
vim redis.config
# 将bind 127.0.0.1 改成 0.0.0.0 允许所有服务器访问,为了多服务器集群
# requirepass "密码" 设置密码,默认没有密码
# 将daemonize的值设置为yes,原本是no,后台运行
:wq!
# 启动
./src/redis-server ./redis.conf
# 查看进程
ps -ef|grep redis
# 输入密码
auth 密码
docker
# 下载
docker pull registry.docker-cn.com/library/redis
# 开启
docker run --name myRedis -p 6378:6379 -d redis:latest
持久化配置
redis是存在内存里的,查询速度飞快,但是一旦关机数据就会删除,所以需要配置持久化【默认没有开启持久化】,持久化是redis里有个子进程,会定时从主进程里获取数据进行本地文件存储【文件的名字可以在配置文件里自定义】,并且停机后重启会先把本地的存储提取到内存里,因为是定时的,所以最后一次保存之后的数据会丢失
- RBD模式是最常用的,在配置文件里叫dump.rbd,开启持久化的方式是在配置文件里添加
# sava 时间 次数,可以配置多个
save 60 5 # 在60s内执行5次保存或者更新就会执行一次持久化
save 1000 10000 # 同上
...
- AOF,也是需要配置,查看【狂神redis】的第29集
缓存问题
- 穿透,一般情况下redis的数据是不对应mysql的,是redis里没有再去查mysql,mysql有再把数据存入redis,这样所有没有的数据都会被穿透
- 击穿,穿透并不是问题,但是高并发的穿透就会让mysql死机,解决方案是redis提前把mysql的数据存好【预加载数据技术】,并且不设置过期,所有redis没查到的数据全部拦住
- 雪崩,就是指很多的攻击到达了redis,redis被击穿后死机,所有相关服务都会因为redis的死机失去作用然后集体死机,解决方法是redis主从和集群