Redis高級命令與特性以及單點模式的介紹

高級命令

  • keys * 返回滿足條件的所有key,可以模糊匹配
  • exists 是否存在指定的key
  • persist 取消過期時間
  • select 選擇數據庫 (0-15,總共16個數據庫)
  • move key index 將當前數據庫的 key 移動到給定的數據庫 db 當中
  • randomkey 隨機返回數據庫里的一個key
  • rename 重命名key
  • echo 打印命令
  • dbsize 查看數據庫key的數量
  • info 獲取數據庫的信息
  • config get 獲取配置信息
  • flushdb 清空數據庫

Redis安全

  • 定期打補丁
  • 禁止一些高危命令
  • 以低權限運行 Redis 服務
  • 禁止外網訪問 Redis
  • 設置訪問密碼 足夠復雜,防止暴力破解?
  • 訪問權限 內網通過acl限制可以訪問redis的ip和端口

Redis部署方式-

單點模式

  • 安裝完以后直接啟動 ./redis-server ../redis.conf

主從模式

  • 一個master可以擁有多個slave,多個slave同時連接一個master,節點在復制時不會影響master對外提供服務,提供系統的伸縮性。
  • 主從復制的過程?:slave與master建立連接,發送sync同步命令; master開啟一個后臺進程,將數據庫快照保存到文件中,同時master主進程會開始收集新的寫命令并緩存;后臺完成保存后,就將文件發送給slave ;slave將此文件保存到硬盤上
  • 配置 :修改redis.conf, 增加slaveof配置,設置masterauth

哨兵模式

  • 概述 :支持集群
  • 版本 :運行Sentinel
  • 配置 :Sentinel 選舉 ;版本以及版本傳機制播
  • 一致性
  • 持久化

Redis Cluster

  • Redis Cluster是Redis的分布式解決方案,在Redis 3.0版本正式推出的,有效解決了Redis分布式方面的需求。當遇到單機內存、并發、流量等瓶頸時,可以采用Cluster架構達到負載均衡的目的。
  • 數據分布理論: 分布式數據庫首要解決把整個數據集按照分區規則映射到多個節點的問題,即把數據集劃分到多個節點上,每個節點負責整個數據的一個子集。常見的分區規則有哈希分區和順序分區。Redis Cluster采用哈希分區規則,因此接下來會討論哈希分區規則。
  • 常見的哈希分區有以下幾種: 節點取余分區 ;一致性哈希分區 ;虛擬槽分區

Redis集群數據分區

Redis集群功能限制

  • key批量操作支持有限。如:MSET``MGET,目前只支持具有相同slot值的key執行批量操作。
  • key事務操作支持有限。支持多key在同一節點上的事務操作,不支持分布在多個節點的事務功能。
  • key作為數據分區的最小粒度,因此不能將一個大的鍵值對象映射到不同的節點。如:hash、list。
  • 不支持多數據庫空間。單機下Redis支持16個數據庫,集群模式下只能使用一個數據庫空間,即db 0

Redis集群模式

  • 安裝ruby(大于2.2.2)
  • 安裝redis
  • 集群配置
  • 安裝gem
  • 安裝ruby的redis包
  • redis-trib.rb構建集群

Redis事務詳解

  • MULTI、EXEC、DISCARD和WATCH命令是Redis事務功能的基礎。Redis事務允許在一次單獨的步驟中執行一組命令,并且可以保證如下兩個重要事項:
  • Redis會將一個事務中的所有命令序列化,然后按順序執行。Redis不可能在一個Redis事務的執行過程中插入執行另一個客戶端發出的請求。這樣便能保證Redis將這些命令作為一個單獨的隔離操作執行
  • 在一個Redis事務中,Redis要么執行其中的所有命令,要么什么都不執行。因此,Redis事務能夠保證原子性。EXEC命令會觸發執行事務中的所有命令
  • MULTI 用于標記事務塊的開始
  • EXEC 在一個事務中執行所有先前放入隊列的命令,然后恢復正常的連接狀態
  • DISCARD 清除所有先前在一個事務中放入隊列的命令,然后恢復正常的連接狀態
  • WATCH 當某個事務需要按條件執行時,就要使用這個命令將給定的鍵設置為受監控的
  • UNWATCH 清除所有先前為一個事務監控的鍵

