1分鐘學會SpringBoot2知識點,讓你35歲不再失業(三)

1分鐘學會SpringBoot2知識點,讓你35歲不再失業(三)

第十四節、springboot2整合redis

1、NoSQL(NoSQL = Not Only SQL ),意即“不僅僅是SQL”。NoSQL 數據庫種類繁多(Redis、Mongodb、HBase、Elasticsearch 等等),
他們一個共同的特點都是去掉關係數據庫的關係型特性。數據之間無關係,這樣就非常容易擴展。無形之間也在架構的層面上帶來了
可擴展的能力。NoSQL數據庫都具有非常高的讀寫性能,尤其在大量下數據,更能體現它的優勢。這得益於它的無關係性,數據庫的
結構簡單。
2、Redis本質上是一個Key-Value類型的內存數據庫,很像memcached,整個數據庫在內存當中進行操作,定期通過異步操作把數據庫數
據寫到硬盤上進行保存。因爲是純內存操作,Redis的性能非常出色,每秒可以處理超過 10萬次讀寫操作,是已知性能最快的KeyValue
DB。 Redis的出色之處不僅僅是性能,Redis最大的魅力是支持保存多種數據結構,此外單個value的最大限制是1GB,不像
memcached只能保存1MB的數據,因此Redis可以用來實現很多有用的功能。默認16個數據庫,類似數組下標是從零開始,初始默認
使用零號庫,統一的密碼管理,16個庫都是同樣密碼,要麼都連上要麼一個也連接不上,redis默認端口是6379。
redis的優點:

速度快:因爲數據存在內存中,類似於HashMap,HashMap的優勢就是查找和操作的時間複雜度都是O(1)
持久化:定期通過異步操作把數據庫數據寫到硬盤上進行保存
支持豐富數據類型:支持string,list,set,sorted set,hash
支持事務:操作都是原子性,所謂的原子性就是對數據的更改要麼全部執行,要麼全部不執行
豐富的特性:可用於緩存,消息,按key設置過期時間,過期後將會自動刪除

3、redis的數據類型
redis存儲的是:key,value格式的數據,其中key都是字符串,value有5種不同的數據結構
字符串類型 string
string是redis最基本的類型,你可以理解成與Memcached一模一樣的類型,一個key對應一個value;
string類型是二進制安全的。意思是redis的string可以存儲任何數據。
哈希類型 hash
redis的hash 是一個鍵值對集合;
redis hash是一個string類型的field和value的映射表,hash特別適合用於存儲對象;
類似Java裏面的Map<String,Object>;

列表類型 list
Redis的list是每個子元素都是String類型的雙向鏈表,可以通過push和pop操作從列表的頭部或者尾部添加或者刪除元素,這樣
List即可以作爲棧,
也可以作爲隊列。使用List結構,我們可以輕鬆地實現最新消息排行等功能。
集合類型 set
redis的set是string類型的無序集合。它是通過HashTable實現的。

有序集合類型 sortedset
redis的sortedset和 set 一樣也是string類型元素的集合;
不同的是每個元素都會關聯一個double類型的分數;
redis正是通過分數來爲集合中的成員進行從小到大的排序。sortedset的成員是唯一的,但分數(score)卻可以重複;

常用的指令

字符串類型 String

賦值命令:SET key value
解讀:如果key不存在創建該key並賦值,返回“OK”,如果該Key已經存在,則覆蓋其原有值。返回"OK"

取值命令:GET key
解讀:獲取指定 Key 的 Value。如果 key 存在返回對應的 value,如果該 Key 不存在,返回 nil

數字遞增:INCR key
解讀:將指定 Key 的 Value 原子性的遞增1。如果該 Key 不存在,其初始值爲0,在 incr 之後其值爲1

數字遞減:DECR key
解讀:將指定 Key 的 Value 原子性的遞減1。如果該 Key 不存在,其初始值爲0,在 decr 之後其值爲-1。操作返回遞減後的
value值。

