一、redis7實(shí)戰(zhàn)教程簡(jiǎn)潔
1、大綱:
①、適合對(duì)象,從小白到熟手,一套全包圓
②、Redis專(zhuān)題-大廠面試題,含100道+
③、Redis專(zhuān)題-真實(shí)需求生產(chǎn)真實(shí)案例
④、Redis7新特性
2、小白篇+高階篇:
?3、大廠面試題:
①、面試題
②、專(zhuān)題
4、隨堂案例
二、redis是什么
1、官網(wǎng)解釋?zhuān)?/h3>
Remote Dictionary Server(遠(yuǎn)程字典服務(wù))是完全開(kāi)源的,使用ANSIC語(yǔ)言編寫(xiě)遵守BSD協(xié)議,是一個(gè)高性能的Key-Value數(shù)據(jù)庫(kù)提供了豐富的數(shù)據(jù)結(jié)構(gòu),例如String、Hash、List、Set、SortedSet等等。數(shù)據(jù)是存在內(nèi)存中的,同時(shí)Redis支持事務(wù)、持久化、LUA腳本、發(fā)布/訂閱、緩存淘汰、流技術(shù)等多種功能特性提供了主從模式、Redis Sentinel和Redis Cluster集群架構(gòu)方案
三、redis能干啥-上集
1、分布式緩存,擋在mysql數(shù)據(jù)庫(kù)之前的帶刀護(hù)衛(wèi)
2、基于內(nèi)存的KV鍵值對(duì)內(nèi)存數(shù)據(jù)庫(kù)
四、redis能干嘛-中集
1、分布式緩存,擋在mysql數(shù)據(jù)庫(kù)之前的帶刀護(hù)衛(wèi)
與傳統(tǒng)數(shù)據(jù)庫(kù)關(guān)系(mysql)
Redis是key-value數(shù)據(jù)庫(kù)(NoSQL一種),mysql是關(guān)系數(shù)據(jù)庫(kù)
Redis數(shù)據(jù)操作主要在內(nèi)存,而mysql主要存儲(chǔ)在磁盤(pán)
Redis在某一些場(chǎng)景使用中要明顯優(yōu)于mysql,比如計(jì)數(shù)器、排行榜等方面
Redis通常用于一些特定場(chǎng)景,需要與Mysql一起配合使用
兩者并不是相互替換和競(jìng)爭(zhēng)關(guān)系,而是共同和配合使用
2、內(nèi)存存儲(chǔ)和持久化(RDB+AOF)
redis支持異步將內(nèi)存中的數(shù)據(jù)寫(xiě)到硬盤(pán)上,同時(shí)不影響繼續(xù)服務(wù)
3、高可用架構(gòu)搭配(單機(jī)、主從、哨兵、集群)
4、緩存穿透、擊穿、雪崩
5、分布式鎖
6、隊(duì)列
Reids提供list和set操作,這使得Redis能作為一個(gè)很好的消息隊(duì)列平臺(tái)來(lái)使用。
我們常通過(guò)Reids的隊(duì)列功能做購(gòu)買(mǎi)限制。比如到節(jié)假日或者推廣期間,進(jìn)行一些活動(dòng),
對(duì)用戶購(gòu)買(mǎi)行為進(jìn)行限制,限制今天只能購(gòu)買(mǎi)幾次商品或者一段時(shí)間內(nèi)只能購(gòu)買(mǎi)一次。也比較適合適用。
7、排行版+點(diǎn)贊
在互聯(lián)網(wǎng)應(yīng)用中,有各種各樣的排行榜,如電商網(wǎng)站的月度銷(xiāo)量排行榜、社交APP的禮物排行榜、小程序的投票排行榜等等。Redis提供的zset數(shù)據(jù)類(lèi)型能夠快速實(shí)現(xiàn)這些復(fù)雜的排行榜。
?
比如小說(shuō)網(wǎng)站對(duì)小說(shuō)進(jìn)行排名,根據(jù)排名,將排名靠前的小說(shuō)推薦給用戶
五、redis能干嘛-下集
1、優(yōu)勢(shì)
①、性能極高 – Redis能讀的速度是110000次/秒,寫(xiě)的速度是81000次/秒
②、Redis數(shù)據(jù)類(lèi)型豐富,不僅僅支持簡(jiǎn)單的key-value類(lèi)型的數(shù)據(jù),
同時(shí)還提供list,set,zset,hash等數(shù)據(jù)結(jié)構(gòu)的存儲(chǔ)
③、Redis支持?jǐn)?shù)據(jù)的持久化,可以將內(nèi)存中的數(shù)據(jù)保持在磁盤(pán)中,
重啟的時(shí)候可以再次加載進(jìn)行使用
④、Redis支持?jǐn)?shù)據(jù)的備份,即master-slave模式的數(shù)據(jù)備份
2、小總結(jié)
六、redis去哪下
英文官網(wǎng)網(wǎng)址:Redis
七、redis怎么玩
0、官網(wǎng)
1、多種數(shù)據(jù)類(lèi)型基本操作和配置
2、持久化和復(fù)制,RDB/AOF
3、事務(wù)的控制
4、復(fù)制,集群等
八、redis7新特性淺談
總體概述:
大體和之前的redis版本保持一致和穩(wěn)定,主要是自身底層性能和資源利用率上的優(yōu)化和提高,如果你生產(chǎn)上系統(tǒng)穩(wěn)定,不用著急升級(jí)到最新的redis7版本,當(dāng)然,O(∩_∩)O哈哈~,如果你是從零開(kāi)始的新系統(tǒng),直接上Redis7.0-GA版。^_^
【多AOF文件支持】? ?
7.0 版本中一個(gè)比較大的變化就是 aof 文件由一個(gè)變成了多個(gè),主要分為兩種類(lèi)型:基本文件(base files)、增量文件(incr files),請(qǐng)注意這些文件名稱(chēng)是復(fù)數(shù)形式說(shuō)明每一類(lèi)文件不僅僅只有一個(gè)。在此之外還引入了一個(gè)清單文件(manifest) 用于跟蹤文件以及文件的創(chuàng)建和應(yīng)用順序(恢復(fù))
【config命令增強(qiáng)】??
對(duì)于Config Set 和Get命令,支持在一次調(diào)用過(guò)程中傳遞多個(gè)配置參數(shù)。例如,現(xiàn)在我們可以在執(zhí)行一次Config Set命令中更改多個(gè)參數(shù): config set maxmemory 10000001 maxmemory-clients 50% port 6399
【限制客戶端內(nèi)存使用Client-eviction】
?一旦 Redis 連接較多,再加上每個(gè)連接的內(nèi)存占用都比較大的時(shí)候, Redis總連接內(nèi)存占用可能會(huì)達(dá)到maxmemory的上限,可以增加允許限制所有客戶端的總內(nèi)存使用量配置項(xiàng),redis.config 中對(duì)應(yīng)的配置項(xiàng)
// 兩種配置形式:指定內(nèi)存大小、基于 maxmemory 的百分比。
maxmemory-clients 1g
maxmemory-clients 10%
【listpack緊湊列表調(diào)整】
listpack 是用來(lái)替代 ziplist 的新數(shù)據(jù)結(jié)構(gòu),在 7.0 版本已經(jīng)沒(méi)有 ziplist 的配置了(6.0版本僅部分?jǐn)?shù)據(jù)類(lèi)型作為過(guò)渡階段在使用)listpack 已經(jīng)替換了 ziplist 類(lèi)似 hash-max-ziplist-entries 的配置
【訪問(wèn)安全性增強(qiáng)ACLV2】
在redis.conf配置文件中,protected-mode默認(rèn)為yes,只有當(dāng)你希望你的客戶端在沒(méi)有授權(quán)的情況下可以連接到Redis server的時(shí)候可以將protected-mode設(shè)置為no
【Redis Functions】
Redis函數(shù),一種新的通過(guò)服務(wù)端腳本擴(kuò)展Redis的方式,函數(shù)與數(shù)據(jù)本身一起存儲(chǔ)。
簡(jiǎn)言之,redis自己要去搶奪Lua腳本的飯碗
【RDB保存時(shí)間調(diào)整】? ??
將持久化文件RDB的保存規(guī)則發(fā)生了改變,尤其是時(shí)間記錄頻度變化
【命令新增和變動(dòng)】??
Zset (有序集合)增加 ZMPOP、BZMPOP、ZINTERCARD 等命令
Set (集合)增加 SINTERCARD 命令
LIST (列表)增加 LMPOP、BLMPOP ,從提供的鍵名列表中的第一個(gè)非空列表鍵中彈出一個(gè)或多個(gè)元素。
【性能資源利用率、安全、等改進(jìn)】? ??
自身底層部分優(yōu)化改動(dòng),Redis核心在許多方面進(jìn)行了重構(gòu)和改進(jìn)
主動(dòng)碎片整理V2:增強(qiáng)版主動(dòng)碎片整理,配合Jemalloc版本更新,更快更智能,延時(shí)更低
HyperLogLog改進(jìn):在Redis5.0中,HyperLogLog算法得到改進(jìn),優(yōu)化了計(jì)數(shù)統(tǒng)計(jì)時(shí)的內(nèi)存使用效率,7更加優(yōu)秀
更好的內(nèi)存統(tǒng)計(jì)報(bào)告
如果不為了API向后兼容,我們將不再使用slave一詞......(政治正確)
九、redis安裝環(huán)境要求和準(zhǔn)備
Linux冠軍安裝Redis必須先具備gcc編譯環(huán)境
查看:gcc -v
本次我們用 Redis-7.0.12
十、redis安裝和坑排除
mkdir /myredis
cp redis.conf /myredis/redis7.conf
vim redis7.conf #修改配置文件相關(guān)配置
redis-server /myredis/redis7.conf #啟動(dòng)redis服務(wù)
ps -ef|grep redis|grep -v grep #查看redis的進(jìn)程
redis-cli -a 111111 -p 6379 #連接redis服務(wù)
使用ping測(cè)試redis是否安裝成功,返回PONG
lsof -i:6379 #查看端口號(hào)是否被占用
十一、redis10大類(lèi)型之總體概括
0、一圖
1、提前聲明
這里說(shuō)的數(shù)據(jù)類(lèi)型是value的數(shù)據(jù)類(lèi)型,key的類(lèi)型都是字符串?
2、Redis10大數(shù)據(jù)類(lèi)型
①、redis字符串(String)
String(字符串)
?
string是redis最基本的類(lèi)型,一個(gè)key對(duì)應(yīng)一個(gè)value。
?
string類(lèi)型是二進(jìn)制安全的,意思是redis的string可以包含任何數(shù)據(jù),比如jpg圖片或者序列化的對(duì)象 。
?
string類(lèi)型是Redis最基本的數(shù)據(jù)類(lèi)型,一個(gè)redis中字符串value最多可以是512M
②、redis列表(List)
List(列表)
Redis列表是簡(jiǎn)單的字符串列表,按照插入順序排序。你可以添加一個(gè)元素到列表的頭部(左邊)或者尾部(右邊)
它的底層實(shí)際是個(gè)雙端鏈表,最多可以包含 2^32 - 1 個(gè)元素 (4294967295, 每個(gè)列表超過(guò)40億個(gè)元素)
③、redis哈希表(Hash)
Redis hash 是一個(gè) string 類(lèi)型的 field(字段) 和 value(值) 的映射表,hash 特別適合用于存儲(chǔ)對(duì)象。
?
Redis 中每個(gè) hash 可以存儲(chǔ) 2^32 - 1 鍵值對(duì)(40多億)
④、redis集合(Set)
Set(集合)
?
Redis 的 Set 是 String 類(lèi)型的無(wú)序集合。集合成員是唯一的,這就意味著集合中不能出現(xiàn)重復(fù)的數(shù)據(jù),集合對(duì)象的編碼可以是 intset 或者 hashtable。
?
Redis 中Set集合是通過(guò)哈希表實(shí)現(xiàn)的,所以添加,刪除,查找的復(fù)雜度都是 O(1)。
?
集合中最大的成員數(shù)為 2^32 - 1 (4294967295, 每個(gè)集合可存儲(chǔ)40多億個(gè)成員)
⑤、redis有序集合(ZSet)
zset(sorted set:有序集合)
Redis zset 和 set 一樣也是string類(lèi)型元素的集合,且不允許重復(fù)的成員。
不同的是每個(gè)元素都會(huì)關(guān)聯(lián)一個(gè)double類(lèi)型的分?jǐn)?shù),redis正是通過(guò)分?jǐn)?shù)來(lái)為集合中的成員進(jìn)行從小到大的排序。
?
zset的成員是唯一的,但分?jǐn)?shù)(score)卻可以重復(fù)。
?
zset集合是通過(guò)哈希表實(shí)現(xiàn)的,所以添加,刪除,查找的復(fù)雜度都是 O(1)。 集合中最大的成員數(shù)為 2^32 - 1
⑥、redis地理空間(GEO)
Redis GEO 主要用于存儲(chǔ)地理位置信息,并對(duì)存儲(chǔ)的信息進(jìn)行操作,包括
?
添加地理位置的坐標(biāo)。
獲取地理位置的坐標(biāo)。
計(jì)算兩個(gè)位置之間的距離。
根據(jù)用戶給定的經(jīng)緯度坐標(biāo)來(lái)獲取指定范圍內(nèi)的地理位置集合
?
⑦、redis基數(shù)統(tǒng)計(jì)(HyperLogLog)
HyperLogLog 是用來(lái)做基數(shù)統(tǒng)計(jì)的算法,HyperLogLog 的優(yōu)點(diǎn)是,在輸入元素的數(shù)量或者體積非常非常大時(shí),計(jì)算基數(shù)所需的空間總是固定且是很小的。
?
在 Redis 里面,每個(gè) HyperLogLog 鍵只需要花費(fèi) 12 KB 內(nèi)存,就可以計(jì)算接近 2^64 個(gè)不同元素的基 數(shù)。這和計(jì)算基數(shù)時(shí),元素越多耗費(fèi)內(nèi)存就越多的集合形成鮮明對(duì)比。
?
但是,因?yàn)?HyperLogLog 只會(huì)根據(jù)輸入元素來(lái)計(jì)算基數(shù),而不會(huì)儲(chǔ)存輸入元素本身,所以 HyperLogLog 不能像集合那樣,返回輸入的各個(gè)元素。
?
⑧、redis位圖(bitmap)
?由0和1狀態(tài)表現(xiàn)的二進(jìn)制位的bit數(shù)組
?
?
⑨、redis位域(bitfield)
通過(guò)bitfield命令可以一次性操作多個(gè)比特位域(指的是連續(xù)的多個(gè)比特位),它會(huì)執(zhí)行一系列操作并返回一個(gè)響應(yīng)數(shù)組,這個(gè)數(shù)組中的元素對(duì)應(yīng)參數(shù)列表中的相應(yīng)操作的執(zhí)行結(jié)果。
?
說(shuō)白了就是通過(guò)bitfield命令我們可以一次性對(duì)多個(gè)比特位域進(jìn)行操作。
⑩、redis流(Stream)
Redis Stream 是 Redis 5.0 版本新增加的數(shù)據(jù)結(jié)構(gòu)。
?
Redis Stream 主要用于消息隊(duì)列(MQ,Message Queue),Redis 本身是有一個(gè) Redis 發(fā)布訂閱 (pub/sub) 來(lái)實(shí)現(xiàn)消息隊(duì)列的功能,但它有個(gè)缺點(diǎn)就是消息無(wú)法持久化,如果出現(xiàn)網(wǎng)絡(luò)斷開(kāi)、Redis 宕機(jī)等,消息就會(huì)被丟棄。
?
簡(jiǎn)單來(lái)說(shuō)發(fā)布訂閱 (pub/sub) 可以分發(fā)消息,但無(wú)法記錄歷史消息。
?
而 Redis Stream 提供了消息的持久化和主備復(fù)制功能,可以讓任何客戶端訪問(wèn)任何時(shí)刻的數(shù)據(jù),并且能記住每一個(gè)客戶端的訪問(wèn)位置,還能保證消息不丟失
十二、redis10大類(lèi)型之命令查閱
?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-613269.html
?
?
?
?文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-613269.html
?
到了這里,關(guān)于Redis7學(xué)習(xí)筆記01的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!