數據類型介紹

来源:https://www.cnblogs.com/dwvfw855/archive/2019/05/05/10811693.html
-Advertisement-
Play Games

String 結構 結構:Key Value對 Value:可以是字元串、數字,也可以是二進位數組 限制:Value最大值為512MB String 常用命令 1.get key • 含義:獲取指定key的值 2.set key value • 含義:設置指定key的值 3.incr key • 含 ...


String-結構
結構:Key-Value對
Value:可以是字元串、數字,也可以是二進位數組
限制:Value最大值為512MB
String-常用命令
1.get key
• 含義:獲取指定key的值
2.set key value
• 含義:設置指定key的值
3.incr key
• 含義:將key中存儲的數字值增一
4.incrby key increment
• 含義:將key所存儲的數字值加上給定的增量
5.decr key
• 含義:將key中存儲的數字值減一
6.decrby key decrement
• 含義:將key所存儲的數字值減去給定的減量
7.setnx key value
• 含義:只有當key不存在時才設置key的值
8.set key value nx
• 含義:與⑦相同,只有當key不存在時才設置key的值
9.setex key second value
• 含義:設置指定key的值,同時設置該key的過期時間,單位為秒
10.set key second value ex
• 含義:與⑨相同,設置指定key的值,同時設置該key的過期時間,單位為秒
11.set key value xx
• 含義:只有key存在時才設置key的值
12.mget key1 [key2...]
• 含義:獲取所有(一個或多個)指定key的值
13.mset key1 value1 [key2 value2...]
• 含義:同時設置一個或多個key-value對
String-不太常用命令
1.getset key value
• 含義:將給定key的值設置為value,並返回key的舊值
2.append key value
• 含義:將value追加到舊值的末尾
3.strlen key
• 含義:返回key所存儲的字元串值的長度
o 當key不存在時,返回0
o 一個中文占2個位元組
o 時間複雜度為O(1),strlen在redis內部不需要查詢整個字元串來得到長度
4.incrbyfloat key increment
• 含義:將key所存儲的值加上給定的浮點值
5.getrange key start end
• 含義:返回key中字元串區間為[start,end]的子串,索引從0開始
6.setrange key offset value
• 含義:用value擦書覆蓋指定key所存儲的字元串值,從偏移量offset開始,索引從0開始
o key = content的時候,執行setrange key 1 haha 之後,key=chahant
適用場景
分散式ID生成
頁面訪問次數統計
常用數據緩存
Hash數據類型
Hash-常用命令
1.hget key field
• 含義:獲取存儲在哈希表中指定field的值
2.hset key field value
• 含義:將哈希表中指定field的值設置為value
3.hdel key field1 [field2...]
• 含義:刪除哈希表中一個或多個field
4.hexists key field
• 含義:判斷哈希表中,指定field是否存在
5.hlen key
• 含義:獲取哈希表中欄位的數量
6.hmget key field1 [field2...]
• 含義:獲取哈希表中所有給定field的值
7.hmset key field1 value1 [field2 value2...]
• 含義:同時將一個或多個field-value對設置到哈希表中
8.hincrby key fiel increment
• 含義:為哈希表中指定field的值加上一個整型增量
9.hgetall key
• 含義:獲取哈希表中所有欄位和值
• 時間複雜度為O(n),不建議使用
10.hkeys key
• 含義:獲取哈希表中的所有欄位
• 時間複雜度為O(n),不建議使用
11.hvals key
• 含義:獲取哈希表中的所有值
• 時間複雜度為O(n),不建議使用
12.hsetnx key field value
• 含義:只有當哈希表中field不存在時,才設置該field的值
13.hincrbyfloat key field increment
• 含義:為哈希表中指定field的值加上一個浮點數增量
理解
相當於關係型資料庫 庫名 表名 數據關係