增加指定的整數:INCRBY key increment
解讀:將指定Key的Value原子性的增加increment。如果該Key不存在,其初始值爲0,在incrby之後其值爲increment。操作成
功則返回增加後的value值。

減少指定的整數:DECRBY key decrement
解讀:將指定Key的Value原子性的減少decrement。如果該Key不存在,其初始值爲0,在decrby之後其值爲-decrement。操
作成功則返回減少後的value值。

向尾部追加值:APPEND key value
解讀:如果該Key已經存在,APPEND命令將參數Value的數據追加到已存在Value的末尾。如果該Key不存在,APPEND命令將
會創建一個新的Key/Value。返回追加後Value的字符串長度

如圖所示:
在這裏插入圖片描述
哈希類型 hash

賦值命令:HSET key field value
解讀:爲指定的 Key (對象/集合)添加屬性並設置值,如果 Key 不存在,該命令將創建新 Key (對象/集合) 以用於存儲參數中的
屬性對,如果參數中的 Field(屬性) 在該 Key 中已經存在,則用新值覆蓋其原有值。 返回1表示新的 Field(屬性) 被設置了新值,
0表示Field已經存在,用新值覆蓋原有值

取值命令:HGET key field
解讀:返回指定 Key (對象/集合)中指定 Field(屬性) 的關聯值,如果參數中的 Key 或 Field 不存在,返回nil。

刪除字段 :HDEL key field [field …]
解讀:從指定Key (對象/集合)的Hashes Value中刪除參數中指定的多個字段,如果不存在的字段將被忽略,返回實際刪除的
Field數量。如果Key不存在,則將其視爲空Hashes,並返回0。

設置多個字段的值:HMSET key field value [field value …]
解讀:逐對依次設置參數中給出的Field/Value對。如果其中某個Field已經存在,則用新值覆蓋原有值。如果Key (對象/集合)不
存在,則創建新Key (對象/集合),同時設定參數中的Field/Value。

獲取多個字段的值:HMGET key field [field …]
解讀:獲取和參數中指定 Fields 關聯的一組 Values,其返回順序等同於 Fields 的請求順序。如果請求的 Field 不存在,其值返
回null。
在這裏插入圖片描述

在這裏插入圖片描述
列表類型 list

向列表頭部添加元素:LPUSH key value [value …]
解讀:向列表左邊添加元素。如果該 Key 不存在,創建一個與該 Key 關聯的空鏈表,之後再將數據從鏈表的頭部插入。操作成
功則返回插入後鏈表中元素的數量

向列表尾部添加元素:RPUSH key value [value …]
解讀:向列表右邊添加元素。如果該 Key 不存在,創建一個與該 Key 關聯的空鏈表,之後再將數據從鏈表的尾部插入。操作成
功則返回插入後鏈表中元素的數量

獲得列表:LRANGE key start stop
解讀:該命令的參數start和end都是0-based。即0表示鏈表頭部(leftmost)的第一個元素。其中start的值也可以爲負值,-1將表
示鏈表中的最後一個元素,即尾部元素,-2表示倒數第二個並以此類推。該命令在獲取元素時,start和end位置上的元素也會被
取出。如果start的值大於鏈表中元素的數量,空鏈表將會被返回。如果end的值大於元素的數量,該命令則獲取從start(包括
start)開始,鏈表中剩餘的所有元素。注:Redis的列表起始索引爲0。顯然,LRANGE numbers 0 -1 可以獲取列表中的所有元
素。返回指定範圍內元素的列表

列表進行修剪:LTRIM KEY_NAME START STOP
解讀:讓列表只保留指定區間內的元素,不在指定區間之內的元素都將被刪除。 下標 0 表示列表頭部第一個元素,以 1 表示列
表頭部的第二個元素,以此類推。 你也可以使用負數下標,以 -1 表示列表尾部的最後一個元素, -2 表示列表的倒數第二個元
素,以此類推。