Redis持久化機制

  • RDB 持久化 RDB持久化是指在指定的時間間隔內將內存中的數據集快照寫入磁盤,也是默認的持久化方式
  • save 900 1 #900秒內如果超過1個key被修改,則發起快照保存
  • save 300 10 #300秒內如超過10個key被修改,則發起快照保存
  • save 60 10000
  • AOF 持久化 aof是redis的一種記錄數據庫寫操作的持久化方案,他會忠實的記錄所有的寫操作,并且以redis協議的格式存儲在一個.aof文件中,在重啟redis的時候,redis可以根據.aof文件的內容來恢復數據集
  • appendfsync always //收到寫命令就立即寫入到磁盤,效率最慢,但是保證完全的持久化
  • appendfsync everysec //每秒鐘寫入磁盤一次,在性能和持久化方面做了很好的折中
  • appendfsync no //完全依賴os 性能最好 持久化沒保證

redis實戰

  • 整合Springboot (單機版 、哨兵模式 、cluster )
  • 消息隊列
  • session共享

?

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/447337.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/447337.shtml
英文地址,請注明出處:http://en.pswp.cn/news/447337.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

華為副總裁徐家駿離職:年薪千萬工作感悟十二條

從普通的公司職員,到年薪千萬的華為副總裁,再到離開華為轉戰百度,徐家駿的十年從業經歷和經驗可資借鑒,我們從中也可以一窺華為的運作過程。徐家駿是華為數據中心的頭,技術超級牛人,一級部門總監&#xff0…

Redis持久化之RDB和AOF

Redis持久化之RDB和AOF Redis 有兩種持久化方案,RDB (Redis DataBase)和 AOF (Append Only File); RDB 詳解 RDB 是 Redis 默認的持久化方案。在指定的時間間隔內,執行指定次數的寫操作&#…

同為程序員 為什么我的工資最低

我看著工資單上每一個開發團隊成員的薪水,慢慢地我不能保持淡定了。 而當我看到我的工資排名是倒數的時候——靠近最后一名——我不由得倒抽一口冷氣。就像圣誕故事中的那個可愛的小男孩Ralphie ,想買氣槍卻被忽悠會有危險一樣,我也不斷忽悠…

Docker安裝Redis以及配置Redis環境

1,下載Redis鏡像 首先拉取 Redis 鏡像, 這里我選擇的是 redis:alpine 輕量級鏡像版本 docker pull redis:alpine 下載完成后,通過 docker images 查看我們已經下載的鏡像,看看是否已經下載到本地 2,運行 Redis 容器 docker run …

.NET程序性能的基本要領

摘要:本文分享了性能優化的一些建議和思考,比如不要過早優化、好工具很重要、性能的關鍵,在于內存分配等。開發者不要盲目的沒有根據的優化,首先定位和查找到造成產生性能問題的原因點最重要。 【編者按】Bill Chiles&#xff08…

redis.conf配置文件詳解

基本配置 daemonize no #是否以后臺進程啟動databases 16 #創建database的數量(默認選中的是database 0)save 900 1 #刷新快照到硬盤中,必須滿足兩者要求才會觸發,即900秒之后至少1個關鍵字發生變化save 300 10 #必須是300秒之后至少10個關鍵字發生變…

什么原因成就了一位優秀的程序員?

這些年我曾和很多程序員一起工作,他們之中的一些人非常厲害,而另一些人顯得平庸。不久前因為和一些技術非常熟練的程序員工作感覺很愉快,我花了一些時間在考慮我佩服他們什么呢?什么原因讓優秀的程序員那么優秀,糟糕的…