List數據類型
List-結構
列表:有序、可以有重覆元素
索引相關知識
索引從左往右,從0開始逐個增大 0 1 2 3 4 5
索引從右往左,從-1開始逐個減小 -6 -5 -4 -3 -2 -1
List-常用命令
1.rpush key value1 [value2...]
含義:在列表後側添加一個或多個值
2.lpush key value1 [value2...]
含義:在列表左側添加一個或多個值
3.linsert key before/after value newValue
• 含義:在列表指定的value前/後插入newValue,時間複雜度為O(n)
4.lpop key
• 含義:從列表左側彈出一個值
5.rpop key
含義:從列表右側彈出一個值
6.lrem key count value
含義:根據count值,從列表中刪除值為value的項,時間複雜度為O(n)
count > 0 時,從左往右遍歷,刪除最多count個與value相等的值
count < 0 時,從右往左遍歷,刪除最多Math.abs(count)個與value相等的值
count = 0 時,刪除所有與value相等的值
7.ltrim key start end
含義:對一個列表進行修剪,只保留指定區間內的元素,不在區間內的元素都將被刪除,時間複雜度為O(n)
8.lrange key start end
含義:獲取列表指定索引範圍的所有元素,時間複雜度為O(n)
9.lindex key index
含義:獲取列表指定索引的元素,時間複雜度為O(n)
10.llen key
• 含義:獲取列表長度,時間複雜度為O(1)
11.lset key index newValue
含義:設置列表指定索引的值為newValue,時間複雜度為O(n)
註意:
必須存在這個值才能設置成功,否則會報錯
12.blpop key timeout
含義:移除並獲取列表左邊第一個元素,如果列表沒有元素會阻塞直到等待超時或可彈出元素為止
timeout單位為秒,timeout=0時不阻塞
13.brpop key timeout
含義:移除並獲取列表右邊第一個元素,如果列表沒有元素會阻塞直到等待超時或可彈出元素為止
timeout單位為秒,timeout=0時不阻塞
應用場景

