CentOS7---部署LNMP數據存儲到redis

来源:https://www.cnblogs.com/sre-chan/archive/2023/04/17/17325202.html
-Advertisement-
Play Games

一、部署LNMP及redis 1、部署LNMP,需要將 tengine-2.2.0.tar.gz 拷貝到虛擬機的 /root 目錄下 步驟一:安裝nginx 源碼安裝相關軟體包 # pcre-devel做正則匹配,zlib-devel做數據壓縮 [root@template ~]# yum -y i ...


一、部署LNMP及redis

1、部署LNMP,需要將 tengine-2.2.0.tar.gz 拷貝到虛擬機的 /root 目錄下

步驟一:安裝nginx 源碼安裝相關軟體包

# pcre-devel做正則匹配,zlib-devel做數據壓縮
[root@template ~]# yum -y install gcc pcre-devel zlib-devel

步驟二:解壓並編譯安裝Nginx

# 下載並解壓
[root@template ~]# tar xf tengine-2.2.0.tar.gz -C /usr/local/
[root@template ~]# cd /usr/local/tengine-2.2.0/
[root@template tengine-2.2.0]# ls
AUTHORS.te  CHANGES     CHANGES.ru  conf       contrib  html     man      packages  README.markdown  tests
auto        CHANGES.cn  CHANGES.te  configure  docs     LICENSE  modules  README    src              THANKS.te

# 編譯安裝
[root@template tengine-2.2.0]# ./configure
[root@template tengine-2.2.0]# make && make install

報錯解決:

# 安裝對應的開發包
[root@template tengine-2.2.0]# yum install openssl-devel -y

步驟三:安裝php相關軟體包

[root@template tengine-2.2.0]# yum -y install php php-fpm

PS:在這裡不用安裝mariadb,因為數據不存儲在mariadb裡面,存儲到redis裡面

步驟四:修改配置文件,開啟php動態頁面功能

[root@template tengine-2.2.0]# vim /usr/local/tengine-2.2.0/conf/nginx.conf

 ......
# 處理的是php動態網站; ~ 代表匹配; .正則代表任意單個字元,需要\進行轉義;$ 以.php結尾;fastcgi_pass 指轉發請求; fastcgi_index 指定php預設頁面
          location ~ \.php$ {
              root           html;
              fastcgi_pass   127.0.0.1:9000;
              fastcgi_index  index.php;
              include        fastcgi.conf;
          }
 ......

步驟五:啟動php-fpm,nginx服務,並查看其埠號

[root@template tengine-2.2.0]# systemctl restart php-fpm.service
[root@template tengine-2.2.0]# find / -name nginx
/usr/local/tengine-2.2.0/objs/nginx
/usr/local/nginx
/usr/local/nginx/sbin/nginx
[root@template tengine-2.2.0]# /usr/local/nginx/sbin/nginx
[root@template tengine-2.2.0]# ss -lntup | grep 80
tcp    LISTEN     0      128       *:80                    *:*                   users:(("nginx",pid=49724,fd=6),("nginx",pid=49723,fd=6))
[root@template tengine-2.2.0]# ss -lntup | grep 9000
tcp    LISTEN     0      128    127.0.0.1:9000                  *:*                   users:(("php-fpm",pid=47909,fd=0),("php-fpm",pid=47908,fd=0),("php-fpm",pid=47907,fd=0),("php-fpm",pid=47906,fd=0),("php-fpm",pid=47905,fd=0),("php-fpm",pid=47904,fd=6))

步驟六:測試php配置是否正確

[root@template tengine-2.2.0]# vim /usr/local/nginx/html/test.php
<?php
echo "hello world";
?>

# 測試
[root@template tengine-2.2.0]# curl 192.168.11.10/test.php

2、部署Redis服務

參考上一篇文檔
https://www.cnblogs.com/sre-chan/p/17324811.html

查看php是否有支持redis的模塊

# 查看php已安裝支持的模塊
[root@template tengine-2.2.0]# php -m
# 支持redis的模塊不存在,php和redis還無法進行數據交互
[root@template tengine-2.2.0]# php -m | grep redis

