NoSQL(2)

1、string list hash結構中,每個至少完成5個命令,包含插入 修改 刪除 查詢,list 和hash還需要增加遍歷的操作命令

1、?Keys相關的命令操作:

(1)?查看key是否存在:

EXISTS name???#判斷該鍵是否存在,存在返回1,否則返回0。

#該鍵并不存在,因此append命令返回當前Value的長度

(2) 添加鍵:

append name 'tom'

#該鍵已經存在,因此返回追加后Value的長度。

(3)?查看key的超時時間:、

ttl name

-1? 表示沒有設置超時時間

(4)?遍歷key:

scan 0?

127.0.0.1:6379> scan 0??# 使用 0 作為游標,開始新的迭代

1) "0"? ? ?# 第一次迭代時返回的游標

2) 1) "name"

(5)?返回key的值的序列化:

Redis DUMP 命令用于序列化給定 key ,并返回被序列化的值。

2、?string類型數據的命令操作:

(1)?設置鍵值:

#設置Key的值為20

Redis 的 Set 是 String 類型的無序集合。集合成員是唯一的,這就意味著集合中不能出現重復的數據。

Redis 中集合是通過哈希表實現的,所以添加,刪除,查找的復雜度都是 O(1)。

集合中最大的成員數為 232?- 1 (4294967295, 每個集合可存儲40多億個成員)。

(2)?讀取鍵值:

Redis Get 命令用于獲取指定 key 的值。如果 key 不存在,返回 nil 。如果key 儲存的值不是字符串類型,返回一個錯誤。

(3)?數值類型自增1:

Redis Incr 命令將 key 中儲存的數字值增一。

如果 key 不存在,那么 key 的值會先被初始化為 0 ,然后再執行 INCR 操作。

如果值包含錯誤的類型,或字符串類型的值不能表示為數字,那么返回一個錯誤。

本操作的值限制在 64 位(bit)有符號數字表示之內。

語法

redis Incr 命令基本語法如下:

redis 127.0.0.1:6379> INCR KEY_NAME 

(4)?數值類型自減1:

Redis Decr 命令將 key 中儲存的數字值減一。

如果 key 不存在,那么 key 的值會先被初始化為 0 ,然后再執行 DECR 操作。

如果值包含錯誤的類型,或字符串類型的值不能表示為數字,那么返回一個錯誤。

本操作的值限制在 64 位(bit)有符號數字表示之內。

語法

redis Decr 命令基本語法如下:

redis 127.0.0.1:6379> DECR KEY_NAME 

(5)?查看值的長度:

Redis Strlen 命令用于獲取指定 key 所儲存的字符串值的長度。當 key 儲存的不是字符串值時,返回一個錯誤。

語法

redis Strlen 命令基本語法如下:

redis 127.0.0.1:6379> STRLEN KEY_NAME

3、?list類型數據的命令操作:

(1)對列表city插入元素:?beijing hangzhou ?shanghai

lpush city beijing hangzhou ?shanghai

Redis Lpush 命令將一個或多個值插入到列表頭部。 如果 key 不存在,一個空列表會被創建并執行 LPUSH 操作。 當 key 存在但不是列表類型時,返回一個錯誤。

注意:在Redis 2.4版本以前的 LPUSH 命令,都只接受單個 value 值。

語法

redis Lpush 命令基本語法如下:

redis 127.0.0.1:6379> LPUSH KEY_NAME VALUE1.. VALUEN

(2)將列表city里的頭部的元素移除

lpop city

Redis Lpop 命令用于移除并返回列表的第一個元素。

語法

redis Lpop 命令基本語法如下:

redis 127.0.0.1:6379> Lpop KEY_NAME 

(3)將age列表的尾部元素移除到home列表的頭部

Redis Rpoplpush 命令用于移除列表的最后一個元素,并將該元素添加到另一個列表并返回。

語法

redis Rpoplpush 命令基本語法如下:

redis 127.0.0.1:6379> RPOPLPUSH SOURCE_KEY_NAME DESTINATION_KEY_NAME

(4)?對一個已存在的列表插入新元素

Redis EXISTS 命令用于檢查給定 key 是否存在。

語法

redis EXISTS 命令基本語法如下:

redis 127.0.0.1:6379> EXISTS KEY_NAME

(5)查看list的值長度

