Redis进阶

本文详细介绍了Redis的进阶内容,包括Redis的单线程模型为何能保持高效率,持久化机制的RDB和AOP方式,如何与MySQL保证数据一致性,以及事务、主从复制、哨兵模式、Key过期策略,以及应对缓存穿透、缓存击穿和缓存雪崩的策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、进阶内容概述:

1. redis 面试题
2. jvm 了解
3. 并发编程线程 重点
4. java进阶 面向对象设计原则设计模式
5. spring框架 重点
6. mysql 重点
7. 分布式微服务架构
8. 面试讲解

二、Redis

非关系型数据库,以键值对形式存储在内存中,支持多种数据类型,支持数据持久化
使用场景:
1. 缓存(mybatis一级二级缓存)访问量大的(秒杀,点赞),修改少的,存储验证码(定时)
2. 计数器(点赞)
3. 排行榜(zst)
4. 数据去重(set)
5. 消息队列(list)排号
6. 分布式锁

a.Redis线程模型

6.0之前是单线程模式的,处理客户端和读写操作是一个线程的
6.0之后是多线程,将客户端链接请求部分采用多线程处理,执行读写命令依然采用单线程(线程安全的)

为什么设计为单线程模型速度也很快

  1. 基于内存操作:读写都是在内存中进行的
  2. 底层存储结构是哈希表,通过key计算哈希值,快速定位
  3. 单线程设计避免线程切换,减小开销

b.Redis持久化

Redis数据存储在内存中有可能数据丢失,所以提供数据持久化机制
两种方式:
RDB方式:是Redis中默认的持久化方式,以快照方式将某一时刻的Redis数据保存到rdb文件中,redis.conf文件中可以配置save规则
AOP方式:以日志形式记录写操作(增删改)命令,恢复数据时,逐行执行命令即可,在配置文件中开启,才可以

c.Redis和Mysql如何保证数据一致

  1. 当更新完My
### Redis 的高级用法和特性 #### 1. 使用带有自动补全和语法高亮的交互式 CLI 为了更高效地管理和操作 Redis 数据库,可以采用具备自动完成命令以及提供语法高亮特性的客户端工具。这种增强型CLI能够显著提升用户体验,在执行复杂查询时尤为有用[^1]。 ```bash # 安装并运行支持自动完成与语法高亮特性的Redis CLI pip install interactive-redis-cli interactive_redis_cli ``` #### 2. 启用多种持久化机制保障数据安全 通过配置 `redis.conf` 文件中的设置项来激活 RDB (快照) 和 AOF (追加仅文件) 这两种不同的持久化策略。这有助于防止意外断电或其他异常情况造成的数据丢失风险。当容器启动时指定挂载外部卷用于存储这些持久化的数据库副本,从而实现跨重启后的状态保持[^2]。 ```dockerfile # Docker Compose 或者直接使用Docker指令启动带持久化的Redis实例 docker run --name redis \ -v /local/path/to/data:/data \ -v /local/path/to/conf/redis.conf:/usr/local/etc/redis/redis.conf \ -p 6379:6379 -d redis \ redis-server /usr/local/etc/redis/redis.conf ``` #### 3. 创建受限账户提高安全性 对于生产环境下的 Redis 实例来说,创建一个专门的服务账号是非常重要的一步。该账号不具备 shell 访问权限,并且其家目录也被移除以减少潜在的安全威胁。此外还将 Redis 可执行程序及其工作路径赋予此特定用户组所有权,确保只有授权人员才能对其进行修改或访问[^3]。 ```bash # 添加不具Shell登录能力也不拥有Home Directory的新用户 sudo useradd -M -s /sbin/nologin redis # 更改Redis安装目录所属权给新建立的用户 chown -R redis:redis /path/to/installation/ ``` #### 4. 构建分布式集群架构扩展性能 随着业务增长带来的负载压力增大,单机版 Redis 很难满足需求。此时可以通过构建多节点组成的集群模式来进行横向扩容。每个节点负责处理一部分键空间内的读写请求,而整个系统的吞吐量则取决于所有成员共同协作的结果。在实际部署过程中需注意各服务器间网络连接质量及延迟等因素的影响[^4]。 ```bash # 分别于不同主机上依次启动多个Redis服务端进程作为集群组成部分之一 /usr/local/redis/src/redis-server /etc/redis/node-01.conf /usr/local/redis/src/redis-server /etc/redis/node-02.conf ... ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值