- 构建Redis知识体系、对全部内容有清晰认识、能够对他人讲解
- 运用Redis到实际开发、有实际运用、运用自如
- 部署运维Redis、调优、安全、备份与恢复等其他操作
- 集群、分布式锁
- 解决雪崩、穿透等其他复杂问题
Redis概述
简介
“Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主持。从2013年5月开始,Redis的开发由Pivotal赞助。”—— 百度百科
Redis是一个Key-Value数据库,属于NoSQL数据库(非关系型数据库),支持存储的value类型包括string字符串、list链表、set集合、zset有序集合、hash哈希类型,提供了丰富的操作,包括pop/push、add/remove、排序、交集差集等其他的操作。
主要功能:
- 内存存储和持久化
- 可设置数据有效时间
- 自带发布与订阅系统
- 定时器、计时器
主要特点:
- 支持**数据持久化**
- 支持**多种数据结构存储**
-
应用场景
Redis的应用:作热缓存(内存)(可以减少业务数据库访问加快速度、降低服务器压力)
(不常更新但常用数据)
缓存更新 失效:应用程序先从cache中取数据,没取到就去数据库中找,成功后放入缓存
- 命中:从cache中直接返回
- 更新:先把更新数据库,成功后,再让缓存失效
缓存淘汰的策略有两种:
(1) 定时去清理过期的缓存。
(2) 当有用户请求过来时,再判断这个请求所用到的缓存是否过期,过期的话就去底层系统得到新数据并更新缓存。
两者各有优劣,第一种的缺点是维护大量缓存的key是比较麻烦的,第二种的缺点就是每次用户请求过来都要判断缓存失效,逻辑相对比较复杂。具体用哪种方案,大家可以根据自己的应用场景来权衡。
1. 预估失效时间
2. 版本号(必须单调递增,时间戳是最好的选择)
3. 提供手动清理缓存的接口。
缓存预热
就是系统上线后,将相关的缓存数据直接加载到缓存系统。这样避免,用户请求的时候,再去加载相关的数据。
解决思路:
1,直接写个缓存刷新页面,上线时手工操作下。
2,数据量不大,可以在WEB系统启动的时候加载。
3,定时刷新缓存。
Redis安装与配置
Windows版Redis安装简单,考虑大多数使用场景是在Linux,只记录Linux安装Redis。
环境: - CentOS7 - Redis6.2.1
$ wget https://download.redis.io/releases/redis-6.2.1.tar.gz
$ tar xzf redis-6.2.1.tar.gz
$ cd redis-6.2.1
$ make
下载安装包
解压安装包
tar -xvzf redis-6.2.1.tar.gz -C ../redis/
进入目录编译
定制服务修改配置文件
vim redis.conf
-> /dae -> i
后台执行 :daemonize yes