Redis部署和基礎命令

一、Redis基本概念

1.1 Redis簡介

Redis(遠程字典服務器) 是一個開源的、使用 C 語言編寫的 NoSQL 數據庫。
Redis 基于內存運行并支持持久化,采用key-value(鍵值對)的存儲形式,是目前分布式架構中不可或缺的一環。

Redis服務器程序是單進程模型,也就是在一臺服務器上可以同時啟動多個Redis進程,Redis的實際處理速度則是完全依靠于主進程的執行效率。若在服務器上只運行一個Redis進程,當多個客戶端同時訪問時,服務器的處理能力是會有一定程度的下降;若在同一臺服務器上開啟多個Redis進程,Redis在提高并發處理能力的同時會給服務器的CPU造成很大壓力。即:在實際生產環境中,需要根據實際的需求來決定開啟多少個Redis進程。若對高并發要求更高一些,可能會考慮在同一臺服務器上開啟多個進程。若CPU資源比較緊張,采用單進程即可。

1.2 Redis的優點

1)具有極高的數據讀寫速度:數據讀取的速度最高可達到 110000 次/s,數據寫入速度最高可達到 81000 次/s;

2)支持豐富的數據類型:支持 key-value、Strings、Lists、Hashes、Sets 及 Sorted Sets 等數據類型操作;

3)支持數據的持久化:可以將內存中的數據保存在磁盤中,重啟的時候可以再次加載進行使用;

4)原子性:Redis 所有操作都是原子性的;

5)支持數據備份:即 master-salve 模式的數據備份。

1.3 使用場景

Redis作為基于內存運行的數據庫,是一個高性能的緩存,一般應用在Session緩存、隊列、排行榜、計數器、最近最熱文章、最近最熱評論、發布訂閱等。
Redis 適用于數據實時性要求高、數據存儲有過期和淘汰特征的、不需要持久化或者只需要保證弱一致性、邏輯簡單的場景。

我們通常會將部分數據放入緩存中,來提高訪問速度,然后數據庫承擔存儲的工作。

1.4 適合放入緩存中的數據

●即時性。例如查詢最新的物流狀態信息。
●數據一致性要求不高。例如門店信息,修改后,數據庫中已經改了,五分鐘后緩存中才是最新的,但不影響功能使用。
●訪問量大且更新頻率不高,例如網站首頁的廣告信息,訪問量大,但是不會經常變化。

1.5 Redis快速的原因

1)redis基于內存運行,數據操作都是內存中完成的;

2)數據讀寫采用單線程模式,避免了多線程切換的CPU性能消耗,同時也不用考慮各種鎖的問題;

3)采用IO多路復用模型,可以使線程處理更多的網絡連接請求,提高并發能力。

1.6 Redis數據類型

字符型(string): 普通字符串

哈希(hash): 鍵值對的 鍵值對

列表 (linked lists): 類似于 數組

集合(set): 無序

有序集合(sorted set): 排行榜

二、Redis安裝部署

環境準備

#開機自動關閉防火墻
systemctl disable firewalld --now#永久關閉selinux
setenforce 0
sed -i 's/enforcing/disabled/' /etc/selinux/config

修改內核參數

vim /etc/sysctl.conf
vm.overcommit_memory = 1
net.core.somaxconn = 2048#vm.overcommit_memory:該配置項用于設置內存超額分配策略。
#當值為 0 時,表示內核會根據實際情況動態分配內存,但這可能導致內存超額分配,當系統內存不足時,可能會引發OOM(Out of Memory)錯誤。
#將其設置為 1 可以禁用內存超額分配,確保只有在內存充足的情況下才能進行內存分配。這對于確保系統穩定性和可靠性是有幫助的。#net.core.somaxconn:該配置項用于設置系統中允許的最大掛起連接數。
#當系統接收到大量并發連接請求時,如果系統的連接隊列已滿,則新的連接請求會被拒絕。
#通過增加 net.core.somaxconn 的值,可以增加系統的連接隊列大小,從而提高系統處理并發連接請求的能力。sysctl -p
#刷新配置文件

安裝redis

