nginx+lua+redis实践

概述

nginx、lua访问redis的三种方式:

1。 HttpRedis模块。

指令少,功能单一 ,适合简单的缓存。只支持get 、select命令。

2。 HttpRedis2Module模块。

功能强大,比较灵活。

3。 lua-resty-redis库

OpenResty。api。适合复杂业务,节省内存。

OpenResty:基于nginx开源版本的一个扩展版本。集成了大量的精良的lua库。

OpenResty安装

安装wget

[root@localhost yum.repos.d]# yum install wget

下载资源库

[root@localhost yum.repos.d]# wget https://openresty.org/package/centos/openresty.repo

得到文件: openresty.repo 安装OpenResty

[root@localhost yum.repos.d]# yum install openresty

启动OpenResty

[root@localhost yum.repos.d]# /usr/local/openresty/nginx/sbin/nginx -p /usr/local/openresty/nginx/

[root@localhost yum.repos.d]#

测试:

我们用nat,注意端口映射。

初试测试lua

修改conf

server {

listen 8080; location / {

default_type text/html;

content_by_lua 'ngx.say("hello my openresty")'; }

}

redis安装

安装epel:第三方的源(软件安装包)。

[root@localhost /]# yum install epel-release

安装redis

[root@localhost /]# yum install redis

启动redis

[root@localhost /]# /usr/bin/redis-cli

Could not connect to Redis at 127.0.0.1:6379: Connection refused

Could not connect to Redis at 127.0.0.1:6379: Connection refused not connected>

[root@localhost /]# systemctl start redis

测试redis

redis服务端和redis客户端 启动redis客户端

[root@localhost /]# cd /usr/bin/     [root@localhost /]# which redis-cli /usr/bin/redis-cli

[root@localhost bin]# ./redis-cli

127.0.0.1:6379> set akey avalue OK

127.0.0.1:6379> get akey "avalue"

127.0.0.1:6379> quit

[root@localhost bin]# pwd /usr/bin

[root@localhost bin]#

HttpRedis

修改配置文件

mValue[root@localhost conf]# cat nginx-httpredis.conf worker_processes  1;

events {

worker_connections  1024;

}

http {

include       mime.types;

default_type  application/octet-stream;

sendfile        on;

keepalive_timeout  65;

server {

listen       80;

server_name  www.cpf.com;

root html;

index index.html;

location / {

default_type text/plain;

set $redis_key "m";

redis_pass 127.0.0.1:6379;

error_page 404 = @fetch; }

location @fetch {

root html; }

}

}

[root@localhost conf]#

以这个配置文件启动

[root@localhost conf]# /usr/local/openresty/nginx/sbin/nginx -p /usr/local/openresty/nginx/ -c /usr/local/o 测试一下:

1。 redis中没有 key为m的 键值对。

[root@localhost conf]# curl http://localhost/1.html

I am 1 html

2。我们通过redis,设置key为m的value是:"mValue"。(m=mValue)

[root@localhost conf]# curl http://localhost/1.html mValue

扩展:

用于降级。

HttpRedis2Module

[root@localhost conf]# cat nginx-httpRedis2Module.conf worker_processes  1;

events {

worker_connections  1024;

}

http {

include       mime.types;

default_type  application/octet-stream;

sendfile        on;

keepalive_timeout  65;

server {

listen       80;

server_name  www.cpf.com;

root html;

index index.html;

location /get {

set_unescape_uri $key 'n';

redis2_query get $key;

redis2_pass 127.0.0.1:6379; }

location /set {

set_unescape_uri $key 'n';

redis2_query set $key 'nValue';

redis2_pass 127.0.0.1:6379; }

}

}

[root@localhost conf]#

重启

[root@localhost conf]# /usr/local/openresty/nginx/sbin/nginx -p /usr/local/openresty/nginx/ -c /usr/local/o 测试:

[root@localhost conf]# curl localhost/get $-1

[root@localhost conf]# curl localhost/set +OK

[root@localhost conf]# curl localhost/get $7

n1Value

[root@localhost conf]#

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/918358.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/918358.shtml
英文地址,请注明出处:http://en.pswp.cn/news/918358.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

机器学习 K-Means聚类 无监督学习

