• 构建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

  1. $ wget https://download.redis.io/releases/redis-6.2.1.tar.gz
  2. $ tar xzf redis-6.2.1.tar.gz
  3. $ cd redis-6.2.1
  4. $ make

下载安装包

image.png

解压安装包

tar -xvzf redis-6.2.1.tar.gz -C ../redis/

进入目录编译

make
image.png
image.png

定制服务修改配置文件

vim redis.conf -> /dae -> i
后台执行 :daemonize yes

运行服务

image.png

运行客户端

image.png

关闭服务

在客户端执行命令 shutdown
image.png

Redis数据类型

Redis常用命令

Redis 快照

Redis可以定时保存当前内存数据
退出是保存启动后恢复

Redis master-slaver模式

Redis 哨兵模式

Redis 集群

参考

  1. Redis官网 https://redis.io/
  2. 菜鸟教程 https://www.runoob.com/redis/redis-tutorial.html
  3. 百度百科 https://baike.baidu.com/item/Redis/6549233?fr=aladdin