二、部署PHP支持redis

1、安裝PHP擴展 安裝php支持redis擴展包的依賴

[root@template tengine-2.2.0]# yum -y install php php-devel autoconf automake

2、解壓php支持redis的擴展源碼包

[root@template ~]# wget -c https://github.com/nicolasff/phpredis/archive/2.2.4.tar.gz
[root@template phpredis-2.2.4]#tar -xf php-redis-2.2.4.tar.gz -C /usr/locl
[root@template phpredis-2.2.4]# cd phpredis-2.2.4/
[root@template phpredis-2.2.4]# ls
arrays.markdown  config.w32  debian.control    mkdeb.sh         redis_array.c       redis.c          serialize.list
common.h         COPYING     library.c         package.xml      redis_array.h       redis_session.c  tests
config.h         CREDITS     library.h         php_redis.h      redis_array_impl.c  redis_session.h
config.m4        debian      mkdeb-apache2.sh  README.markdown  redis_array_impl.h  rpm

3、生成php的配置文件php-config 及 configure命令

[root@template phpredis-2.2.4]# phpize
Configuring for:
PHP Api Version:         20100412
Zend Module Api No:      20100525
Zend Extension Api No:   220100525

4、使用configue命令進行配置,指定php配置文件的路徑

[root@template phpredis-2.2.4]# ./configure --with-php-config=/usr/bin/php-config

5、編譯並安裝,生成php和redis交互的模塊

[root@template phpredis-2.2.4]# make && make install

Installing shared extensions:     /usr/lib64/php/modules/		#模塊安裝的路徑

6、修改php的主配置文件,載入php和redis交互的模塊

# 查看擴展模塊所在目錄
[root@template phpredis-2.2.4]# ll /usr/lib64/php/modules/
total 4116
-rwxr-xr-x. 1 root root   74688 Apr  1  2020 curl.so
-rwxr-xr-x. 1 root root 2713384 Apr  1  2020 fileinfo.so
-rwxr-xr-x. 1 root root   44704 Apr  1  2020 json.so
-rwxr-xr-x. 1 root root  272016 Apr  1  2020 phar.so
-rwxr-xr-x. 1 root root 1038352 Apr 17 12:22 redis.so
-rwxr-xr-x. 1 root root   58408 Apr  1  2020 zip.so


[root@template redis-4.0.8]# vim /etc/php.ini
 ........
# 取消註釋,指定擴展模塊所在的目錄,最後一定要帶 /
extension_dir = "/usr/lib64/php/modules/"
# 取消註釋,修改extension_dir為extension,指定具體的模塊名redis.so			
extension = "redis.so"	
	
# 重啟服務,讓php的配置生效
[root@template phpredis-2.2.4]# systemctl restart php-fpm.service

# 查看php支持redis模塊,存在
[root@template phpredis-2.2.4]# php -m | grep redis
redis

7、測試配置

編寫向redis中存數據的php測試腳本

[root@template phpredis-2.2.4]# vim /usr/local/nginx/html/set.php
<?php
 $i=new redis();			#定義可以使用redis模塊的變數
 $i->connect("127.0.0.1","6379");
 $i->set("school","tarena");
 echo "data save ok";
?>

訪問測試,執行成功

[root@template phpredis-2.2.4]# curl 192.168.11.10/set.php
data save ok

連接redis伺服器,驗證變數是否存入成功

[root@template ~]# redis-cli 
127.0.0.1:6379> keys *
127.0.0.1:6379> get school
"tarena"
127.0.0.1:6379> exit

演示通過php頁面從redis中取出數據

[root@template ~]# vim /usr/local/nginx/html/get.php
<?php
 $i=new redis();
 $i->connect("127.0.0.1","6379");
 echo $i->get("school");
?>
[root@template phpredis-2.2.4]# curl 192.168.11.10/get.php		#成功

通過php頁面向主機的redis中存和取入數據

