Redis簡單操作記錄

Redis事務

1.Redis事務本質:一組命令的集合愤惰,加入隊列崔兴,然后執(zhí)行叹谁,執(zhí)行完事務結束稀蟋。

redis事務:

①開啟事務:multi

②命令入隊:set key1 v1 set key2 v2 .埂陆。苛白。get...

③執(zhí)行事務:exec

取消事務:discard,所有事務中入隊的命令都不會執(zhí)行

注意:如果在②時候命令錯誤焚虱,exec所有的命令都不會被執(zhí)行购裙,如果是命令沒錯運行出錯的話,其他命令可以執(zhí)行鹃栽。

watch用來監(jiān)控事務:

image-20210310150237039.png

可以用來做樂觀鎖操作躏率,如果exec執(zhí)行之前,另外一個事務對money進行操作并且執(zhí)行完了,此時這里再exec的話就會執(zhí)行失敗薇芝。

如何解決蓬抄?

首先放棄watch監(jiān)視 unwatch,即解鎖夯到,再重新watch嚷缭,如果再失敗就再解鎖再加鎖,有種自旋鎖的味道黄娘。


jedis 操作事務:

image-20210310152412821.png

SpringBoot整合Redis

SpringBoot 2.x之后默認不用jedis峭状,替換為lettuce?

jedis:采用直連逼争,多線程操作不安全优床,如何避免?使用jedis pool

lettuce:采用netty誓焦,實例可以多線程共享胆敞,不存在線程安全問題,可以減少線程數據杂伟。

源碼分析:

image-20210310153226478.png

在導入starter包后會發(fā)現底層還是用的lettuce進行操作的移层,雖然也有jedis的實現,但是并沒用

可以用spring自帶的RedisTemplate也可以自己定義赫粥,自己定義則自帶的就會失效:

观话,這里定義了一個jackson序列化的方法。

image-20210310154727484.png
image-20210310155107975.png

redis.conf了解:

bind 127.0.0.1  綁定的ip

protected-mode no 保護模式

port 端口

通用:GENERAL

daemonize yes

pidfile /var/run/redis_6379.pid
# Specify the server verbosity level.
# This can be one of:
# debug (a lot of information, useful for development/testing)
# verbose (many rarely useful info, but not a mess like the debug level)
# notice (moderately verbose, what you want in production probably) 生產環(huán)境
# warning (only very important / critical messages are logged)
loglevel notice

logfile "" 日志文件位置名

databases 16 默認16個數據庫

快照:SNAPSHOTTING
save 900 1  900s內 如果至少有一個key進行修改越平,則持久化
save 300 10 300s內 至少10個key就行操作频蛔,則進行持久化
save 60 10000 。秦叛。晦溪。同理

stop-writes-on-bgsave-error yes 持久化出錯繼續(xù)工作
rdbcompression yes 是否壓縮RDB文件,需要消耗一些cpu資源
rdbchecksum yes 保存RDB文件時挣跋,自動檢查校驗
dir ./ rdb文件保存路徑

REPLICATION 主從復制

安全:SECURITY
設置redis密碼

MEMORY MANAGEMENT
maxmemory <bytes> redis配置最大的內存容量
maxmemory-policy noeviction 內存達到上限時的處理策略
    1三圆、volatile-lru:只對設置了過期時間的key進行LRU(默認值) 
    2、allkeys-lru : 刪除lru算法的key   
    3避咆、volatile-random:隨機刪除即將過期key   
    4舟肉、allkeys-random:隨機刪除   
    5、volatile-ttl : 刪除即將過期的   
    6牌借、noeviction : 永不過期度气,返回錯誤

AOF:APPEND ONLY MODE
appendonly no 默認不開啟,默認rdb模式膨报,一般情況下rdb就夠用了
appendfilename "appendonly.aof"
# appendfsync always  每次修改都會同步
appendfsync everysec 默認每秒執(zhí)行一次
# appendfsync no  不同步

RDB持久化

在指定時間間隔內將內存中的數據集體寫入磁盤,父進程會fork一個子進程講內存內同寫入rdb文件,主進程是不進行ID操作的现柠。

最后一次持久化的話:如果宕機就會缺失一些數據院领。

rdb的dump.rdb文件什么時候產生?

save時够吩,redis關閉時比然,flushall時

AOF 追加

將我們所有命令記錄下來,除了讀操作周循,redis重新執(zhí)行命令强法,會很慢,默認不開啟湾笛。

如果開啟了aof饮怯,aof文件有錯誤則是啟動不了redis的,此時可以用redis目錄下的redis-check-aof可以進行修復嚎研,命令:redis-check-aof --fix appendonly.aof


Redis發(fā)布訂閱

Redis發(fā)布訂閱(pub/sub)是一種消息通信模式蓖墅。

發(fā)布者+頻道


image-20210310181937543.png

測試:


image-20210310182408518.png

原理:通過SUBSCRIBE命令訂閱某頻道后,redis-server里維護了一個字典临扮,字典就是一個個頻道论矾,字典的值是一個鏈表,鏈表中保存了所有訂閱這個channel的客戶端杆勇,SUBSCRIBE命令的關鍵就是將客戶端添加到給定的channel中的訂閱鏈表中贪壳。