Redis Llen 命令用于返回列表的長度。 如果列表 key 不存在,則 key 被解釋為一個空列表,返回 0 。 如果 key 不是列表類型,返回一個錯誤。

語法

redis Llen 命令基本語法如下:

redis 127.0.0.1:6379> LLEN KEY_NAME 

4、?hash類型數據的命令操作:

(1)?設置一個hash表,order表里包括的鍵值信息有:id:1,customer_name:張三

Redis Hset 命令用于為哈希表中的字段賦值 。

如果哈希表不存在,一個新的哈希表被創建并進行 HSET 操作。

如果字段已經存在于哈希表中,舊值將被覆蓋。

語法

redis Hset 命令基本語法如下:

redis 127.0.0.1:6379> HSET KEY_NAME FIELD VALUE 

(2)?創建一個hash表,表里的鍵值批量插入

Redis Hmset 命令用于同時將多個 field-value (字段-值)對設置到哈希表中。

此命令會覆蓋哈希表中已存在的字段。

如果哈希表不存在,會創建一個空哈希表,并執行 HMSET 操作。

語法

redis Hmset 命令基本語法如下:

redis 127.0.0.1:6379> HMSET KEY_NAME FIELD1 VALUE1 ...FIELDN VALUEN  

(3)?獲取order對應的map的所有key

Redis Hkeys 命令用于獲取哈希表中的所有域(field)。

語法

redis Hkeys 命令基本語法如下:

redis 127.0.0.1:6379> HKEYS key 

(4)?獲取order對應的map的鍵值數量

(5)?獲取order表里的id值

2、舉例說明list和hash的應用場景,每個至少一個場景?

List的應用場景:論壇評論、秒殺、消息隊列

Hash的應用場景:java里結構化的信息存儲,例如用戶個人信息(姓名、性別、興趣愛好)用hash結構存儲

3、配置一redis的主從復制

1. 數據冗余:主從復制實現了數據的熱備份,是持久化之外的一種數據冗余方式。

2. 故障恢復:當主節點出現問題時,可以由從節點提供服務,實現快速的故障恢復;實際上是一種服務的冗 余。

3. 負載均衡:在主從復制的基礎上,配合讀寫分離,可以由主節點提供寫服務,由從節點提供讀服務(即寫 Redis數據時應用連接主節點,讀Redis數據時應用連接從節點),分擔服務器負載;尤其是在寫少讀多的場 景下,通過多個從節點分擔讀負載,可以大大提高Redis服務器的并發量。

4. 讀寫分離:可以用于實現讀寫分離,主庫寫、從庫讀,讀寫分離不僅可以提高服務器的負載能力,同時可 根據需求的變化,改變從庫的數量;

5. 高可用基石:除了上述作用以外,主從復制還是哨兵和集群能夠實施的基礎,因此說主從復制是Redis高 可用的基礎

下載文件

wget http://download.redis.io/releases/redis-3.2.1.tar.gz

解壓

1.tar zxvf redis-3.2.1.tar.gz

2.mv redis-3.2.1 redis-3.2.1.master

3.tar zxvf redis-3.2.1.tar.gz

4.mv redis-3.2.1 redis-3.2.1.slave-1

5.tar zxvf redis-3.2.1.tar.gz

6.mv redis-3.2.1 redis-3.2.1.slave-2

7.yum install gcc gcc-c++ make -y

執行make和make test

分別進入文件夾:redis-3.2.1.master、redis-3.2.1.slave-1和redis-3.2.1.slave-2的src目錄,執行命令:

1.cd redis-3.2.1.master/src

2.make

若出現下面問題:

轉到:https://www.cnblogs.com/futdream/p/10889262.html

3.make test

若出現下面問題:

轉到:https://www.cnblogs.com/zhaoshunjie/p/5907029.html

//其他兩個目錄執行相同的操作

修改配置文件:redis.conf

主要修改4個參數:

  1. port;
  2. logfile;
  3. slaveof;
  4. pidfile;
  5. daemonize(配置以daemon方式運行)

修改master文件:redis.conf:

配置文件的其他部分不要改動,修改如下內容:

  1. port 6379
  2. pidfile /var/run/redis_6379.pid
  3. # slaveof <masterip> <masterport>
  4. logfile "/var/log/redis.master.log"
  5. daemonize yes

?

?