[root@node01 ~]# /etc/init.d/redis_6379 start
[root@node01 ~]# ss -antlp | grep 6350
[root@template ~]# vim /usr/local/nginx/html/set50.php
<?php
 $j=new redis();
 $j->connect("192.168.11.110","6350");
 $j->auth("123456");
 $j->set("class","nsd2020");
 echo $j->get("class");
?>
[root@template phpredis-2.2.4]# curl 192.168.11.10/set50.php			#成功

node01查看

[root@node01~]# redis-cli -h 192.168.11.110 -p 6350 -a 123456
192.168.11.110:6350> keys *
192.168.11.110:6350> get class
192.168.11.110:6350> exit

三、數據類型值字元

redis服務常用的數據類型

字元,列表,hash表,集合,有序集合

在生產環境下,數據的存儲不需要我們來做,是互聯網上的用戶訪問網站,存儲到redis伺服器上面,我們需要做的就是對redis上面的數據進行管理

String 字元串,node01-192.168.11.110主機操作即可

# 字元串ex|px操作
[root@node01 ~]# redis-cli -h 192.168.11.110 -p 6350 -a 123456
192.168.11.110:6350> flushall
192.168.11.110:6350> set x 77		#set命令,存入x變數
192.168.11.110:6350> type x

192.168.11.110:6350> set z 66 ex 20		#存入變數z; ex 指定有效期為20秒
192.168.11.110:6350> ttl z			#ttl查看變數z的有效期:-1 永久;-2 過期被刪除

192.168.11.110:6350> set i 33 px 20		#存入變數i; px 指定有效期為20毫秒
192.168.11.110:6350> ttl i

# 字元串xx|nx操作
192.168.11.110:6350> set k 44 xx		#xx變數存在賦值,否則不賦值
192.168.11.110:6350> set x 66 xx		#賦值成功
192.168.11.110:6350> get x

192.168.11.110:6350> set x 88 nx	#nx變數不存在賦值,存在則不賦值
192.168.11.110:6350> get x		#值不發生變化,因為變數存在
127.0.0.1:6379> set k 88 nx		#賦值成功,因為變數不存在
127.0.0.1:6379> get k

# setrange字元串替換操作
192.168.11.110:6350> set z ABCDEF
192.168.11.110:6350> get z

# setrange命令,替換變數z中的值,從下標為0的位置開始替換,替換前三個字元為FFF
192.168.11.110:6350> setrange z 0 FFF
192.168.11.110:6350> get z

# strlen統計變數的字元長度
192.168.11.110:6350> keys *	
192.168.11.110:6350> strlen x		# strlen命令,查看變數y的字元長度
192.168.11.110:6350> strlen z

# append在變數後追加值
192.168.11.110:6350> get  x 
192.168.11.110:6350> append x 88
192.168.11.110:6350> get x
192.168.11.110:6350> append x2 88		#當變數不存在,先創建變數,在給變數追加賦值
192.168.11.110:6350> get x2


# decr 設置變數值自減
192.168.11.110:6350> set i 3		#存儲變數i,值為3
192.168.11.110:6350> get i
192.168.11.110:6350> decr i		#每次調用decr,都會讓變數i的值自減1
192.168.11.110:6350> decr i
192.168.11.110:6350> get i


# decrby 設置步長,讓變數值自減
# get命令,查看變數i的值,值為-1
192.168.11.110:6350> get i
192.168.11.110:6350> decrby i 2		#設置變數i自減的步長為2,每次自減2
192.168.11.110:6350> get i

192.168.11.110:6350> decrby i 5
192.168.11.110:6350> get i

# getrange  key   start  end
# 返回字串值中的子字串,截取範圍為start和end
# 負數偏移量表示從末尾開始計數,-1 表示最後一個字元,-2表示倒數第二個字元

# getrange 截取變數中的值
192.168.11.110:6350> keys *
192.168.11.110:6350> get z
# getrange命令,截取變數z前四個值,下標為 0 ~ 3的值
192.168.11.110:6350> getrange z 0 3
"FFFD"

