redis内存数据库

发布于:2025-05-31 ⋅ 阅读:(24) ⋅ 点赞:(0)

Redis 简介

Redis(Remote Dictionary Server)是一个开源的、基于内存的键值存储数据库,支持多种数据结构(如字符串、哈希、列表、集合等)。它以高性能、低延迟和丰富的功能著称,常用于缓存、消息队列、实时分析等场景。


Redis 核心特性

内存存储:数据主要存储在内存中,读写性能极高(可达 10万+/秒 QPS)。
持久化支持:提供 RDB(快照)和 AOF(日志追加)两种持久化机制,确保数据安全。
数据结构丰富:支持字符串、哈希、列表、集合、有序集合、位图等。
高可用与扩展:通过 Redis Sentinel 实现高可用,Redis Cluster 支持分布式扩展。


Redis 常见使用场景

缓存加速:减轻后端数据库压力,如网页缓存、会话存储。
实时排行榜:利用有序集合(ZSET)快速计算排名。
消息队列:通过 LIST 或 Stream 实现轻量级队列。
计数器/限流:使用 INCR 命令实现原子计数。


Redis 基础操作示例

import redis

# 连接 Redis
r = redis.Redis(host='localhost', port=6379, db=0)

# 字符串操作
r.set('key', 'value')
print(r.get('key'))  # 输出: b'value'

# 哈希操作
r.hset('user:1', 'name', 'Alice')
print(r.hget('user:1', 'name'))  # 输出: b'Alice'

# 列表操作
r.lpush('tasks', 'task1', 'task2')
print(r.lrange('tasks', 0, -1))  # 输出: [b'task2', b'task1']

Redis 持久化配置

RDB(快照)
在配置文件中设置定时保存:

save 900 1      # 15分钟内至少1次修改触发保存
save 300 10     # 5分钟内至少10次修改触发保存

AOF(日志追加)
启用 AOF 并设置同步策略:

appendonly yes
appendfsync everysec  # 每秒同步一次

Redis 性能优化建议

合理选择数据结构:例如,频繁查询字段用哈希而非字符串。
设置过期时间:避免内存浪费,如 EXPIRE key 3600
批量操作:使用管道(Pipeline)减少网络往返。

pipe = r.pipeline()
pipe.set('key1', 'value1').set('key2', 'value2').execute()

Redis 高可用方案

Redis Sentinel:监控主从节点,自动故障转移。
Redis Cluster:分片存储数据,支持横向扩展。

配置 Sentinel 示例:

sentinel monitor mymaster 127.0.0.1 6379 2
sentinel down-after-milliseconds mymaster 5000