Redis数据库(一)——Redis简介、部署及常用命令
生活随笔
收集整理的這篇文章主要介紹了
Redis数据库(一)——Redis简介、部署及常用命令
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
文章目錄
- 一、關(guān)系數(shù)據(jù)庫(kù)與非關(guān)系型數(shù)據(jù)庫(kù)概述
- 1、關(guān)系型數(shù)據(jù)庫(kù)
- 2、非關(guān)系型數(shù)據(jù)庫(kù)
- 3、關(guān)系數(shù)據(jù)庫(kù)與非關(guān)系型數(shù)據(jù)庫(kù)區(qū)別
- ①、數(shù)據(jù)存儲(chǔ)方式不同
- ②、擴(kuò)展方式不同
- ③、對(duì)事務(wù)性的支持不同
- 4、非關(guān)系型數(shù)據(jù)庫(kù)產(chǎn)生背景
- 二、Redis簡(jiǎn)介
- 1、Redis的單線程模式
- 2、Redis的優(yōu)點(diǎn)
- 三、Redis部署
- 四、Redis 命令工具
- 1、redis-cli 命令行工具
- 2、redis-benchmark 測(cè)試工具
- 五、Redis 數(shù)據(jù)庫(kù)常用命令
- 六、Redis 多數(shù)據(jù)庫(kù)常用命令
一、關(guān)系數(shù)據(jù)庫(kù)與非關(guān)系型數(shù)據(jù)庫(kù)概述
1、關(guān)系型數(shù)據(jù)庫(kù)
- 關(guān)系型數(shù)據(jù)庫(kù)是一個(gè)結(jié)構(gòu)化的數(shù)據(jù)庫(kù),創(chuàng)建在關(guān)系模型(二維表格模型)基礎(chǔ)上,一般面向于記錄。
- SQL 語(yǔ)句(標(biāo)準(zhǔn)數(shù)據(jù)查詢語(yǔ)言)就是一種基于關(guān)系型數(shù)據(jù)庫(kù)的語(yǔ)言,用于執(zhí)行對(duì)關(guān)系型數(shù)據(jù)庫(kù)中數(shù)據(jù)的檢索和操作。
- 主流的關(guān)系型數(shù)據(jù)庫(kù)包括 Oracle、MySQL、SQL Server、Microsoft Access、DB2 等。
2、非關(guān)系型數(shù)據(jù)庫(kù)
- NoSQL(NoSQL = Not Only SQL ),意思是“不僅僅是 SQL”,是非關(guān)系型數(shù)據(jù)庫(kù)的總稱。
- 除了主流的關(guān)系型數(shù)據(jù)庫(kù)外的數(shù)據(jù)庫(kù),都認(rèn)為是非關(guān)系型。
- 主流的 NoSQL 數(shù)據(jù)庫(kù)有 Redis、MongBD、Hbase、Memcached 等。
3、關(guān)系數(shù)據(jù)庫(kù)與非關(guān)系型數(shù)據(jù)庫(kù)區(qū)別
①、數(shù)據(jù)存儲(chǔ)方式不同
- 關(guān)系型和非關(guān)系型數(shù)據(jù)庫(kù)的主要差異是數(shù)據(jù)存儲(chǔ)的方式。關(guān)系型數(shù)據(jù)天然就是表格式的,因此存儲(chǔ)在數(shù)據(jù)表的行和列中。數(shù)據(jù)表可以彼此關(guān)聯(lián)協(xié)作存儲(chǔ),也很容易提取數(shù)據(jù)。
- 與其相反,非關(guān)系型數(shù)據(jù)不適合存儲(chǔ)在數(shù)據(jù)表的行和列中,而是大塊組合在一起。非關(guān)系型數(shù)據(jù)通常存儲(chǔ)在數(shù)據(jù)集中,就像文檔、鍵值對(duì)或者圖結(jié)構(gòu)。你的數(shù)據(jù)及其特性是選擇數(shù)據(jù)存儲(chǔ)和提取方式的首要影響因素。
②、擴(kuò)展方式不同
- SQL和NoSQL數(shù)據(jù)庫(kù)最大的差別可能是在擴(kuò)展方式上,要支持日益增長(zhǎng)的需求當(dāng)然要擴(kuò)展。
- 要支持更多并發(fā)量,SQL數(shù)據(jù)庫(kù)是縱向擴(kuò)展,也就是說(shuō)提高處理能力,使用速度更快速的計(jì)算機(jī),這樣處理相同的數(shù)據(jù)集就更快了。因?yàn)閿?shù)據(jù)存儲(chǔ)在關(guān)系表中,操作的性能瓶頸可能涉及很多個(gè)表,這都需要通過(guò)提高計(jì)算機(jī)性能來(lái)客服。雖然SQL數(shù)據(jù)庫(kù)有很大擴(kuò)展空間,但最終肯定會(huì)達(dá)到縱向擴(kuò)展的上限。
- 而NoSQL數(shù)據(jù)庫(kù)是橫向擴(kuò)展的。因?yàn)榉顷P(guān)系型數(shù)據(jù)存儲(chǔ)天然就是分布式的,NoSQL數(shù)據(jù)庫(kù)的擴(kuò)展可以通過(guò)給資源池添加更多普通的數(shù)據(jù)庫(kù)服務(wù)器(節(jié)點(diǎn))來(lái)分擔(dān)負(fù)載。
③、對(duì)事務(wù)性的支持不同
- 如果數(shù)據(jù)操作需要高事務(wù)性或者復(fù)雜數(shù)據(jù)查詢需要控制執(zhí)行計(jì)劃,那么傳統(tǒng)的SQL數(shù)據(jù)庫(kù)從性能和穩(wěn)定性方面考慮是你的最佳選擇。SQL數(shù)據(jù)庫(kù)支持對(duì)事務(wù)原子性細(xì)粒度控制,并且易于回滾事務(wù)。
- 雖然NoSQL數(shù)據(jù)庫(kù)也可以使用事務(wù)操作,但穩(wěn)定性方面沒(méi)法和關(guān)系型數(shù)據(jù)庫(kù)比較,所以它們真正閃亮的價(jià)值是在操作的擴(kuò)展性和大數(shù)據(jù)量處理方面。
4、非關(guān)系型數(shù)據(jù)庫(kù)產(chǎn)生背景
- 可用于應(yīng)對(duì)web2.0純動(dòng)態(tài)網(wǎng)站類型的三高問(wèn)題
- High performance————對(duì)數(shù)據(jù)庫(kù)高并發(fā)讀寫要求
- Huge Storage————對(duì)海量數(shù)據(jù)高效存儲(chǔ)與訪問(wèn)需求
- High Scalability && High Availability————對(duì)數(shù)據(jù)庫(kù)高可擴(kuò)展性與高可用性需求
- 關(guān)系型數(shù)據(jù)庫(kù)和非關(guān)系型數(shù)據(jù)庫(kù)都有各自的特點(diǎn)與應(yīng)用場(chǎng)景,兩者的緊密結(jié)合將會(huì)給Web2.0的數(shù)據(jù)庫(kù)發(fā)展帶來(lái)新的思路。讓關(guān)系數(shù)據(jù)庫(kù)關(guān)注在關(guān)系上,非關(guān)系型數(shù)據(jù)庫(kù)關(guān)注在存儲(chǔ)上。例如,在讀寫分離的MySQL數(shù)據(jù)庫(kù)環(huán)境中,可以把經(jīng)常訪問(wèn)的數(shù)據(jù)存儲(chǔ)在非關(guān)系型數(shù)據(jù)庫(kù)中,提升訪問(wèn)速度。
二、Redis簡(jiǎn)介
- Redis 是一個(gè)開源的、使用 C 語(yǔ)言編寫的 NoSQL 數(shù)據(jù)庫(kù)。
- Redis 基于內(nèi)存運(yùn)行并支持持久化,采用key-value(鍵值對(duì))的存儲(chǔ)形式,是目前分布式架構(gòu)中不可或缺的一環(huán)。
1、Redis的單線程模式
- Redis服務(wù)器程序是單進(jìn)程模型,也就是在一臺(tái)服務(wù)器上可以同時(shí)啟動(dòng)多個(gè)Redis進(jìn)程,Redis的實(shí)際處理速度則是完全依靠于主進(jìn)程的執(zhí)行效率。
- 若在服務(wù)器上只運(yùn)行一個(gè)Redis進(jìn)程,當(dāng)多個(gè)客戶端同時(shí)訪問(wèn)時(shí),服務(wù)器的處理能力是會(huì)有一定程度的下降
- 若在同一臺(tái)服務(wù)器上開啟多個(gè)Redis進(jìn)程,Redis在提高并發(fā)處理能力的同時(shí)會(huì)給服務(wù)器的CPU造成很大壓力。
- 在實(shí)際生產(chǎn)環(huán)境中,需要根據(jù)實(shí)際的需求來(lái)決定開啟多少個(gè)Redis進(jìn)程。若對(duì)高并發(fā)要求更高一些,可能會(huì)考慮在同一臺(tái)服務(wù)器上開啟多個(gè)進(jìn)程。若 CPU 資源比較緊張,采用單進(jìn)程即可。
2、Redis的優(yōu)點(diǎn)
- 具有極高的數(shù)據(jù)讀寫速度:數(shù)據(jù)讀取的速度最高可達(dá)到 110000 次/s,數(shù)據(jù)寫入速度最高可達(dá)到 81000 次/s。
- 支持豐富的數(shù)據(jù)類型:支持 key-value、Strings、Lists、Hashes、Sets 及 Ordered Sets 等數(shù)據(jù)類型操作。
- string :字符串(可以為整型、浮點(diǎn)型和字符串,通稱為元素)
- list :列表(實(shí)現(xiàn)隊(duì)列,元素不唯一,先入先出原則)
- set :集合(各不相同的元素)
- hash :hash散列值(hash的key必須是唯一的)
- set /ordered set :集合/有序集合
- 支持?jǐn)?shù)據(jù)的持久化:可以將內(nèi)存中的數(shù)據(jù)保存在磁盤中,重啟的時(shí)候可以再次加載進(jìn)行使用。
- 原子性:Redis 所有操作都是原子性的。
- 支持?jǐn)?shù)據(jù)備份:即 master-salve 模式的數(shù)據(jù)備份。
Redis作為基于內(nèi)存運(yùn)行的數(shù)據(jù)庫(kù),緩存是其最常應(yīng)用的場(chǎng)景之一。除此之外,Redis常見(jiàn)應(yīng)用場(chǎng)景還包括獲取最新N個(gè)數(shù)據(jù)的操作、排行榜類應(yīng)用、計(jì)數(shù)器應(yīng)用、存儲(chǔ)關(guān)系、實(shí)時(shí)分析系統(tǒng)、日志記錄。
三、Redis部署
systemctl stop firewalld setenforce 0yum install -y gcc gcc-c++ makecd /opt tar zxvf redis-5.0.7.tar.gz cd /opt/redis-5.0.7/ make make PREFIX=/usr/local/redis install #由于Redis源碼包中直接提供了makefile文件,所以在解壓完軟件后,不用先執(zhí)行 ./configure 進(jìn)行配置,可直接執(zhí)行make與make install命令進(jìn)行安裝#執(zhí)行軟件包中提供的 install_server.sh 腳本文件設(shè)置Redis服務(wù)所需要的相關(guān)配置文件 cd /opt/redis-5.0.7/utils ./install_server.sh #一直回車 Please select the redis executable path [/usr/local/bin/redis-server] /usr/local/redis/bin/redis-server #需要手動(dòng)修改為/usr/local/redis/bin/redis-server ---------------------------------------------------------------------------- Selected config: Port : 6379 #默認(rèn)監(jiān)聽端口6379 Config file : /etc/redis/6379.conf #配置文件路徑 Log file : /var/log/redis_6379.log #日志文件路徑 Data dir : /var/lib/redis/6379 #數(shù)據(jù)文件路徑 Executable : /usr/local/redis/bin/redis-server #可執(zhí)行文件路徑 Cli Executable : /usr/local/redis/bin/redis-cli #客戶端命令工具 -----------------------------------------------------------------------------#把redis的可執(zhí)行程序文件放入路徑環(huán)境變量的目錄中 ln -s /usr/local/redis/bin/* /usr/local/bin//etc/init.d/redis_6379 stop #停止 /etc/init.d/redis_6379 start #啟動(dòng) /etc/init.d/redis_6379 restart #重啟 /etc/init.d/redis_6379 status #狀態(tài)#修改配置 /etc/redis/6379.conf 參數(shù) vim /etc/redis/6379.conf bind 127.0.0.1 192.168.184.10 #70行,添加 監(jiān)聽的主機(jī)地址 port 6379 #93行,Redis默認(rèn)的監(jiān)聽端口 daemonize yes #137行,啟用守護(hù)進(jìn)程 pidfile /var/run/redis_6379.pid #159行,指定 PID 文件 loglevel notice #167行,日志級(jí)別 logfile /var/log/redis_6379.log #172行,指定日志文件 /etc/init.d/redis_6379 restart netstat -natp | grep redis
四、Redis 命令工具
redis-server #用于啟動(dòng) Redis 的工具 redis-cli #Redis命令行工具 redis-benchmark #用于檢測(cè) Redis 在本機(jī)的運(yùn)行效率 redis-check-aof #修復(fù) AOF 持久化文件 redis-check-rdb #修復(fù) RDB 持久化文件1、redis-cli 命令行工具
redis-cli -h host -p port -a password-h 指定遠(yuǎn)程主機(jī) -p 指定 Redis 服務(wù)的端口號(hào) -a 指定密碼,未設(shè)置數(shù)據(jù)庫(kù)密碼可以省略-a 選項(xiàng)若不添加任何選項(xiàng)表示,則使用127.0.0.1:6379連接本機(jī)上的Redis數(shù)據(jù)庫(kù)2、redis-benchmark 測(cè)試工具
- redis-benchmark 是官方自帶的 Redis 性能測(cè)試工具,可以有效的測(cè)試 Redis 服務(wù)的性能。
五、Redis 數(shù)據(jù)庫(kù)常用命令
set:存放數(shù)據(jù),命令格式為 set key value get:獲取數(shù)據(jù),命令格式為 get key #keys 命令可以取符合規(guī)則的鍵值列表,通常情況可以結(jié)合*、?等選項(xiàng)來(lái)使用。 keys * #查看當(dāng)前數(shù)據(jù)庫(kù)中所有的數(shù)據(jù) keys v* #查看當(dāng)前數(shù)據(jù)庫(kù)中以v開頭的數(shù)據(jù) keys v?? #查看當(dāng)前數(shù)據(jù)庫(kù)中以v開頭后面包含任意一位的數(shù)據(jù) keys v?? #查看當(dāng)前數(shù)據(jù)庫(kù)中以v開頭后面包含任意兩位的數(shù)據(jù) #exists 命令可以判斷鍵值是否存在。 exists [鍵] 返回值為1表示存在,0表示不存在#del 命令可以刪除當(dāng)前數(shù)據(jù)庫(kù)的指定 key。 del [鍵]#type 命令可以獲取 key 對(duì)應(yīng)的 value 值類型。 type [鍵] #rename 命令是對(duì)已有 key 進(jìn)行重命名。(覆蓋) rename 源key 目標(biāo)key 使用rename命令進(jìn)行重命名時(shí),無(wú)論目標(biāo)key是否存在都進(jìn)行重命名,且源key的值會(huì)覆蓋目標(biāo)key的值。 在實(shí)際使用過(guò)程中,建議先用 exists 命令查看目標(biāo) key 是否存在,然后再?zèng)Q定是否執(zhí)行 rename 命令,以避免覆蓋重要數(shù)據(jù)。#renamenx 命令是對(duì)已有 key 進(jìn)行重命名,并檢測(cè)新名是否存在,如果目標(biāo) key 存在則不進(jìn)行重命名。(不覆蓋) renamenx 源key 目標(biāo)key #dbsize 命令的作用是查看當(dāng)前數(shù)據(jù)庫(kù)中 key 的數(shù)目。 #設(shè)置密碼 config set requirepass password#查看密碼(一旦設(shè)置密碼,必須先驗(yàn)證通過(guò)密碼,否則所有操作不可用) auth 密碼 config get requirepass#刪除密碼 auth 密碼 config get requirepass ''例: config set requirepass 010230 auth 010230 config get requirepass auth 010230 config get requirepass ''六、Redis 多數(shù)據(jù)庫(kù)常用命令
- Redis 支持多數(shù)據(jù)庫(kù),Redis 默認(rèn)情況下包含 16 個(gè)數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)名稱是用數(shù)字 0-15 來(lái)依次命名的。
- 多數(shù)據(jù)庫(kù)相互獨(dú)立,互不干擾。
總結(jié)
以上是生活随笔為你收集整理的Redis数据库(一)——Redis简介、部署及常用命令的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 电脑配置秘籍:内存条和主板搭配攻略
- 下一篇: Redis数据库(二)——Redis高可