1)安裝依賴
[root@centos7 ~]#yum -y install gcc jemalloc-devel
#安裝依賴包centos
[root@centos7 ~]#yum -y install gcc jemalloc-devel systemd-devel
#如果支持systemd需要安裝下面包
ubentu
[root@ubuntu1804 ~]#apt -y install make gcc libjemalloc-dev libsystemd-dev2)下載安裝包
[root@localhost ~]#cd  /data
[root@localhost ~]#wget http://download.redis.io/releases/redis-5.0.7.tar.gz3)解壓
[root@centos7 ~]#tar xvf redis-5.0.7.tar.gz4)編譯安裝
[root@centos7 ~]#cd redis-5.0.7/[root@centos7 redis-5.0.7]#make PREFIX=/apps/redis install #指定redis安裝目錄[root@centos7 redis-5.0.7]#make USE_SYSTEMD=yes PREFIX=/apps/redis install
#如果支持systemd,需要執行下面5)配置變量
[root@centos7 ~]#echo 'PATH=/apps/redis/bin:$PATH' > /etc/profile.d/redis.sh
[root@centos7 ~]#. /etc/profile.d/redis.sh6)準備配置文件及目錄
[root@centos7 ~]#mkdir /apps/redis/{etc,log,data,run}
#創建配置文件、日志、數據等目錄[root@centos7 redis-5.0.7]#cp redis.conf /apps/redis/etc/
#源碼包中自帶 配置文件7)準備用戶 修改權限
[root@centos7 ~]#useradd -r -s /sbin/nologin redis[root@centos7 ~]#chown -R redis.redis /apps/redis/
#設置目錄權限
[root@centos7 ~]#ln -sv /apps/redis/bin/redis-* /usr/bin/
#設置軟連接8)準備service文件
[root@centos7 ~]#vim /usr/lib/systemd/system/redis.service
[Unit]
Description=Redis persistent key-value database
After=network.target[Service]
ExecStart=/apps/redis/bin/redis-server /apps/redis/etc/redis.conf --supervised systemd
ExecStop=/bin/kill -s QUIT $MAINPID
#Type=notify 如果支持systemd可以啟用此行
User=redis
Group=redis
RuntimeDirectory=redis
RuntimeDirectoryMode=0755[Install]
WantedBy=multi-user.target9)啟動redis
[root@centos7 ~]# systemctl daemon-reload
[root@centos7 ~]# systemctl start  redis

redis配置文件修改

vim /apps/redis/etc/redis.confbind 127.0.0.1
0.0.0.0               #69行 ,添加監聽的主機地址,0.0.0.0表示監聽任意地址
protected-mode no     
#89行,將本機訪問保護模式設置no。如果開啟了,那么在沒有設定bind ip且沒有設密碼的情況下,Redis只允許接受本機的響應
port 6379             #93行,Redis默認的監聽6379端口
daemonize yes         #137行,設置為守護進程。后臺啟動
pidfile /apps/redis/run/redis_6379.pid
#159行,指定PID文件
logfile  /apps/redis/log/redis6379.log
#172行,指定日志文件
dir /apps/redis/data
#264行,指定持久化文件所在目錄
requirepass abc123	 
#508行,增加一行,設置redis密碼

ss -natp |grep redis

三、Redis基礎命令

3.1 set和get命令

setget命令用于設置和獲取鍵值對的

set用于存放數據

set key value [EX seconds] [PX milliseconds] [NX|XX]#key 為鍵名
#value為鍵值
127.0.0.1:6379> set name cxk

get用于獲取數據

127.0.0.1:6379> get name

3.2 keys 命令

keys命令用于查詢鍵,支持通配符*?。

#先賦值
127.0.0.1:6379> set k1 1
127.0.0.1:6379> set k2 2
127.0.0.1:6379> set k3 3
127.0.0.1:6379> set k4 4
#查看當前數據庫中所有鍵
keys *

127.0.0.1:6379> KEYS k*				
#查看當前數據庫中以 k 開頭的數據127.0.0.1:6379> KEYS k?				
#查看當前數據庫中以 k 開頭后面包含任意一位的數據127.0.0.1:6379> KEYS k??				
#查看當前數據庫中以 k 開頭 k 開頭后面包含任意兩位的數據

3.3 del命令

刪除當前數據庫的指定鍵。


127.0.0.1:6379> del k1127.0.0.1:6379> get k1

3.4 exists命令

判斷鍵是否存在,1表示鍵存在,0表示鍵不存在。

3.5 type命令

查看鍵的數據類型

3.6 expire 命令

已存在的鍵設置過期時間

3.7 ttl 命令

查看鍵的生命周期時間,-1表示永不過期,-2表示已過期。

3.8 rename 命令

重命名鍵名,會覆蓋已存在的鍵的值。

#命令格式
rename 源key 目標key

3.9 renamenx 命令

重命名鍵名,如果新鍵已存在則不執行重命名操作即不會覆蓋

#命令格式
renamenx 源key 目標key

3.10 dbsize 命令

統計當前庫的鍵的數量

3.11? FLUSHALL

