Redis基本使用总结

Redis简介

底层数据结构

  • 动态字符串

  • 链表

  • 字典

  • 跳表

  • 整数集合

  • 压缩列表

数据类型

  1. String

  2. List

  3. Set

  4. Hash

  5. Sorted Set

  6. GEO

  7. STREAM(流)

应用场景

作为高性能的内存数据库系统,Redis广泛多种场景:

  • 缓存:提高数据访问速度;

  • 会话管理:在Web应用中,Redis可以用于存储用户会话信息,减少数据库负载;

  • 分布式锁:Redis可用于实现分布式锁,进行并发控制

  • 计数器:利用Redis的字符串类型,可以实现计数器功能,如商品库存、点赞数、密码重试次数等

  • 限流:通过设置键值对的过期时间,Redis可以用作限流工具。如锁定密码错误次数超过一定次数的用户

  • 消息队列:Redis支持发布/订阅模式,可以用作消息队列系统

  • 全局ID生成:Redis可以生成全局唯一ID,适用于分布式系统中的ID生成

  • 数据共享:在分布式系统中,Redis可以用于数据共享和同步

会话管理

使用Redis在Web应用中实现会话管理最佳实践_云数据库 Redis 版(Redis)-阿里云帮助中心

Redis入门实战:使用Redis实现会话管理 - 掘金

分布式锁

基于Redis的分布式锁实现 - 掘金

全局ID生成

Redis 实现全局唯一id-阿里云开发者社区

Redis 部署模式

  • 单机模式

  • 主从模式

    基础的高可用方案。支持读写分离、数据冗余和负载均衡,不支持自动故障转移。

  • 哨兵模式

    简单的高可用方案,适合数据量不大、不需要对数据进行分片存储的场景,主服务器如果出现故障,哨兵将其中一个从服务器升级为主服务器。

  • 集群模式

    数据按照键分区存储

Redis性能优化策略

(TODO)

  • 缩短键值对的长度

  • 过期时间

  • 限制Redis内存大小

  • 选择合适的淘汰策略

  • 命令优化

  • 持久化和备份策略

  • 监控和日志记录

Redis内存淘汰策略

  • volatile-lru

  • allkeys-lru

  • volatile-lfu

  • ……

Redis持久化策略

  • 定期

  • 关闭时

Redis如何实现分布式锁

pass

常见缓存异常问题及应对思路

  • 缓存击穿

    描述:热点数据缓存过期后,大量请求直接打到数据库中,导致数据库压力骤增。

    解决方法:1. 热点数据永不过期; 2. 异步刷新热点数据缓存

  • 缓存穿透

    描述:当查询一个实际上不存在的数据时,如果对该查询没有做任何处理(如缓存),每次都会访问数据库,这种现象称为缓存穿透。

    解决方法:对空结果进行缓存,设置较短的过期时间

  • 缓存雪崩

    描述:当大量的缓存数据在同一时间段内同时失效,导致这些请求都落到了数据库上,数据库压力骤增

    解决方法:设计缓存失效时间时采用随机化策略,避免所有缓存同时过期。

  • 数据一致性问题

    描述:缓存数据与数据库数据不一致。

    解决思路:

    • 写后更新

    • 读时更新

    • 同步双写

    • 异步双写

    • 延迟双删

  • 内存溢出

    描述:如果Redis内存使用超出限制,可能会导致写入失败或其他异常行为。

    解决方案

    • 合理配置Redis的最大内存限制以及淘汰策略(如LRU、TTL等)。
    • 定期监控Redis的内存使用情况,及时调整策略或扩展资源。

Redis基本命令

连接redis服务

redis-cli -h REDIS_HOST -p REDIS_PORT -a REDIS_PASSWORD

查看信息相关命令

  • 获取redis服务器统计信息
INFO
  • 查看有多少键
DBSIZE
  • ……

文档

CoolCats
CoolCats
理学学士

我的研究兴趣是时空数据分析、知识图谱、自然语言处理与服务端开发