Redis高级特性与性能优化

深入理解Redis高级特性,掌握性能优化技巧

Redis进阶指南

本文将深入介绍Redis的高级特性和性能优化技巧,帮助你更好地使用Redis。

数据结构使用

  1. 字符串优化
1
2
3
4
5
6
# 使用MSET/MGET批量操作
MSET key1 "Hello" key2 "World"
MGET key1 key2

# 使用SETEX设置过期时间
SETEX key 3600 "value"
  1. Hash表应用
1
2
3
4
5
6
# 存储用户信息
HMSET user:1 username "john" age "20" city "New York"
HGET user:1 username

# 计数器
HINCRBY pageviews page:1 1

持久化配置

  1. RDB配置
1
2
3
4
5
6
7
# redis.conf
save 900 1      # 900秒内至少1个key变化
save 300 10     # 300秒内至少10个key变化
save 60 10000   # 60秒内至少10000个key变化

# 开启压缩
rdbcompression yes
  1. AOF配置
1
2
3
4
5
6
7
8
9
# 开启AOF
appendonly yes

# 同步策略
appendfsync everysec

# 自动重写
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb

主从复制

  1. 主从配置
1
2
3
4
5
6
7
# 从节点配置
replicaof 192.168.1.1 6379
replica-read-only yes

# 主节点配置
requirepass masterpassword
masterauth masterpassword
  1. 复制状态监控
1
2
3
4
5
# 查看复制状态
INFO replication

# 查看延迟
REPLCONF ACK 0

哨兵模式

  1. 哨兵配置
1
2
3
4
# sentinel.conf
sentinel monitor mymaster 127.0.0.1 6379 2
sentinel down-after-milliseconds mymaster 5000
sentinel failover-timeout mymaster 60000
  1. 哨兵管理
1
2
3
4
5
# 查看主节点
SENTINEL get-master-addr-by-name mymaster

# 查看哨兵信息
SENTINEL master mymaster

集群部署

  1. 集群配置
1
2
3
4
# redis.conf
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
  1. 集群操作
1
2
3
4
5
# 创建集群
redis-cli --cluster create 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003

# 添加节点
redis-cli --cluster add-node 127.0.0.1:7004 127.0.0.1:7001

性能优化

  1. 内存优化
1
2
3
4
5
# 设置最大内存
maxmemory 2gb

# 内存淘汰策略
maxmemory-policy allkeys-lru
  1. 延迟监控
1
2
3
4
5
# 延迟诊断
redis-cli --latency

# 慢查询日志
SLOWLOG GET 10

缓存设计

  1. 缓存更新策略
1
2
3
4
5
6
7
# Cache-Aside Pattern
def get_user(user_id):
    user = redis.get(f"user:{user_id}")
    if user is None:
        user = db.get_user(user_id)
        redis.setex(f"user:{user_id}", 3600, user)
    return user
  1. 缓存穿透防护
1
2
3
4
5
# 布隆过滤器
def check_exists(item_id):
    if not bloom_filter.exists(item_id):
        return False
    return redis.get(f"item:{item_id}")

事务处理

  1. MULTI/EXEC
1
2
3
4
MULTI
SET key1 "value1"
SET key2 "value2"
EXEC
  1. Watch机制
1
2
3
4
5
WATCH account:1
MULTI
DECRBY account:1 100
INCRBY account:2 100
EXEC

发布订阅

  1. 基本操作
1
2
3
4
5
# 发布消息
PUBLISH news "Hello World"

# 订阅频道
SUBSCRIBE news
  1. 模式订阅
1
2
3
4
5
# 订阅模式
PSUBSCRIBE news.*

# 发布消息
PUBLISH news.tech "New Technology"

最佳实践

  1. 键设计规范

    • 使用冒号分隔
    • 加入业务标识
    • 控制key长度
  2. 运维建议

    • 监控内存使用
    • 定期清理过期键
    • 避免大key

掌握这些Redis高级特性,将帮助你构建高性能、可靠的缓存系统。

使用绝夜之城强力驱动