什么是Redis?分布式緩存Redis服務(wù)安裝與命令解析

今天為大家分享一個(gè)系列的教程Redis高級(jí)應(yīng)用實(shí)戰(zhàn)分布式緩存,今天文章內(nèi)容概要:1、那么分布式緩存為什么要用Redis,什么是redis,2、為什么要用緩存機(jī)制,3、而Redis作為單線程模型為什么效率還這么高?4、Redis服務(wù)安裝及常用命令解析

1. 什么是Redis

NoSQL

分布式緩存中間件

key-value存儲(chǔ)

提供海量的數(shù)據(jù)存儲(chǔ)訪問(wèn)

所有數(shù)據(jù)放在內(nèi)存中,讀取速度非???/p>

非關(guān)系型,分布式、開(kāi)源,支持水平擴(kuò)展

2. 為什么使用內(nèi)存緩存數(shù)據(jù)庫(kù)

因?yàn)樵谖覀兊幕A(chǔ)架構(gòu),我們的數(shù)據(jù)庫(kù)一般都是第一節(jié)點(diǎn)(主從、MMM、MHA)

一遍導(dǎo)致數(shù)據(jù)庫(kù)緩慢或宕機(jī)的都是查詢導(dǎo)致的,update、delete,80%的SQL都是查詢,如果能夠?qū)⑦@80%SQL抽離到緩存中;

Redis VS Memcache VS Ehcache

Ehcache

不支持集群,單點(diǎn)

不支持分布式,存儲(chǔ)容量不支持?jǐn)U展

基于Java開(kāi)發(fā)的,被apache認(rèn)證

基于JVM緩存的

簡(jiǎn)單、輕巧、方便(廣泛的應(yīng)用于hibernate,Mybatis)

優(yōu)點(diǎn)

缺點(diǎn)

Memcache

無(wú)法容災(zāi)

無(wú)法持久化

簡(jiǎn)單的key-value存儲(chǔ)

內(nèi)存使用率比較高

支持多核多線程

優(yōu)點(diǎn)

缺點(diǎn)

Redis

單線程(不建議進(jìn)行大數(shù)據(jù)量的存儲(chǔ))

單核(無(wú)法充分利用CPU多核性能,建議使用多實(shí)例)

豐富的數(shù)據(jù)結(jié)構(gòu)

持久化:RDB、AOF

主從同步、故障轉(zhuǎn)移(MySQL;主從)

內(nèi)存數(shù)據(jù)庫(kù)

優(yōu)點(diǎn)

缺點(diǎn)

3、Redis作為單線程模型為什么效率還這么高?

1、純內(nèi)存訪問(wèn):數(shù)據(jù)存放在內(nèi)存中,內(nèi)存的響應(yīng)時(shí)間是100納秒

2、非阻塞式的I/O操作:Redis采用epoll作為I/O多路復(fù)用技術(shù)的實(shí)現(xiàn)

3、采用單線程避免了不必要的上下文切換和競(jìng)爭(zhēng)條件

什么是多路復(fù)用

如果你是一個(gè)老師,有30個(gè)學(xué)生做一道題,做完需要檢查

1、按順序檢查,A,B,C

2、你創(chuàng)建30個(gè)分身,來(lái)檢查30個(gè)結(jié)果

3、誰(shuí)做完了誰(shuí)舉手,A,B、C,D

4. Redis服務(wù)安裝及常用命令解析

# redis下載解壓后yum -y install gcc-c++make && make install

# cd /usr/local/bin 將redis相關(guān)的命令安裝進(jìn)來(lái)# 進(jìn)入redis根目錄對(duì)redis.conf進(jìn)行修改daemonize yes

#后臺(tái)執(zhí)行dir /usr/local/redis-6379

#工作目錄bind 0.0.0.0 #ip訪問(wèn)控制,這里是放開(kāi)的意思requirepass icoding

#設(shè)置redis密碼port 6379pidfile /var/run/redis_6379.pid

#進(jìn)程id存放文件maxcliens 0 #客戶端的最大連接數(shù),默認(rèn)0就是不限制timeout 0

#客戶端連接的超時(shí)時(shí)長(zhǎng),默認(rèn)0就是關(guān)閉不限制#啟動(dòng)Redisredis-server redis.conf

5.Redis五大數(shù)據(jù)類型

string

keys *#查看redis當(dāng)前數(shù)據(jù)庫(kù)所有的key-value,生成上不要用

keys abc*

set / setnx : 后者如果有數(shù)據(jù)就不生效,前者有數(shù)據(jù)就覆蓋

expire username

# redis默認(rèn)配置有16個(gè)DB數(shù)據(jù)庫(kù),可以增減

flushdb #刪除當(dāng)前DB中所有數(shù)據(jù)

flushall#刪除所有DB中的數(shù)據(jù)

# 如果要關(guān)閉這兩個(gè)命令的

rename-command FLUSHDB ""# rename-command FLUSHDB "icoding

floushdb"rename-command FLUSHALL ""

hash:對(duì)象

# 比如一個(gè)對(duì)象,這個(gè)一般在購(gòu)物車中使用比較多

user {?

name: icoding?

age: 18?

sex: male

}

hset user name icoding age 18 sex male

type user

hget user

namehgetall user?

list:棧

# 做管道通知

lpush userList 1 2 3 4 5

lpop user

Listrpop

userList

set:集合

sadd userSet 1 2 3 4 5 6 5 4 3 2 1

smembers userSet

srandmember userSet 2#隨機(jī)展示兩個(gè)

spop userSet 2#隨機(jī)取兩個(gè) 可以做抽獎(jiǎng)

zset:帶有一個(gè)數(shù)據(jù)標(biāo)簽的集合

zadd za1 10.99 apple 20.11 peach 40.89 banana 30.80 pear 50.79 cherry

zrange za1 0 -1 withscores

GEO

geoadd china:city 116.408 39.904

beijing 121.445 31.213

shanghai 113.265 23.108

guangzhou 114.109 22.544

shenzhen 108.969 34.285

xian 108.55 34.09

changan

如果需要本期圖文教程的視頻教程,請(qǐng)關(guān)注“艾編程”公眾號(hào),回復(fù)關(guān)鍵詞“Redis”或者“分布式緩存”,看本期課程的視頻+圖文教程,還能收獲更多哦!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容