元素從左邊出棧:LPOP key
解讀:返回並彈出指定 Key 關聯的鏈表中的第一個元素,即頭部元素。如果該 Key 不存在,返回 nil。LPOP 命令執行兩步操
作:第一步是將列表左邊的元素從列表中移除,第二步是返回被移除的元素值

元素從右邊出棧:RPOP key
解讀:返回並彈出指定 Key 關聯的鏈表中的最後一個元素,即頭部元素。如果該 Key 不存在,返回 nil。RPOP 命令執行兩步操
作:第一步是將列表右邊的元素從列表中移除,第二步是返回被移除的元素值。

獲取列表中元素的個數:LLEN key
解讀:返回指定 Key 關聯的鏈表中元素的數量,如果該 Key 不存在,則返回 0。如果與該 Key 關聯的 Value 的類型不是鏈表,
則返回相關的錯誤信息

獲取指定索引的元素值:LINDEX key index
解讀:該命令將返回鏈表中指定位置(index)的元素,index 是0-based,表示從頭部位置開始第 index 的元素,如果 index 爲
-1,表示尾部元素。如果與該 Key 關聯的不是鏈表,該命令將返回相關的錯誤信息。 如果超出 index 返回這返回 nil
在這裏插入圖片描述
在這裏插入圖片描述
集合類型 set

增加元素:SADD key member [member …]
解讀:如果在插入的過程用,參數中有的成員在Set中已經存在,該成員將被忽略,而其它成員仍將會被正常插入。如果執行該
命令之前,該Key並不存在,該命令將會創建一個新的Set,此後再將參數中的成員陸續插入。返回實際插入的成員數量。

獲得集合中元素個數:SCARD key
解讀:返回Set中成員的數量,如果該Key並不存在,返回0

判斷元素是否在集合中:SISMEMBER key member
解讀:判斷參數中指定成員是否已經存在於與Key相關聯的Set集合中。返回1表示已經存在,0表示不存在,或該Key本身並不
存在

獲得集合中的所有元素:SMEMBERS key
解讀:獲取與該Key關聯的Set中所有的成員。如果ket不存在返回空集合

從集合中彈出一個元素:SPOP key
解讀:隨機的移除並返回Set中的某一成員。 由於Set中元素的佈局不受外部控制,因此無法像List那樣確定哪個元素位於Set的
頭部或者尾部。返回移除的成員,如果該Key並不存在,則返回nil

刪除元素:SREM key member [member …]
解讀:從與Key關聯的Set中刪除參數中指定的成員,不存在的參數成員將被忽略,如果該Key並不存在,將視爲空Set處理。返
回從Set中實際移除的成員數量,如果沒有則返回0

隨機獲得集合中的元素:SRANDMEMBER key [count]
解讀:和SPOP一樣,隨機的返回Set中的一個成員,不同的是該命令並不會刪除返回的成員。還可以傳遞count參數來一次隨機
獲得多個元素,根據count的正負不同,具體表現也不同。當count 爲正數時,SRANDMEMBER 會隨機從集合裏獲得count個
不重複的元素。如果count的值大於集合中的元素個數,則SRANDMEMBER 會返回集合中的全部元素。當count爲負數時,
SRANDMEMBER 會隨機從集合裏獲得|count|個的元素,如果|count|大與集合中的元素,就會返回全部元素不夠的以重複元
素補齊,如果key不存在則返回nil

在這裏插入圖片描述
有序集合類型 sorted set

增加元素:ZADD key score member [score] [member]
解讀:添加參數中指定的所有成員及其分數到指定key的Sorted Set中,在該命令中我們可以指定多組score/member作爲參
數。如果在添加時參數中的某一成員已經存在,該命令將更新此成員的分數爲新值,同時再將該成員基於新值重新排序。如果
鍵不存在,該命令將爲該鍵創建一個新的Sorted Set Value,並將score/member對插入其中。如果該鍵已經存在,但是與其關
聯的Value不是Sorted Set類型,相關的錯誤信息將被返回。添加成功返回實際插入的成員數量。