Redis的哨兵模式Sentinel

sentinel功能 redis的sentinel系統用于管理多個redis服務器,該系統主要執行三個任務:監控、提醒、自動故障轉移。 1、監控(Monitoring): Redis Sentinel實時監控主服務器和從服務器運行狀態,并且實現自動…

csdn 到底怎么了?不準轉載?

我轉載了20多文章,很多人閱讀過,但是今天看到閱讀量是0, csdn 到底怎么了? 對用戶這樣?請大家看看是不是這樣?

python3之后版本讀取網頁的內容

import urllib.request url "http://helloworldbook2.com/data/message.txt" #直接通過url來獲取網頁數據 print(第一種) response urllib.request.urlopen(url) code response.getcode() html response.read() mystr html.decode("utf8") response.c…

三十功名塵與土——資深程序員生涯自白

摘要:作者Codist(網名)在程序員崗位上工作了三十多年,在這期間他悟出了一些真理,比如,成功來自對失敗的總結學習;條條大路通羅馬,羅馬并不在乎你用什么方式到達。你在生活中積累了哪…

linux/unix核心設計思想

1) 程序應該小而專一,程序應該盡量的小,且只專注于一件事上,不要開發那些看起來有用但是90%的情況都用不到的特性; 2) 程序不只要考慮性能, 程序的可移植性更重要,shell和perl&…

操作系統環境變量

在 Java中,許多類都是 Iterable ,主要包括所有的 Collection 類(但不包括各種 Maps )。 例如,下面的代碼可以顯示所有的操作系統環境變量: // collections/EnvironmentVariables.java // {VisuallyInspect…

用Unix的設計思想來應對多變的需求

摘要:無論是Unix設計,還是面向對象設計,還是別的什么如SOA,ECB,消息,事件,MVC,網絡七層模型,數據庫設計,等等,他們都在干三件事——解耦&#xff…

學習較底層編程:動手寫一個C語言編譯器

動手編寫一個編譯器,學習一下較為底層的編程方式,是一種學習計算機到底是如何工作的非常有效方法。 編譯器通常被看作是十分復雜的工程。事實上,編寫一個產品級的編譯器也確實是一個龐大的任務。但是寫一個小巧可用的編譯器卻不是這么困難。…

Arrays.deepToString() 方法同時適用于基元數組和對象數組

Arrays.deepToString() 方法同時適用于基元數組和對象數組: import java.util.*;public class MultiDimWrapperArray {public static void main(String[] args) {Integer[][] a1 { // Autoboxing{ 1, 2, 3, },{ 4, 5, 6, },};Double[][][] a2 { // Autoboxing{ {…

高效程序員的7個共同特征

要想成為高效的程序員,你需要具備一定的綜合素質才能夠讓你用你所掌握的技能、經驗和知識編寫出有效的代碼。有一些開發人員在技術方面具備一定的技巧,但他們永遠無法成為高效的程序員,就是因為他們缺乏所需的其它幾項特質。本文將給出成為一…

java.util.Array中的方法

概述 asList(): 獲取任何序列或數組,并將其轉換為一個 列表集合 (集合章節介紹了此方法)。 copyOf():以新的長度創建現有數組的新副本。 copyOfRange():創建現有數組的一部分的新副本。 equals():比較兩…

有關編程的12個猜想

摘要:編程世界的將來如何目前仍難預料,但可以肯定的一點是技術一直在加速發展。本文搜羅出12個獨特的編程視角猜想,一起來看看有哪些猜想在不久的將來就能變為現實。 編程世界的將來如何目前仍難預料,但可以肯定的一點是技術一直…

面試中如何剔除“魚目混珠”程序員?

公司招聘面試事宜是一個耗時耗錢的項目,從挑選簡歷開始,還要花更多的時間面試候選人。有的時候這些人才機構會向你保證這些人都是Java天才、SQL專家、堆棧開發者等等,但實際上真實情況遠不及你想想的。對于一個公司來說,執行招聘面…