# getrange命令,截取變數z取第二到第四個值,下標為 1 ~ 3的值
192.168.11.110:6350> getrange z 1 3
"FFD"

# getrange命令,從後向前截取變數z,取後三個值,下標為 -3 ~ -1的值
# 變數最後一個字元的下標為 -1
192.168.11.110:6350> getrange z -3 -1
"DEF"

# incr   key
# 將key的值加1,如果key不存在,則初始為0後再加1
# 主要應用為計數器

# incrby   key   increment
# 將key的值增加increment
192.168.11.110:6350> set i 99
192.168.11.110:6350> get i

192.168.11.110:6350> incr i		incr 將key的值每次自加1
192.168.11.110:6350> incr i
192.168.11.110:6350> incr i
192.168.11.110:6350> get i

192.168.11.110:6350> get i
192.168.11.110:6350> incrby i 5			#讓變數i自加5
192.168.11.110:6350> incrby i 10

# incrbyfloat    key   incremen
# 為key中所儲存得值加上浮點數增量 increment
192.168.11.110:6350> incrbyfloat i 10.22
作者:ChAn 出處:http://www.cnblogs.com/sre-chan/

-------------------------------------------

個性簽名:今天做了別人不想做的事,明天你就做得到別人做不到的事,嘗試你都不敢,你拿什麼贏!

如果覺得這篇文章對你有小小的幫助的話,記得在右下角點個“推薦”哦,博主在此感謝!


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • linux vi命令詳解 剛開始學著用linux,對vi命令不是很熟,在網上轉接了一篇。 vi編輯器是所有Unix及Linux系統下標準的編輯器,它的強大不遜色於任何最新的文本編輯器,這裡只是簡單地介紹一下它的用法和一小部分指 令。由於 對Unix及Linux系統的任何版本,vi編輯器是完全相同的, ...
  • GMT 和 UTC 時間有何區別?Unix 時間常式為何不處理閏秒?系統時區是如何設置的?哪些時間常式受夏時制影響?localtime 和 gmtime 是否共用內部存儲區?strftime 獲取第幾周使用的 %U/%V/%W 有何區別?linux date 和 mac date 語法有何區別?本文... ...
  • Redis 報錯“OutOfDirectMemoryError(堆外記憶體溢出) ”問題如下: 一、報錯信息: 使用 Redis 的業務介面 ,產生 OutOfDirectMemoryError(堆外記憶體溢出),如圖: 格式化後的報錯信息: { "timestamp": "2023-04-17 22: ...
  • **鎖屏面試題百日百刷,每個工作日堅持更新面試題。**請看到最後就能獲取你想要的, 接下來的是今日的面試題: 1.為什麼kafka可以實現高吞吐?單節點kafka的吞吐量也比其他消息隊列大,為什麼? Kafka是分散式消息系統,需要處理海量的消息,Kafka的設計是把所有的消息都寫入速度低容量大的硬 ...
  • 一、數據持久化之RDB 1、RDB介紹 Redis 資料庫文件,全稱 Redis DataBase,數據持久化方式之一,數據持久化預設方式,按照指定時間間隔,將記憶體中的數據及快照寫入硬碟 定義RDB文件名 dbfilename "dump.rdb" RDB指dump.rdb文件; redis數據每次 ...
  • Redis的Java客戶端 在Redis官網中提供了各種語言的客戶端,地址:Get started using Redis clients | Redis Redis的Java客戶端: 1.Jedis Jedis 的官方地址:redis/jedis: Redis Java client design ...
  • 一、數據類型之列表 列表簡介 Redis的list是一個字元隊列,先進後出,一個key可以有多個值 列表操作 lpush key values [value ...] 將一個或多個值value插入到列表key的表頭,Key不存在,則創建key 127.0.0.1:6379> FLUSHALL OK ...
  • 一、連接MongoDB 工具:==studio 3T== 下載:https://studio3t.com/download-thank-you/?OS=win64 1、無設置密碼 最終成功頁面 2、設置了密碼 後續同1 二、安裝 MongoDB版本:5.0.5 參考: https://www.cnb ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...