redis主題
01_Redis介紹和安裝運(yùn)行
02_Jedis的介紹和使用
03_Redis數(shù)據(jù)類型和數(shù)據(jù)操作的命令
04_Redis集群
什么是redis
redis是一個(gè)nosql(not only sql不僅僅只有sql)數(shù)據(jù)庫.翻譯成中文叫做非關(guān)系型數(shù)據(jù)庫.
關(guān)系型數(shù)據(jù)庫與非關(guān)系型數(shù)據(jù)庫
- 關(guān)系型數(shù)據(jù)庫:以二維表形式存儲(chǔ)數(shù)據(jù)
- 非關(guān)系型數(shù)據(jù)庫: 以鍵值對(duì)形式存儲(chǔ)數(shù)據(jù)(key, value形式)
出處
redis是一家意大利的創(chuàng)業(yè)公司出的,然后后來這家公司被VMware贊助. redis底層用C語句編寫.
優(yōu)缺點(diǎn)
優(yōu)點(diǎn):存取速度快,官方稱讀取速度會(huì)達(dá)到30萬次每秒,寫速度在10萬次每秒左右,具體限制于硬件.
缺點(diǎn):對(duì)持久化支持不夠良好,
redis是將數(shù)據(jù)存放到內(nèi)存中,由于內(nèi)容存取速度快所以redis被廣泛應(yīng)用在互聯(lián)網(wǎng)項(xiàng)目中,
所以redis一般不作為數(shù)據(jù)的主數(shù)據(jù)庫存儲(chǔ),一般配合傳統(tǒng)的關(guān)系型數(shù)據(jù)庫使用.
redis應(yīng)用領(lǐng)域
- 分布式緩存
- 分布式session
- 保存博客或者論壇的留言回復(fù)等.
- 總之是用在數(shù)據(jù)量大,并發(fā)量高的情況下
怎么使用
- redis主要就是使用命令來進(jìn)行操作,java端在代碼中可以使用Jedis來操作redis服務(wù)器
- redis數(shù)據(jù)類型
- 字符串String
- 列表list redis中使用的是雙向循環(huán)鏈表來實(shí)現(xiàn)的list,在redis中更像棧
- 散列Hash 一般應(yīng)用于將redis作為分布式緩存,存儲(chǔ)數(shù)據(jù)庫中的數(shù)據(jù)對(duì)象
- 集合set set中數(shù)據(jù)是無序的并且不允許重復(fù)
- 有序集合zset redis會(huì)根據(jù)分?jǐn)?shù)自動(dòng)排序,這里可以使用在學(xué)生成績(jī)排序,或者是手機(jī)應(yīng)用商店流行軟件排名等需求中
redis持久化方案:
- rdb:可以設(shè)置間隔多長(zhǎng)時(shí)間保存一次(Redis不用任何配置默認(rèn)的持久化方案)
- 優(yōu)點(diǎn):讓redis的數(shù)據(jù)存取速度變快
- 缺點(diǎn):服務(wù)器斷電時(shí)會(huì)丟失部分?jǐn)?shù)據(jù)(數(shù)據(jù)的完整性得不到保證)
- aof:可以設(shè)置實(shí)時(shí)保存
- 優(yōu)點(diǎn):持久化良好,能包裝數(shù)據(jù)的完整性
- 缺點(diǎn):大大降低了redis系統(tǒng)的存取速度
主從復(fù)制:
這里使用了心跳檢測(cè)機(jī)制,主從復(fù)制必須使用rdb持久化方式
從服務(wù)器一般是只讀的,保證主服務(wù)器和從服務(wù)器的數(shù)據(jù)一致性
安裝與運(yùn)行redis
安裝環(huán)境
- 安裝redis需要先將官網(wǎng)下載的源碼進(jìn)行編譯,編譯依賴gcc環(huán)境虐块,如果沒有g(shù)cc環(huán)境胚宦,需要安裝gcc:
yum install gcc-c++
安裝
- 本教程使用redis3.0版本。3.0版本主要增加了redis集群功能胸嘴。
- 從官網(wǎng)下載:所有版本地址绪杏,本例使用:3.2.8版本下載地址轮锥,
- 將redis-3.0.0.tar.gz拷貝到
/usr/local
下 - 解壓源碼:
tar -zxvf redis-3.0.0.tar.gz
- 進(jìn)入解壓后的目錄進(jìn)行編譯:
cd /usr/local/redis-3.0.0
make
- 安裝到指定目錄,如
/usr/local/redis
:
cd /usr/local/redis-3.0.0
make PREFIX=/usr/local/redis install
- redis.conf
-
redis.conf
是redis的配置文件,redis.conf
在redis源碼目錄毡琉。 - 注意修改port作為redis進(jìn)程的端口,port默認(rèn)6379铁瞒。
- 拷貝配置文件到安裝目錄下
進(jìn)入源碼目錄,里面有一份配置文件 redis.conf桅滋,然后將其拷貝到安裝路徑下
cd /usr/local/redis
mkdir conf
cp /usr/local/redis-3.0.0/redis.conf /usr/local/redis/bin
-
修改配置文件慧耍,設(shè)置為后端啟動(dòng):
vi redis.conf
配置后端啟動(dòng),默認(rèn)為no,修改為yes 修改配置文件身辨,注釋掉:
#bind 127.0.0.1
修改配置文件,取消保護(hù)模式芍碧,將
protected-mode yes
修改為protected-mode no
(3.2.8版本需要煌珊,低版本不需要配置)-
安裝目錄/bin下每個(gè)文件的作用
/bin下面文件說明
redis3.0新增的redis-sentinel是redis集群管理工具可實(shí)現(xiàn)高可用。
帶配置文件啟動(dòng):
./redis-server redis.conf
redis啟動(dòng)
前端模式啟動(dòng)
直接運(yùn)行bin/redis-server將以前端模式啟動(dòng)泌豆,前端模式啟動(dòng)的缺點(diǎn)是ssh命令窗口關(guān)閉則redis-server程序結(jié)束定庵,不推薦使用此方法。如下圖:
后端模式啟動(dòng)
修改redis.conf配置文件踪危,
daemonize yes
以后端模式啟動(dòng)蔬浙。-
執(zhí)行如下命令啟動(dòng)redis:
cd /usr/local/redis
./bin/redis-server ./redis.conf
查看redis端口 redis默認(rèn)使用6379端口。
-
也可
vi redis.conf
文件贞远,修改端口號(hào):
修改默認(rèn)端口 帶配置文件啟動(dòng):
./redis-server redis.conf
畴博,這樣就是后端模式啟動(dòng)
redis客戶端
在redis的安裝目錄中有redis的客戶端,即redis-cli(Redis Command Line Interface)蓝仲,它是Redis自帶的基于命令行的Redis客戶端俱病。
redis-cli默認(rèn)連接本機(jī)的redis,本機(jī)的redis沒有啟動(dòng)則報(bào)connection refused
的錯(cuò)誤杂曲。
- 指定連接redis服務(wù)的ip和端口:
./redis-cli -h 你的ip -p 6379
redis多數(shù)據(jù)庫
- redis實(shí)例
一個(gè)redis進(jìn)程就是一個(gè)redis實(shí)例庶艾,一臺(tái)服務(wù)器可以同時(shí)有多個(gè)redis實(shí)例袁余,不同的redis實(shí)例提供不同的服務(wù)端口對(duì)外提供服務(wù)擎勘,每個(gè)redis實(shí)例之間互相影響。每個(gè)redis實(shí)例都包括自己的數(shù)據(jù)庫颖榜,數(shù)據(jù)庫中可以存儲(chǔ)自己的數(shù)據(jù)棚饵。 -
多數(shù)據(jù)庫測(cè)試
一個(gè)Redis實(shí)例可以包括多個(gè)數(shù)據(jù)庫,客戶端可以指定連接某個(gè)redis實(shí)例的哪個(gè)數(shù)據(jù)庫掩完,就好比一個(gè)mysql中創(chuàng)建多個(gè)數(shù)據(jù)庫噪漾,客戶端連接時(shí)指定連接哪個(gè)數(shù)據(jù)庫。
一個(gè)redis實(shí)例最多可提供16個(gè)數(shù)據(jù)庫且蓬,下標(biāo)從0到15欣硼,客戶端默認(rèn)連接第0號(hào)數(shù)據(jù)庫,也可以通過select選擇連接哪個(gè)數(shù)據(jù)庫恶阴,如下連接1號(hào)庫:
在1號(hào)庫中查詢上節(jié)設(shè)置的數(shù)據(jù)诈胜,結(jié)果查詢不到:
重新選擇第0號(hào)數(shù)據(jù)庫,查詢數(shù)據(jù):
如果選擇一個(gè)不存在數(shù)據(jù)庫則會(huì)報(bào)錯(cuò):
注意:redis不支持修改數(shù)據(jù)庫的名稱冯事,只能通過select 0焦匈、select 1...選擇數(shù)據(jù)庫。
啟動(dòng)多個(gè)redis進(jìn)程
方式一:
- 啟動(dòng)時(shí)指定端口可在一臺(tái)服務(wù)器啟動(dòng)多個(gè)redis進(jìn)程昵仅。
cd /usr/local/redis/bin
./redis-server ./redis.conf --port 6380
方式二(推薦)
- 創(chuàng)建多個(gè)redis目錄缓熟,以端口號(hào)命名,比如:創(chuàng)建6379、6380兩個(gè)目錄够滑,將redis的安裝文件bin和conf拷貝至這兩個(gè)目錄垦写。
- 修改6379目錄下的redis.conf設(shè)置端口號(hào)為6379
- 修改6380目錄下的redis.conf設(shè)置端口號(hào)為6380
- 啟動(dòng)6379目錄下的redis-server程序:
cd 6379
./redis-server . /redis.conf
- 啟動(dòng)6380目錄下的redis-server程序:
cd 6380
./redis-server . /redis.conf
redis關(guān)閉
- 前端模式,在啟動(dòng)窗口按
ctrl+c
就可以關(guān)閉彰触,下面的關(guān)閉方式都是針對(duì)后端模式啟動(dòng)的時(shí)候梯澜。 - 強(qiáng)制關(guān)閉:
kill -9 進(jìn)程號(hào)
- 通過客戶端關(guān)閉:
./redis-cli shutdown
- 強(qiáng)制關(guān)閉可能會(huì)有數(shù)據(jù)丟失,通過客戶端關(guān)閉會(huì)先保存數(shù)據(jù)再關(guān)閉