nginx+Lua環境集成、nginx+Lua應用

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_…