修改slave-1的配置文件:

  1. port 6380
  2. pidfile /var/run/redis_6380.pid
  3. slaveof 127.0.0.1 6379
  4. logfile "/var/log/redis.slave1.log"
  5. daemonize yes

修改slave2的配置文件:

  1. port 6381
  2. pidfile /var/run/redis_6381.pid
  3. slaveof 127.0.0.1 6379
  4. logfile "/var/log/redis.slave-6381.log"
  5. daemonize yes

開啟master和slave1、slave2

開啟master (salve的開啟方式與此類似)

轉到目錄:redis-3.2.1.master 下(slave則轉到相應的目錄),執行:

/src/redis-server redis.conf

運行成功后,查看logfile可以看到如下界面:

開啟slave1

運行成功后,查看logfile可以看到如下界面:

開啟slave2

運行成功后,查看logfile可以看到如下界面:

客戶端連接-測試同步

如果出現下面問題:

轉到:https://www.jianshu.com/p/a001fd6a236d

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

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

相關文章

NoSQL(3)

1、什么是MongoDB ? MongoDB 是由C語言編寫的&#xff0c;是一個基于分布式文件存儲的開源數據庫系統。 在高負載的情況下&#xff0c;添加更多的節點&#xff0c;可以保證服務器性能。 MongoDB 旨在為WEB應用提供可擴展的高性能數據存儲解決方案。 MongoDB 將數據存儲為…

Python二級筆記(1)

操作題 1&#xff0c;寬度為30字符&#xff0c;星號字符填充&#xff0c;居中對齊。如果輸入字符串超30位&#xff0c;則全部輸出。 例如:鍵盤輸入字符串q為‘abcd’&#xff0c;屏幕輸出abcd 代碼&#xff1a; s input(請輸入一個字符串&#xff1a;) print({:*^30}.form…

Python二級筆記(2)

知識點&#xff1a; 1&#xff0c;鏈表可以是線性結構也可以是非線性結構 線性表的鏈式存儲結構稱為線性鏈表&#xff1b;鏈表上一種物理存儲單元上非連續&#xff0c;非順序的存儲結構&#xff0c;數據元素的邏輯順序是通過鏈表中的指針鏈接次序實現的&#xff0c;鏈表可以說…

Python二級筆記(3)

知識點&#xff1a; 1&#xff0c;排序可以在不同的存儲結構上實現&#xff0c;但快速排序法適于順序存儲的線性表&#xff0c;不適用于鏈式存儲的線性表。 堆棧序適用于線性結構&#xff0c;不適用于非線性結構 2&#xff0c;基本路徑測試根據軟件過程性描述中的控制流確定程…

軟件工程學簡述

軟件危機 軟件危機是指計算機軟件的開發和維護過程中所遇到的一系列嚴重問題。&#xff08;考試中名詞解釋或者選擇題為主&#xff09; 軟件危機的典型表現 &#xff08;1&#xff09;對軟件開發成本和進度的估計常常很不準確。 &#xff08;2&#xff09;用戶對“已完成的…

Python二級筆記(4)

知識點&#xff1a; 1&#xff0c;冒泡排序、快速排序、簡單插入排序、簡單選擇排序在最壞情況下比較次數均為n(n-1)/2&#xff0c;堆排序在最壞情況下比較次數為nlog(2↓)n,在最壞情況下希爾排序需要比較的次數是n(↑r)&#xff08;1<r<2&#xff09;。 2&#xff0c;…

Python二級筆記(5)

知識點&#xff1a; 1&#xff0c;樹的度&#xff0c;及樹中存在的最大度數&#xff1b;如樹的度為3&#xff0c;即樹中只存在度為0&#xff0c;1&#xff0c;2&#xff0c;3的結點。 2&#xff0c;設循環隊列的存儲空間為Q&#xff08;1:m&#xff09;,初始狀態為空。在循環…

Qt圖形界面編程入門(1)

一、類和對象 1&#xff0c;面向過程程序設計&#xff08;自頂向下設計&#xff09; 分析出解決問題所需的步驟&#xff0c;然后用函數把這些步驟一一實現&#xff0c;使用的時候一個一個調用 過程式設計對于比較復雜的問題&#xff0c;或是在開發中需求變化比較多的時候&am…

Qt圖形界面編程入門(2)

二&#xff0c;指針和引用 共同點&#xff1a;它們都代表其他變量占據的某一塊內存區&#xff0c;通過指針或引用都可以對他們代表的其他變量進行操作。 以下語句利用指針對變量賦值&#xff1a; int m; int *p; //指針定義 p &m; //將m的內存地址賦給p *p 5;…

