在centos7中安裝redis,並通過node.js操作redis

来源:https://www.cnblogs.com/lentoo/archive/2018/08/08/9441267.html
-Advertisement-
Play Games

引言 最近在學習node.js 連接redis的模塊,所以嘗試了一下在虛擬機中安裝cent OS7,並安裝redis,並使用node.js 操作redis。所以順便做個筆記。 如有不對的地方,歡迎大家指正! 1、cent OS7 下使用redis 1.1、配置編譯環境: 1.2、下載源碼: 1.3、 ...


引言

最近在學習node.js 連接redis的模塊,所以嘗試了一下在虛擬機中安裝cent OS7,並安裝redis,並使用node.js 操作redis。所以順便做個筆記。

如有不對的地方,歡迎大家指正!

 

1、cent OS7 下使用redis

1.1、配置編譯環境:

sudo yum install gcc-c++

 

1.2、下載源碼:

wget http://download.redis.io/releases/redis-4.0.11.tar.gz

 

1.3、解壓源碼:

tar -zxvf redis-4.0.11.tar.gz

 

1.4、進入到解壓目錄:

cd redis-4.0.11

 

1.5、進入到解壓目錄: 執行make編譯Redis:

make MALLOC=libc

  make命令執行完成編譯後,會在src目錄下生成6個可執行文件,分別是

  1. redis-server、
  2. redis-cli、
  3. redis-benchmark、
  4. redis-check-aof、
  5. redis-check-rdb、
  6. redis-sentinel

 

1.6、安裝Redis:

make install 

 

1.7、配置Redis能隨系統啟動:

./utils/install_server.sh

 

1.8、關閉防火牆

systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall開機啟動
firewall-cmd --state #查看預設防火牆狀態(關閉後顯示notrunning,開啟後顯示running)

 

2、redis配置 

  如果redis客戶端和伺服器在同一台機子中,可以不配置,如果redis伺服器在虛擬機中,客戶端在本地系統中,則需要進行配置,否則可能會連接失敗

  • 關閉保護模式     

  如果不關閉,通過node.js連接時,會連接失敗

 config set protected-mode no
  • 設置密碼
// 獲取密碼
config get requirepass
    
// 設置密碼 
config set requirepass yourpassword

 

2.1 、redis.conf 的配置信息

  redis.conf 是redis的的配置文件,修改配置文件後,需要重啟redis才會生效

 

1、daemonize 如果需要在後臺運行,把該項改為yes

2、pidfile 配置多個pid的地址 預設在/var/run/redis.pid

3、bind 綁定ip,設置後只接受來自該ip的請求

4、port 監聽埠,預設是6379

5、loglevel 分為4個等級:debug verbose notice warning

6、logfile 用於配置log文件地址

7、databases 設置資料庫個數,預設使用的資料庫為0

8、save 設置redis進行資料庫鏡像的頻率。

9、rdbcompression 在進行鏡像備份時,是否進行壓縮

10、dbfilename 鏡像備份文件的文件名

11、Dir 資料庫鏡像備份的文件放置路徑

12、Slaveof 設置資料庫為其他資料庫的從資料庫

13、Masterauth 主資料庫連接需要的密碼驗證

14、Requriepass 設置 登陸時需要使用密碼

15、Maxclients 限制同時使用的客戶數量

16、Maxmemory 設置redis能夠使用的最大記憶體

17、Appendonly 開啟append only模式

18、Appendfsync 設置對appendonly.aof文件同步的頻率(對數據進行備份的第二種方式)

19、vm-enabled 是否開啟虛擬記憶體支持 (vm開頭的參數都是配置虛擬記憶體的)

20、vm-swap-file 設置虛擬記憶體的交換文件路徑

21、vm-max-memory 設置redis使用的最大物理記憶體大小

22、vm-page-size 設置虛擬記憶體的頁大小

23、vm-pages 設置交換文件的總的page數量

24、vm-max-threads 設置VM IO同時使用的線程數量

25、Glueoutputbuf 把小的輸出緩存存放在一起

26、hash-max-zipmap-entries 設置hash的臨界值

27、Activerehashing 重新hash

  

3、nodejs中操作redis

3.1、  安裝redis

// github https://github.com/NodeRedis/node_redis
npm install redis --save

 

3.2、  簡單使用

//引入redis
var redis = require('redis')
// 連接redis伺服器
// 連接redis資料庫,createClient(port,host,options);
// 如果REDIS在本機,埠又是預設,直接寫createClient()即可
client = redis.createClient(6379, '192.168.73.128', {
    password: 'lentoo'
});

//錯誤監聽?
client.on("error", function (err) {
    console.log(err);
});
client.set('key','value')
client.get('key')

 

3.3、常用API

  • redis.print

    通過redis的列印api回顯

  • set

    像redis中存入一個鍵值對

client.set('key','value')
// 設置過期時間 10s後過期
client.set('key','value','EX',10)
  • get

    獲取在redis中存入的值

  client.get('key') // value
  • hset

    通過hash key 存值

client.hset('hash key','key','value', redis.print)

 

  • hget

    通過hash key 獲取值

client.hget('hash key','key', redis.print)

 

  • hkeys

    所有的"hash key"