強制清空當前redis服務器所有數據庫中的所有key,即刪除所有數據,此命令慎用!

127.0.0.1:6379> FLUSHALL OK#生產建議修改配置 /etc/redis.conf 
rename-command FLUSHALL ""
#rename-command 在6.2.4版淘汰了

3.11?SHUTDOWN

# 停止所有客戶端

如果有至少一個保存點在等待,執行 SAVE 命令

如果 AOF 選項被打開,更新 AOF 文件

關閉 redis 服務器(server)

如果持久化被打開的話, SHUTDOWN 命令會保證服務器正常關閉而不丟失任何數據。

另一方面,假如只是單純地執行 SAVE 命令,然后再執行 QUIT 命令,則沒有這一保證 —— 因為在執行SAVE 之后、執行 QUIT 之前的這段時間中間,其他客戶端可能正在和服務器進行通訊,這時如果執行 QUIT 就會造成數據丟失。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/42693.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/42693.shtml
英文地址,請注明出處:http://en.pswp.cn/web/42693.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

python爬蟲之scrapy基于管道持久化存儲操作

python爬蟲之scrapy基于管道持久化存儲操作 本文基于python爬蟲之基于終端指令的持久化存儲和python爬蟲之數據解析操作而寫 scrapy持久化存儲 基于管道: 編碼流程: 1、數據解析 2、在item類中定義相關屬性 3、將解析的數據封裝存儲到item類型的對象 4、…

Linux內核 -- 內存管理之scatterlist結構使用

Linux Kernel Scatterlist 使用指南 1. 簡介 scatterlist 結構在 Linux 內核中主要用于 DMA(直接內存訪問)操作中的內存管理。它允許將不連續的物理內存片段表示為一個邏輯上的連續塊,從而使 DMA 操作可以高效地處理這些不連續的內存片段。…

【問題記錄】VsCode中以管理員權限運行Powershell

問題展示 今天在嘗試運行nodemon命令的時候出問題,顯示沒法識別,經過分析發現是管理員權限的問題,由于是在vscode里面進行開發,因此特此進行配置。 方法一 直接在vscode命令行中輸入如下命令: Start-Process powers…

IDEA如何創建原生maven子模塊

文件 -> 新建 -> 新模塊 -> Maven ArcheTypeMaven ArcheType界面中的輸入框介紹 名稱:子模塊的名稱位置:子模塊存放的路徑名創建Git倉庫:子模塊不單獨作為一個git倉庫,無需勾選JDK:JDK版本號父項:…

Linux網絡命令:網絡工具socat詳解

目錄 一、概述 二、基本用法 1、基本語法 2、常用選項 3、獲取幫助 三、用法示例 1. 監聽 TCP 端口并回顯接收到的數據 2. 通過 TCP 端口轉發數據到 UNIX 套接字 3. 將文件內容發送到 TCP 端口: 4. 使用偽終端進行串行通信 5、啟動一個TCP服務器 6、建…

Hi3861鴻蒙開發環境搭建

1.1 安裝配置Visual Studio Code 打開Download Visual Studio Code - Mac, Linux, Windows選擇下載安裝Windows系統的Visual Studio Code。 下載后進行安裝。Visual Studio Code安裝完成后,通過內置的插件市場搜索并安裝開發所需的插件如圖所示: 1.2 安…

實時消息推送系統,寫得太好了!

websocket 協議是在 http 協議上的一種補充協議,是 html5 的新特性,是一種持久化的協議。其實 websocket 和 http 關系并不是很大,不過都是屬于應用層的協議,接下來我們就開始實戰。 websocket 定時推送 本教程基于 springboot …

symbol數據類型以及應用場景

在js中,Symbol是一種基本數據類型,是在ECMAScript 6 (ES6) 中引入的新特性。表示獨一無二 Symbol的定義 Symbol是不完整的構造函數,創建symbol對象時不需要new操作符,原因是通過 new 實例化的結果是一個 object 對象,而不是原始類型的 symbol。 var s…

STL--棧(stack)

stack 棧是一種只在一端(棧頂)進行數據插入(入棧)和刪除(出棧)的數據結構,它滿足后進先出(LIFO)的特性。 使用push(入棧)將數據放入stack,使用pop(出棧)將元素從容器中移除。 使用stack,必須包含頭文件: #include<stack>在頭文件中,class stack定義如下: namespace std…

Druid 連接池在很多方面表現出色,但在實際應用中也可能會遇到一些缺陷或問題。

