linux

LNMP架构下Redis使用指南

小樊
55
2025-08-27 07:04:22
栏目: 云计算

LNMP架构下Redis使用指南

一、环境准备

确保已搭建LNMP环境(Linux+nginx+MySQL+PHP),可通过包管理器安装基础组件:

二、安装Redis及扩展

  1. 安装Redis服务端

    # Ubuntu/Debian  
    sudo apt install redis-server  
    # CentOS/RHEL  
    sudo yum install redis  
    

    启动并设置开机自启:

    sudo systemctl start redis-server  
    sudo systemctl enable redis-server  
    
  2. 安装PHP Redis扩展

    # 使用PECL安装  
    sudo pecl install redis  
    # 编辑php.ini(路径根据PHP版本调整)  
    echo "extension=redis.so" | sudo tee -a /etc/php/7.x/fpm/php.ini  
    sudo systemctl restart php-fpm  
    

    验证安装:创建phpinfo.php文件,访问页面确认redis模块已加载。

三、配置Redis服务

  1. 修改Redis配置文件
    编辑/etc/redis/redis.conf

    • 绑定地址bind 127.0.0.1(仅允许本地访问,生产环境建议限制IP)
    • 端口:默认6379,可按需修改
    • 持久化
      • RDB:设置save 900 1(900秒内至少1次修改时生成快照)
      • AOF:设置appendfsync everysec(每秒同步一次写操作)
        重启Redis生效:sudo systemctl restart redis-server
  2. (可选)配置Nginx与Redis交互
    若需通过Nginx直接代理Redis(如API场景),在Nginx配置中添加:

    location /redis/ {  
        proxy_pass http://127.0.0.1:6379;  
        proxy_set_header Host $host;  
    }  
    

    但通常建议通过PHP代码间接操作Redis,Nginx仅作为请求入口。

四、在PHP代码中使用Redis

  1. 基础操作示例

    <?php  
    $redis = new Redis();  
    $redis->connect('127.0.0.1', 6379);  
    // 设置缓存(1小时过期)  
    $redis->set('user:1', json_encode(['name' => 'Alice']), 3600);  
    // 获取缓存  
    $user = $redis->get('user:1');  
    echo $user ? json_decode($user, true)['name'] : 'Cache Miss';  
    ?>  
    

    支持数据类型:字符串、哈希、列表、集合等,可通过hSetlPush等方法操作。

  2. 缓存应用场景

    • 数据库查询缓存:查询结果存入Redis,设置过期时间,减少数据库压力。
    • 会话存储:将$_SESSION数据存入Redis,实现跨服务器共享(需配置PHP会话处理器为redis)。
    • 消息队列:利用LPUSH/BRPOP实现简单队列,处理异步任务。

五、安全与优化

  1. 安全配置

    • 为Redis设置密码:在redis.conf中添加requirepass yourpassword,并在PHP代码中使用$redis->auth('yourpassword')
    • 限制Redis访问IP,避免暴露在公网。
  2. 性能优化

    • 调整redis.conf中的maxmemory参数,限制内存使用,避免OOM。
    • 生产环境建议启用AOF持久化,确保数据安全。

六、测试与验证

  1. 通过redis-cli测试服务是否正常:
    redis-cli ping  # 应返回"PONG"  
    redis-cli get user:1  # 查看缓存数据  
    
  2. 访问PHP测试页面,确认缓存逻辑正确。

参考来源

0
看了该问题的人还看了