Set數據類型
Set-結構
集合:無序、不能包含重覆元素
Set-集合內操作
1.sadd key memebr1 [member2...]
• 含義:向集合中添加一個或多個成員
2.srem key member1 [member2...]
含義:從集合中刪除一個或多個成員
3.scard key
含義:獲取集合中的元素個數
4.sismember key member
含義:判斷member元素是不是集合的成員
5.srandmember key count
含義:隨機從集合中取出count個成員
6.spop key
含義:隨機移除並返回集合中的一個成員
7.smembers key
含義:獲取集合中的所有成員
時間複雜度為O(n),不建議使用,類似的操作可以使用SSCAN
Set-集合間操作
1.sdiff key1 [key2...]
含義:返回給定所有集合的差集
2.sdiffstore destKey key1 [key2...]
含義:計算給定所有集合的差集,並存入destKey
3.sinter key1 [key2...]
含義:返回給定所有集合的交集
4.sinterstore destKey key1 [key2...]
含義:計算給定所有集合的交集,並存入destKey
5.sunion key1 [key2...]
含義:返回給定所有集合的並集
6.sunionstore destKey key1 [key2...]
含義:計算給定所有集合的並集,並存入destKey
ZSet數據類型
ZSet-結構
有序集合:有序、不能包含重覆元素
每個節點包含:score和value兩個屬性,根據score進行排序
索引相關知識
索引從左往右,從0開始逐個增大 0 1 2 3 4 5
索引從右往左,從-1開始逐個減小 -6 -5 -4 -3 -2 -1
ZSet-常用命令
1.zadd key score1 member1 [score2 member2...]
含義:向有序集合添加一個或多個成員,或者更新已存在成員的分數
2.zrem key member1 [member2...]
含義:從有序集合中刪除一個或多個成員
3.zscore key member
含義:獲取有序集合中成員的分數
4.zincrby key increment member
含義:對有序集合中指定成員的分數加上增量increment
5.zcard key
含義:返回有序集合中元素的總個數
6.zrange key start end [withscores]
含義:通過索引返回有序集合中指定區間的成員信息
o withscores 參數,加上代表一併將score數據返回
時間複雜度:O(log(n) + m) , n=有序集合中的元素個數,m=返回的總個數
7.zrangebyscore key min max [withscores][limit]
含義:通過score返回有序集合中指定分數區間的成員信息
withscores 參數,加上代表一併將score數據返回
limit參數,加上代表限制返回多少條數據
時間複雜度:O(log(n) + m) , n=有序集合中的元素個數,m=返回的總個數
8.zscore key min max
含義:返回有序集合中指定分數範圍內的元素個數
時間複雜度:O(log(n) + m) , n=有序集合中的元素個數,m=指定分數範圍內的元素個數
9.zremrangebyscore key min max
含義:刪除有序集合中指定分數區間的所有成員
時間複雜度:O(log(n) + m) , n=有序集合中的元素個數,m=指定分數範圍內的元素個數
10.zremrangebyrank key start end
含義:刪除有序集合中給定索引區間的所有成員
時間複雜度:O(log(n) + m) , n=有序集合中的元素個數,m=指定索引範圍內的元素個數
String VS Hash
相似的API
String Hash
get hget
set setnx hset hsetnx
del hdel
incrby hincrby
mget mset hmget hmset
保存對象的三種方式與優缺點
方式一:採用string,將整個對象進行序列化,設計Key為對象的業務ID
方式二:採用string,設計Key為對象的業務ID+屬性名,對各個屬性分散存儲
方式三:採用hash,設計Key為對象的業務ID,屬性名為field
優點 缺點
方式一 訪問Redis編程簡單 相比方式二比較節約記憶體 序列化開銷 修改屬性需要操作整個數據
方式二 Redis數據直觀可查 可以方便更新屬性 記憶體占用較大 key較為分散
方式三 Redis數據直觀可查 比起方式二比較節約記憶體 可以方便更新屬性 訪問Redis編碼稍微比較複雜 TTL不好控制


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 存儲過程名稱為A,假設A返回一個ID EXEC @id = A 1031,1 在觸發器中像上面那樣調用,調試時發現@FolderHierarchyid的值為0 後面參考網上的方法,建了一個表,表結構和存儲過程的返回結果集結構一樣 declare @idtable table(ID int); ins ...
  • 遇到一個錯誤如下 System.Data.SqlClient.SqlException HResult=0x80131904 Message=伺服器主體 "用戶名" 無法在當前安全上下文下訪問資料庫 "資料庫名"。 Source=.Net SqlClient Data Provider StackT ...
  • 1.線性回歸模型線性回歸是統計學中最常用的演算法,當你想表示兩個變數間的數學關係時,就可以用線性回歸。當你使用它時,你首先假設輸出變數(相應變數、因變數、標簽)和預測變數(自變數、解釋變數、特征)之間存在的線性關係。(自變數是指:研究者主動操縱,而引起因變數發生變化的因素或條件,因此自變數被看作是因變 ...
  • 1.關係型資料庫的特點 基於關係代數理論: 缺點:表結構不直觀,實現複雜,速度慢 優點:健壯性高、社區龐大,在一些情況下人們發現健壯性,並不是要求那麼高,因而產生了十分流行的非關係型資料庫,如Redis,Memcached等。 2.資料庫表關係 下麵以Product表和Category進行舉例,Ca ...
  • 腳本如下: EXEC sp_addlinkedserver @server='XXX', --鏈接伺服器別名 @srvproduct='', @provider='SQLOLEDB', @datasrc='.' --要訪問的的資料庫所在的伺服器的ip GO EXEC sp_addlinkedsrvl ...
  • A/B測試本質上是一種線上實驗。本篇把業務中常見的概念與A/B測試專業術語進行對應,並額外介紹其他實用且重要的概念。 ...
  • Coprocessor簡介 (1)實現目的 (2)靈感來源 靈感來源於Bigtable的協處理器,包含如下特性: (3)提供介面 (4)應用範圍 Endpoint服務端實現 在傳統關係型資料庫裡面,可以隨時的對某列進行求和sum,但是目前HBase目前所提供的介面,直接求和是比較困難的,所以先編寫好 ...
  • [20190505]關於latch 一些統計信息.txt--//我在兩篇文章,提到一些latch的統計信息.鏈接如下:http://blog.itpub.net/267265/viewspace-2642329/ =>[20190423]簡單測試latch nowilling等待模式.txthttp ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...