Redis使用筆記

redis安裝參考:https://blog.csdn.net/weixin_41381863/article/details/88231397

數據結構及常用生產場景

1、String(字符串)--一個鍵最大能存儲512MB

字符串是最常用的數據類型,能夠存儲任何類型的字符串(即任意key-value),當然也包括二進制、json化的對象、甚至是Base64編碼之後的圖片。在Redis中一個字符串最大的容量爲512MB,可以說是無所不能了。

2、Hash(哈希)--每個 hash 可以存儲 2^32 - 1 鍵值對(40多億)

hash 是一個鍵值對集合。常用作存儲結構化數據,比如論壇系統中可以用來存儲用戶的ID、暱稱、頭像、積分等信息。如果需要修改其中的信息,只需要通過key取出value進行反序列化修改某一項的值,再序列化存儲到Redis中。

對於Hash結構存儲,由於Hash結構會在單個Hash元素在不足一定數量時進行壓縮存儲,所以可以大量節約內存。這一點在String結構裏是不存在的。

3、List(列表)--列表最多可存儲 2^32 - 1)元素 (4294967295, 每個列表可存儲40多億)

列表是簡單的字符串列表,按照插入順序排序(即順序是固定的)。你可以添加一個元素到列表的頭部(左邊)或者尾部(右邊)

Redis內部的很多實現,包括髮送緩衝隊列等也都是用的這個數據結構。另外,可以利用lrange命令,做基於Redis的分頁功能,性能極佳,用戶體驗好

4、Set(集合)--集合中最大的成員數爲 2^32 - 1

Set是string類型的無序集合,集合是通過哈希表實現的,所以添加,刪除,查找的複雜度都是O(1)。

Set的特殊之處在於:自動排重。當你需要存儲一個列表數據時,又不希望出現重複的數據,那麼Redis的Set是最好的選擇。

 5、Sorted Set(有序集合)

與Set一樣都是自動排重的,區別在於:每個元素都會關聯一個double類型的分數(分數可以重複)。redis正是通過分數來爲集合中的成員進行從小到大的排序。通常用作排行榜

Redis的事務

redis的事務主要由三個命令組成:multi、exec和discard。

mutli--類似於begin transaction的意思,即開始事務。那麼在此命令之後的所有操作都會被綁定在一起。

exec--類似於commit的意思,即提交。

discard--類似於rollback的意思,即回滾。

在Spring redis中的操作示例:

//StringRedisTemplate
	@Test
	public void method() {
		//開啓事務支持  默認爲false
		redisTemplate.setEnableTransactionSupport(true);
		redisTemplate.multi();//開始事務
		redisTemplate.opsForValue().set("name1", "zhangsan");
		redisTemplate.opsForValue().set("name2", "lisi");
//		redisTemplate.discard();//回滾
		redisTemplate.exec();//提交
		System.out.println("done");
	}

Redis持久化與恢復

RDB和AOF

1、RDB

RDB方式是Redis默認就開啓的持久化方式。在配置文件中有如下一段信息:

save 900 1   ###每900S至少有一條發生數據變化即持久化
save 300 10  ###每300s至少有10條數據發生變化即持久化
save 60 10000  ###每60s至少有10000條數據發生變化即持久化

從這裏可以看出,假設 在上次持久化之後的10s內變動了1000條數據後宕機,這1000條數據就會丟失。

RDB持久化的時候,會阻塞主線程的工作,對性能有一定影響。

2、AOF方式(修改配置後,需要重啓Redis)

AOF是需要手動開啓的。AOF開啓後,持久化文件以.aof後綴命名,和配置文件.conf在同一路徑下。在配置文件中有如下一段信息:

如上所示:最安全的方式就是每修改一次就持久化一次。

3、恢復數據

a、RDB方式是默認的,所以重啓之後會恢複相關數據。

b、AOF---如果數據是手動誤刪,比如執行flushall,需要進入.aof文件,刪除其中的flushall命令,重啓redis即可恢復數據。

 

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