獲得集合中元素個數:ZCARD key
解讀:返回Sorted Set中的成員數量,如果該Key不存在,返回0。

獲得指定分數範圍內的元素個數:ZCOUNT key min max
解讀:該命令用於獲取分數(score)在min和max之間的成員數量。(min=<score<=max)如果加上了“(”着表明是開區間例如
zcount key (min max 則 表示(min<score=<max)c同理zcount key min (max 則表明(min=<score<max) 返回指定返回數
量。

獲得元素的分數:ZSCORE key member
解讀:如果該成員存在,以字符串的形式返回其分數,否則返回nil。

增加某個元素的分數:ZINCRBY key increment member
解讀:該命令將爲指定Key中的指定成員增加指定的分數。如果成員不存在,該命令將添加該成員並假設其初始分數爲0,此後
再將其分數加上increment。如果Key不存在,該命令將創建該Key及其關聯的Sorted Set,幷包含參數指定的成員,其分數爲
increment參數。如果與該Key關聯的不是Sorted Set類型,相關的錯誤信息將被返回。如果不報錯則以串形式表示的新分數。

獲得排名在某個範圍的元素列表(分數從小到大):
ZRANGE key start stop [WITHSCORES]
解讀:該命令返回順序在參數start和stop指定範圍內的成員,這裏start和stop參數都是0-based,即0表示第一個成員,-1表示
最後一個成員。如果start大於該Sorted Set中的最大索引值,或start > stop,此時一個空集合將被返回。如果stop大於最大索
引值,該命令將返回從start到集合的最後一個成員。如果命令中帶有可選參數WITHSCORES選項,該命令在返回的結果中將包含
每個成員的分數值,如value1,score1,value2,score2…。

獲得排名在某個範圍的元素列表(元素分數從大到小排序):
ZREVRANGE key start stop [WITHSCORES]
解讀:該命令的功能和ZRANGE基本相同,唯一的差別在於該命令是通過反向排序獲取指定位置的成員,即從高到低的順序。如
果成員具有相同的分數,則按降序字典順序排序。

獲得指定分數範圍的元素(分數從小到大):ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]
解讀:該命令將返回分數在min和max之間的所有成員,即滿足表達式min <= score <= max的成員,其中返回的成員是按照其
分數從低到高的順序返回,如果成員具有相同的分數,則按成員的字典順序返回。可選參數LIMIT用於限制返回成員的數量範
圍。可選參數offset表示從符合條件的第offset個成員開始返回,同時返回count個成員。可選參數WITHSCORES的含義參照
ZRANGE中該選項的說明。*最後需要說明的是參數中min和max的規則可參照命令ZCOUNT

獲得指定分數範圍的元素(元素分數從大到小排序):ZREVRANGEBYSCORE key max min [WITHSCORES] [LIMIT offset
count]
解讀:該命令除了排序方式是基於從高到低的分數排序之外,其它功能和參數含義均與ZRANGEBYSCORE相同。需要注意的是
該命令中的min和max參數的順序和ZRANGEBYSCORE命令是相反的。

獲得元素的排名:ZRANK key member
解讀:Sorted Set中的成員都是按照分數從低到高的順序存儲,該命令將返回參數中指定成員的位置值,其中0表示第一個成
員,它是Sorted Set中分數最低的成員。 如果該成員存在,則返回它的位置索引值。否則返回nil。

刪除一個或多個元素:ZREM key member [member …]
解讀:該命令將移除參數中指定的成員,其中不存在的成員將被忽略。如果與該Key關聯的Value不是Sorted Set,相應的錯誤
信息將被返回。 如果操作成功則返回實際被刪除的成員數量

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章