// 遍歷哈希表"hash key"
client.hkeys("hash key", function (err, replies) {
    console.log(replies.length + " replies:");
    replies.forEach(function (reply, i) {
        console.log("    " + i + ": " + reply);
    });
    client.quit();
});
  • hmset 

    可同時設置多個key,value

client.hmset('hash 1', 'key', 'value111', 'key2', 'value222', 'key3', 'value3', redis.print)

 

  • hmget

    可同時獲取多個key

client.hmget('hash 1', 'key', 'key2', 'key3', redis.print)

 

  • publish/subscribe

    發佈/訂閱

const sub = redis.createClient() // 訂閱者
const pub = redis.createClient() // 發佈者
var msg_count = 0;

sub.on("subscribe", function (channel, count) {
    client.publish("a nice channel", "I am sending a message.");
    client.publish("a nice channel", "I am sending a second message.");
    client.publish("a nice channel", "I am sending my last message.");
});

sub.on("message", function (channel, message) {
    console.log("sub channel " + channel + ": " + message);
    msg_count += 1;
    if (msg_count === 3) {
        sub.unsubscribe();
        sub.quit();
        client.quit();
    }
});

 

  • ready

    redis客戶端連接準備好後觸發,在此前所有發送給redis伺服器的命令會以隊列的形式進行排隊,會在ready事件觸發後發送給redis伺服器

client.on('ready',function(){
    console.log('ready');
})

 

  • connct       

    客戶端在連接到伺服器後觸發 

client.on('connect',function(){
    console.log('connect');
})

 

  • reconnecting   

    客戶端在連接斷開後重新連接伺服器時觸發

client.on('reconnecting ', function (resc) {
    console.log('reconnecting',resc);
})

 

  • error

    錯誤監聽

client.on("error", function (err) { console.log(err); });

 

  • end

    連接斷開時觸發

client.on('end',function(){
  console.log('end')
})

 

  • createClient

    創建一個鏈接

redis.createClient([options])
redis.createClient(unix_socket[, options])
redis.createClient(redis_url[, options])
redis.createClient(port[, host][, options])

 

3.4 options 對象屬性

屬性 預設值 描述
host  127.0.0.1 redis伺服器地址
port 6379 埠號
connect_timeout 3600000 連接超時時間 以ms為單位
password null 密碼

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

-Advertisement-
Play Games
更多相關文章
  • 最近在類似於滴滴軟體的一款小程式,工程確實有點大,很多東西都是第一次做。這次記錄一下關於左滑刪除的一個代碼記錄。主要的思想就是計算滑動距離的大小來使用css中的 transition 控制滑動的效果,主流的都是控制邊距margin來達到左滑的效果。 根據我所拿到的ui,我所運用的是使用寬度和radi ...
  • ES6 為對象字面量添加了幾個實用的功能,雖然這幾個新功能基本上都是語法糖,但確實方便。 一、屬性的簡潔表示法 當定義一個對象時,允許直接寫入一個變數,作為對象的屬性,變數名就是屬性名。 例1: 與例2: 是相同的。 二、方法的簡潔表示法 下麵的例子是方法的簡潔表示法(例3) 和下例是完全等同的(例 ...
  • 規則 BFC觸發原理 作用 如果裡面的兩個div為浮動,那麼設置 .layout {overflow: hidden} 2. 防止margin重疊 總結: BFC通俗地說:就是一個容器,裡外不相互影響,記住:清除浮動的時候,如果使用 overflow: hidden,是存在缺點的,如果超過了範圍,那 ...
  • 1.技術棧 1.小程式; 2.使用了有贊提供的UI庫zan ui 3.express+mongoose+nginx; 2.功能介紹 1.假設有一天你在廣東的一間便利店裡面品嘗一瓶可口可樂,這時,你拿出了這個小程式“商品手賬”掃描這瓶可樂的商品條碼,然後寫下一段留言。 2.時間一晃就到了幾年後,這時你 ...
  • 1、背景:朋友請幫忙做一個比賽排程軟體 2、需求: ① 比賽人數未知,可以通過文本文件讀取參賽人員名稱; ② 對參賽人員隨機分組,一組兩人,兩兩PK,如果是奇數人數,某一個參賽人員成為幸運兒自動晉級; ③ 比賽線下進行,比賽結束後,可以線上選擇每組中晉級人員; ④ 晉級人員進行下一輪比賽分組,依此類 ...
  • 原型鏈 繼承 1 構造函數 2 原型鏈 3 組合繼承 把公共數據放在Parent中,這樣的話就不會公用一個引用類型 4 優化組合繼承 判斷原型和實例的關係 ...
  • MAIN結構 //// <%@ Master Language="C#" AutoEventWireup="true" CodeFile="Main.master.cs" Inherits="Main" %> <!DOCTYPE html><html xmlns="http://www.w3.org ...
  • 當父組件引用了子組件的時候,會遇到父組件執行子組件的方法,比如下拉刷新上拉載入等事件只有在頁面中才能檢測到,但是獲取數據的方法在子組件,這時就可以執行子組件方法。 思路很簡單,類似於vue中給子組件加ref執行子組件方法道理一樣,這裡是給子組件加一個 屬性: id="子組件名稱",比如: 然後在父組 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...