通過PUBLISH命令向訂閱者發(fā)送消息,redis-server會使用給定的頻道作為鍵蚜退,在它所維護的channel中查找記錄了訂閱這個頻道的所有客戶端鏈表闰靴,遍歷這個鏈表,將消息發(fā)送給所有訂閱者关霸。

Redis集群

正常最少需要一主二從传黄。

環(huán)境配置:只配從庫,不用配置主庫队寇。

通過info replication查看主從信息膘掰,

復制3個redis.conf,并修改

①端口

②pid名字

③log文件名

④dump.rdb名字

修改完畢之后 通過 redis-server set/redis6379.conf 啟動各個redis佳遣。

如何配置從機识埋?

比如有6379/6380/6381三個服務

在6380中執(zhí)行slaveof 127.0.0.1 6379 意思就是找6379這個作為自己的老大,這個是通過命令配置的零渐,是暫時的窒舟,其實應該在redis.conf文件中配置(replicaof <masterip> <masterport>)。

主機寫從機讀取诵盼。

如果主機斷了惠豺,可以通過slaveof no one 讓自己變成主機银还,如果此時與哪來的老大又回來了,那也沒用了洁墙。

哨兵模式

與上述手動切換主從的繁瑣流程蛹疯,redis使用sentinel哨兵模式來智能化選舉老大。

如何開啟热监?

在bin目錄下有一個redis-sentinel捺弦,如我們上面說的最少三個進程來完成主從,那么哨兵也需要最少三個孝扛。

①.在redis.conf同級目錄下新建哨兵的配置sentinel.conf列吼,多個就配置多個

sentinel monitor myredis 127.0.0.1 6379 1 myredis是被監(jiān)控的名稱,1代表主機掛了苦始,slave投票讓誰接替主機

②.啟動哨兵

redis-sentinel


微信圖片_20210311085059.png

Redis緩存穿透和雪崩

①.穿透(查不到)如何解決:BloomFilter或者在緩存中加一個空對象寞钥,不讓查詢進入數據庫查詢

緩存擊穿(量太大):指的是一個key非常熱點,不停的高并發(fā)集中一個點訪問;

如何解決盈简?設置永不過期/加互斥鎖

②.緩存雪崩:某個時間段緩存集中過期失效凑耻;

如何解決?多搭建幾臺redis異地多活/限流降級/數據預熱(先訪問一邊加載到緩存中)

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末柠贤,一起剝皮案震驚了整個濱河市香浩,隨后出現的幾起案子,更是在濱河造成了極大的恐慌臼勉,老刑警劉巖邻吭,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異宴霸,居然都是意外死亡囱晴,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進店門瓢谢,熙熙樓的掌柜王于貴愁眉苦臉地迎上來畸写,“玉大人,你說我怎么就攤上這事氓扛】莘遥” “怎么了?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵采郎,是天一觀的道長千所。 經常有香客問我,道長蒜埋,這世上最難降的妖魔是什么淫痰? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮整份,結果婚禮上待错,老公的妹妹穿的比我還像新娘籽孙。我一直安慰自己,他們只是感情好朗鸠,可當我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布蚯撩。 她就那樣靜靜地躺著础倍,像睡著了一般烛占。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上沟启,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天忆家,我揣著相機與錄音,去河邊找鬼德迹。 笑死芽卿,一個胖子當著我的面吹牛,可吹牛的內容都是我干的胳搞。 我是一名探鬼主播卸例,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼肌毅!你這毒婦竟也來了筷转?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤悬而,失蹤者是張志新(化名)和其女友劉穎呜舒,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體笨奠,經...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡袭蝗,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了般婆。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片到腥。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖蔚袍,靈堂內的尸體忽然破棺而出乡范,到底是詐尸還是另有隱情,我是刑警寧澤页响,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布篓足,位于F島的核電站,受9級特大地震影響闰蚕,放射性物質發(fā)生泄漏栈拖。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一没陡、第九天 我趴在偏房一處隱蔽的房頂上張望涩哟。 院中可真熱鬧索赏,春花似錦、人聲如沸贴彼。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽器仗。三九已至融涣,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間精钮,已是汗流浹背威鹿。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留轨香,地道東北人忽你。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像臂容,于是被迫代替她去往敵國和親科雳。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,916評論 2 344

推薦閱讀更多精彩內容

  • Redis NoSOL特點 方便擴展 大數據量性能高 數據類型多樣 RDBMS與NoSQL的區(qū)別RDMBS-結構化...
    過期罐頭阿卓閱讀 563評論 0 0
  • 01.NoSQL入門概述-上 1.互聯(lián)網時代背景下大機遇脓杉,為什么用NoSQL 1.單機MySQL的美好年代 在90...
    ytyt1313閱讀 218評論 0 0
  • NOSQL類型簡介鍵值對:會使用到一個哈希表糟秘,表中有一個特定的鍵和一個指針指向特定的數據,如redis丽已,volde...
    MicoCube閱讀 3,958評論 2 27
  • 簡介 AUTOBEAR的NOSQL型數據庫的個人學習筆記蚌堵,本筆記隨時增添,用來鞏固知識沛婴,查缺補漏吼畏。 基礎概念 BS...
    AUTOBEAR閱讀 306評論 0 0
  • 夜鶯2517閱讀 127,712評論 1 9