目录 K-Means 聚类:从原理到实践的完整指南 什么是 K-Means 聚类? 应用场景举例 K-Means 算法的核心原理 K-Means 算法的步骤详解 可视化理解 K-Means 的优缺点分析 优点 缺点 如何选择合适的 K 值? 1. 肘部法(Elbow Me…

RabbitMQ面试精讲 Day 16:生产者优化策略与实践

【RabbitMQ面试精讲 Day 16】生产者优化策略与实践 开篇 欢迎来到"RabbitMQ面试精讲"系列第16天,今天我们聚焦RabbitMQ生产者优化策略与实践。在消息队列系统中,生产者的性能表现直接影响整个系统的吞吐量和可靠性。掌握生产者优化技巧不仅能…

Android 系统的安全 和 三星安全的区别

维度Android(AOSP 通用)Samsung(Knox 强化)本质差异一句话信任根标准 Verified Boot(公钥由谷歌或 OEM 托管)额外在 自家 SoC 里烧录 Knox 密钥 熔丝位,一旦解锁即触发 Knox 0x1 熔断&#xff…

开源大模型实战:GPT-OSS本地部署与全面测评

文章目录一、引言二、安装Ollama三、Linux部署GPT-OSS-20B模型四、模型测试4.1 AI幻觉检测题题目1:虚假历史事件题目2:不存在的科学概念题目3:虚构的地理信息题目4:错误的数学常识题目5:虚假的生物学事实4.2 算法题测试…

【无标题】命名管道(Named Pipe)是一种在操作系统中用于**进程间通信(IPC)** 的机制

命名管道(Named Pipe)是一种在操作系统中用于进程间通信(IPC) 的机制,它允许不相关的进程(甚至不同用户的进程)通过一个可见的文件系统路径进行数据交换。与匿名管道(仅存在于内存&a…

Baumer相机如何通过YoloV8深度学习模型实现危险区域人员的实时检测识别(C#代码UI界面版)

《------往期经典推荐------》 AI应用软件开发实战专栏【链接】 序号 项目名称 项目名称 1 1.工业相机 + YOLOv8 实现人物检测识别:(C#代码,UI界面版) 2.工业相机 + YOLOv8 实现PCB的缺陷检测:(C#代码,UI界面版) 2 3.工业相机 + YOLOv8 实现动物分类识别:(C#代码,U…

本文章分享一个本地录音和实时传输录音给app的功能(杰理)

我用的是杰理手表sdk,该功能学会就可自行在任何杰里sdk上做,库函数大致一样,学会运用这个方向就好。1.我们要验证这个喇叭和麦是否正常最简单的的办法,就是直接万用表测试,直接接正负极,看看是否通路&#…

Netty-Rest搭建笔记

0.相关知识Component、Repository、ServiceRepository //Scope设置bean的作用范围 Scope("singleton")//单例 prototype每次创建都会给一个新实例。 public class BookDaoImpl implements BookDao { //生命周期public void save() {System.out.println("book d…

工作笔记-----lwip网络任务初始化问题排查

工作笔记-----基于FreeRTOS的lwIP网络任务初始化问题排查 Author:明月清了个风Date: 2025/8/10PS:新项目中在STMF7开发板上基于freeRTOS和lwIP开发网口相关任务,开发过程中遇到了网口无法连接的问题,进行了一系列的排查…

Kotlin动态代理池+无头浏览器协程化实战

我看到了很多作者展示了Kotlin在爬虫领域的各种高级用法。我需要从中提取出最"牛叉"的操作,也就是那些充分利用Kotlin语言特性,使爬虫开发更高效、更强大的技巧。 我准备用几个主要部分来组织内容,每个部分会突出Kotlin特有的"…

PDF编辑工具,免费OCR识别表单

软件介绍 今天推荐一款功能全面的PDF编辑工具——PDF XChange Editor,支持文本、图片编辑及OCR识别,还能一键提取表单信息,满足多样化PDF处理需求。 软件优势 该软件完全免费,下载后双击图标即可直接运行,无需安装&…

OpenEnler等Linux系统中安装git工具的方法

在欧拉系统中安装 Git使用 yum 包管理器安装(推荐,适用于欧拉等基于 RPM 的系统):# 切换到 root 用户(若当前不是) su - root# 安装 Git yum install -y git验证安装是否成功:git --version若输…

UE5 第三人称视角如何设置camera移动旋转

“奇怪,这blog不支持md格式吗”## 第1步:设置玩家Pawn 创建一个蓝图类,继承自 Pawn,在游戏模式(Game Mode)中,将这个Pawn设置为默认 在组件面板中,添加一个 Spring Arm 组件 在组件面…

OpenCV 入门教程:开启计算机视觉之旅

目录 一、引言​ 二、OpenCV 简介 ​(一)什么是 OpenCV (二)OpenCV 的特点与优势 (三)OpenCV 的应用领域 三、环境搭建 (一)安装 OpenCV 库​ 四、OpenCV 基础操作 &#xf…

C++高频知识点(十九)

文章目录91. TCP断开连接的时候为什么必须4次而不是3次?92. 为什么要区分用户态和内核态?93. 说说编写socket套接字的步骤1. 服务器端编写步骤1.1 创建套接字1.2 绑定套接字1.3 监听连接1.4 接受连接1.5 数据传输1.6 关闭套接字2. 客户端编写步骤2.1 创建…

一个基于 epoll 实现的多路复用 TCP 服务器程序,相比 select 和 poll 具有更高的效率

/*5 - 使用epoll实现多路复用 */ #include <stdio.h> // 标准输入输出函数库 #include <stdlib.h> // 标准库函数&#xff0c;包含exit等 #include <string.h> // 字符串处理函数 #include <unistd.h> // Unix标准函…

元数据管理与数据治理平台:Apache Atlas 通知和业务元数据 Notifications And Business Metadata

文中内容仅限技术学习与代码实践参考&#xff0c;市场存在不确定性&#xff0c;技术分析需谨慎验证&#xff0c;不构成任何投资建议。Apache Atlas 框架是一套可扩展的核心基础治理服务&#xff0c;使企业能够有效、高效地满足 Hadoop 中的合规性要求&#xff0c;并支持与整个企…

rem:CSS中的相对长度单位

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》、《前端求职突破计划》 &#x1f35a; 蓝桥云课签约作者、…

【10】C#实战篇——C# 调用 C++ dll(C++ 导出函数、C++导出类)

文章目录1 导出C 类函数 、导出 C函数1.1 .h文件1.2 .cpp 文件1.3 C# 调用2 C与C#数据类型对应3 保姆级教程&#xff08;项目搭建、代码、调用&#xff0c;图文并茂&#xff09;1 导出C 类函数 、导出 C函数 C 生成动态库.dll 详细教程&#xff1a; C 生成动态库.dll 及 C调用…

Flutter 与 Android NDK 集成实战:实现高性能原生功能

Flutter 与 NDK 集成实现 Flutter 可以通过 Platform Channels 与原生代码&#xff08;包括使用 NDK 编写的 C/C 代码&#xff09;进行交互。以下是实现 Flutter 与 NDK 集成的步骤&#xff1a; 基本步骤 1. 创建 Flutter 项目 flutter create flutter_ndk_example cd flutter_…