Druid 連接池是阿里巴巴開源的一個功能強大的數據庫連接池&#xff0c;它具有高性能、可靠性、可管理性、安全性和擴展性等特點。然而&#xff0c;盡管 Druid 連接池在很多方面表現出色&#xff0c;但在實際應用中也可能會遇到一些缺陷或問題。 1. **連接耗盡問題**&#xff1…

13 - matlab m_map地學繪圖工具基礎函數 - 介紹創建管理顏色映射的函數m_colmap和輪廓圖繪制顏色條的函數m_contfbar

13 - matlab m_map地學繪圖工具基礎函數 - 介紹創建管理顏色映射的函數m_colmap和輪廓圖繪制顏色條的函數m_contfbar 0. 引言1. 關于m_colmap2. 關于m_contfbar3. 結語 0. 引言 本篇介紹下m_map中用于創建和管理顏色映射函數&#xff08;m_colmap&#xff09;和 為輪廓圖繪制顏…

基于深度學習的電影推薦系統

1 項目介紹 1.1 研究目的和意義 在電子商務日益繁榮的今天&#xff0c;精準預測商品銷售數據成為商家提升運營效率、優化庫存管理以及制定營銷策略的關鍵。為此&#xff0c;開發了一個基于深度學習的商品銷售數據預測系統&#xff0c;該系統利用Python編程語言與Django框架&a…

SQLite 命令行客戶端 + Windows 批處理應用

SQLite 命令行客戶端 Windows 批處理應用 下載 SQLite 客戶端1. Bat 輔助腳本1. 執行SQL.bat執行 2. 導出Excel.bat執行效果 3. 導出HTML.bat執行效果 4. 清空-訂單表.bat5. 訂單表.bat 2. 測試 SQL1. 創建訂單表.sql2. 插入訂單表.sql3. 查詢訂單表.sql4. 清空訂單表.sql5. 刪…

Qt Qwt 圖表庫詳解及使用

文章目錄 Qt Qwt 圖表庫詳解及使用一、Qwt 概述二、安裝 Qwt1. 下載和編譯 Qwt2. 在項目中使用 Qwt三、Qwt 的基本使用1. 創建一個簡單的折線圖2. 添加圖例和自定義樣式四、Qwt 的交互功能1. 啟用縮放和平移2. 啟用數據點選擇五、Qwt 的高級特性1. 實時數據更新2. 多軸繪圖六、…

nvm 管理多版本 node

1、下載 先不安裝node 下載 nvm 1.1.10-setup.zip 解壓&#xff1a;nvm&#xff1a;https://nvm.uihtm.com/ 新建nodejs/node、nodejs/nvm文件夾用于存放node版本和nvm安裝路徑 安裝nvm&#xff1a;上述鏈接有安裝教程 查看是否安裝成功&#xff1a;重新打開cmd 輸入 nvm nv…

Hyper-V克隆虛擬機教程分享!

方法1. 使用導出導入功能克隆Hyper-V虛擬機 導出和導入是Hyper-V服務器備份和克隆的一種比較有效的方法。使用此功能&#xff0c;您可以創建Hyper-V虛擬機模板&#xff0c;其中包括軟件、VM CPU、RAM和其他設備的配置&#xff0c;這有助于在Hyper-V中快速部署多個虛擬機。 在…

深入理解基本數據結構:數組詳解

引言 在計算機科學中&#xff0c;數據結構是存儲、組織和管理數據的方式。數組作為最基礎的數據結構之一&#xff0c;廣泛應用于各種編程場景。在這篇博客中&#xff0c;我們將詳細探討數組的定義、特點、操作及其在不同編程語言中的實現。 什么是數組&#xff1f; 數組是一種…

原生android的內存性能提升方面的方案大致設計

一 測試目標&#xff1a; 以滿足用戶設備的內存性能和不殺后臺為目標。 1&#xff1a;滿足用戶設備的內存性能是指不出現因為內存原因導致的安卓設備死機&#xff0c;卡頓等問題。 2&#xff1a;滿足不殺后臺是指整個設備使用時&#xff0c;不出現后臺app被殺。 通常是估算如果…

構造函數注入@RequiredArgsConstructor

Api(tags "用戶管理接口") RequiredArgsConstructor RestController RequestMapping("users") public class UserController {private final IUserService userService;PostMappingApiOperation("新增用戶")public void saveUser(RequestBody U…

輸入框輸入值之后,檢索表格中是否存在輸入框中的值,存在就讓當前文字為紅色

this.searchValue為輸入框的值 createKeywordHtml_content(data) { if (data undefined) { return data; } if (typeof data ! string) { data String(data) } let value data.replace(this.searchValue, <span style"color:#FF5555">$&</span>…