Qt圖形界面編程入門(3)

公有成員和私有成員 從訪問權限上分&#xff0c;類的成員又分為&#xff1a;公有成員&#xff08;public&#xff09;、私有成員&#xff08;private&#xff09;和保護成員&#xff08;protected&#xff09;三類。 公有成員用public來說明。這部分成員可以在程序中通過“…

Qt圖形界面編程入門(4)

構造函數和析構函數 構造函數是一個與類同名的特殊的公有成員函數。 創建類對象時構造函數會被調用&#xff0c;且只調用一次/ 構造函數無返回類型。 默認構造函數格式&#xff1a; 類名&#xff08;&#xff09;{.......} Account(){ //無返回類型&#xff0c;無參數I…

Qt圖形界面編程入門(5)

三&#xff0c;繼承和多態 繼承是定義新類的一種機制&#xff0c;使用這種機制創建新類時只需要聲明新類和已創建類之間的差別 對應一個繼承關系&#xff0c;創建的新類稱為子類&#xff0c;被繼承的類稱為父類或基類。子類可以使用父類定義的屬性和方法&#xff0c;也可以…

tensorflow安裝教程

https://note.youdao.com/ynoteshare1/index.html?iddddc63e6a2dfb70605ae9753bcc71a60&typenote 如果失效請下載文件查看&#xff1a; 鏈接&#xff1a;https://pan.baidu.com/s/15FZETB3rzcpH-LOOpmpjTQ 提取碼&#xff1a;6jfm 如果安裝包找不到請點擊鏈接提取&am…

TensorFlow深度學習應用開發實戰(深度學習簡介和開發環境搭建)

一、深度學習的發展及其應用 1.1 深度學習的發展歷程 1956年&#xff0c;John McCarthy&#xff08;約翰麥卡錫&#xff09;等人在美國達特茅斯學院&#xff08;Dartmounth College&#xff09;開會探討如何使用機器模擬人的智能時&#xff0c;提出了“人工智能”這一概念。 …

路由與交換技術(鋪墊內容)

一、OSI參考模型 層次 結構 功能 數據 地址 設備 7 應用層 用戶接口 原始文件 主機名 主機 6 表示層 壓縮&a…

Python二級筆記(6)

一、知識點 1&#xff0c;continue語句用于中斷本次循環的執行&#xff0c;繼續執行下一輪循環的條件&#xff0c;表示跳出當前循環&#xff1b;Python中的for、while循環都有一個可選的else語句&#xff0c;如果break語句終止循環&#xff0c;那么else語句將不會執行。 2&am…

瀑布模型、快速原型模型、增量模型、螺旋模型、噴泉模型

一、瀑布模型 1、按照傳統的瀑布模型開發軟件&#xff0c;有下述幾個特點。 ①階段間具有順序性和依賴性 階段間具有順序性和依賴性&#xff0c;這個特點有兩重含義&#xff1a; 1&#xff0c;必須等前一階段的工作完成之后&#xff0c;才能開始后一階段的工作&#xff1b;…

Linux基礎命令(1)

1.強大好用的Shell Shell是一個命令工具。Shell&#xff08;也稱終端或殼&#xff09;充當的是人與內核&#xff08;硬件&#xff09;之間的翻譯官&#xff0c;用戶把一些命令“告訴”終端&#xff0c;它會調用相應的程序服務去完成某些工作。 現在紅帽系統在內的許多主流Lin…

Python二級筆記(7)

知識點&#xff1a; 1&#xff0c;鏈式存儲結構既可以針對線性結構也可以針對非線性結構&#xff0c;鏈式存儲結構中每個結點都由數據域與指針域兩部分組成&#xff0c;增加了存儲空間。 2&#xff0c;對象的基本特點&#xff1a;標識唯一性&#xff0c;分類性&#xff0c;多…

Python二級筆記(8)

知識點&#xff1a; 1&#xff0c;棧支持子程序調用。棧上一種只能在一端進行插入或刪除的線性表&#xff0c;在主程序調用子函數時要首先保存主程序當前狀態&#xff0c;然后轉去執行子程序&#xff0c;最終把子程序的執行結果返回到主程序中調用子程序的位置&#xff0c;繼續…