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ī)應(yīng)用商店流行軟件排名等需求中
redis持久化方案:
- rdb:可以設(shè)置間隔多長時(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)閉







