redis内存数据库
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