Redis數據類型及常用命名總結

来源:https://www.cnblogs.com/format-ch/archive/2018/02/28/8484251.html
-Advertisement-
Play Games

Redis數據類型: Redis支持五種數據類型:string(字元串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。 1、String(字元串) string是redis最基本的類型,你可以理解成與Memcached一模一樣的類型,一個key對應 ...


Redis數據類型: Redis支持五種數據類型:string(字元串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。  1、String(字元串) string是redis最基本的類型,你可以理解成與Memcached一模一樣的類型,一個key對應一個value。 string類型是二進位安全的。意思是redis的string可以包含任何數據。比如jpg圖片或者序列化的對象 。 string類型是Redis最基本的數據類型,一個鍵最大能存儲512MB。 實例: 常用命令:
  • 設置值:SET KEY_NAME VALUE
Redis SET 命令用於設置給定 key 的值。如果 key 已經存儲其他值, SET 就覆寫舊值,且無視類型。
  • 獲取值:GET KEY_NAME
如果 key 不存在,返回 nil 。如果key 儲存的值不是字元串類型,返回一個錯誤。
  • 刪除值:DEL KEY_NAME
刪除已存在的鍵。不存在的 key 會被忽略。
  • 將 key 中儲存的數字值增一:INCR KEY_NAME
如果 key 不存在,那麼 key 的值會先被初始化為 0 ,然後再執行 INCR 操作。 如果值包含錯誤的類型,或字元串類型的值不能表示為數字,那麼返回一個錯誤。 本操作的值限制在 64 位(bit)有符號數字表示之內。
  • 將 key 中儲存的數字值減一:DECR KEY_NAME
如果 key 不存在,那麼 key 的值會先被初始化為 0 ,然後再執行 DECR 操作。 如果值包含錯誤的類型,或字元串類型的值不能表示為數字,那麼返回一個錯誤。 本操作的值限制在 64 位(bit)有符號數字表示之內。
      • 將 key 中儲存的數字加上指定的增量值:INCRBY KEY_NAME INCR_AMOUNT
如果 key 不存在,那麼 key 的值會先被初始化為 0 ,然後再執行 INCRBY 命令。 如果值包含錯誤的類型,或字元串類型的值不能表示為數字,那麼返回一個錯誤。 本操作的值限制在 64 位(bit)有符號數字表示之內。
  • 將 key 所儲存的值減去指定的減量值:DECRBY KEY_NAME DECREMENT_AMOUNT
如果 key 不存在,那麼 key 的值會先被初始化為 0 ,然後再執行 DECRBY 操作。 如果值包含錯誤的類型,或字元串類型的值不能表示為數字,那麼返回一個錯誤。 本操作的值限制在 64 位(bit)有符號數字表示之內。
  • 為指定的 key 追加值:APPEND KEY_NAME NEW_VALUE
如果 key 已經存在並且是一個字元串, APPEND 命令將 value 追加到 key 原來的值的 末尾。 如果 key 不存在, APPEND 就簡單地將給定 key 設為 value ,就像執行 SET key value 一樣。   2、Hash(哈希) Redis hash 是一個鍵名對集合。 Redis hash是一個string類型的field和value的映射表,hash特別適合用於存儲對象。 實例:     以上實例中 hash 數據類型存儲了包含用戶腳本信息的用戶對象。 實例中我們使用了 Redis HMSET, HGETALL 命令,user:1為鍵值。 每個 hash 可以存儲 232 -1 鍵值對(40多億)。 常用命令:
  • 設置值:HSET KEY_NAME FIELD VALUE
Redis Hset 命令用於為哈希表中的欄位賦值 。 如果哈希表不存在,一個新的哈希表被創建併進行 HSET 操作。 如果欄位已經存在於哈希表中,舊值將被覆蓋。
  • 獲取值:HGET KEY_NAME FIELD_NAME
Redis Hget 命令用於返回哈希表中指定欄位的值。
  • 獲取所有值:HGETALL KEY_NAME
Redis Hgetall 命令用於返回哈希表中,所有的欄位和值。 在返回值里,緊跟每個欄位名(field name)之後是欄位的值(value),所以返回值的長度 是哈希表大小的兩倍。
  • 同時將多個 field-value (域-值)對設置到哈希表 key 中:HMSET KEY_NAME FIELD1 VALUE1 ...FIELDN VALUEN
Redis Hmset 命令用於同時將多個 field-value (欄位-值)對設置到哈希表中。 此命令會覆蓋哈希表中已存在的欄位。 如果哈希表不存在,會創建一個空哈希表,並執行 HMSET 操作。
  • 獲取所有給定欄位的值:HMGET KEY_NAME FIELD1...FIELDN
Redis Hmget 命令用於返回哈希表中,一個或多個給定欄位的值。 如果指定的欄位不存在於哈希表,那麼返回一個 nil 值。
  • 刪除一個或多個哈希表欄位:HDEL KEY_NAME FIELD1.. FIELDN
Redis Hdel 命令用於刪除哈希表 key 中的一個或多個指定欄位,不存在的欄位將被忽略。
  • 為哈希表 key 中的指定欄位的整數值加上增量 increment:HINCRBY KEY_NAME FIELD_NAME INCR_BY_NUMBER
Redis Hincrby 命令用於為哈希表中的欄位值加上指定增量值。 增量也可以為負數,相當於對指定欄位進行減法操作。 如果哈希表的 key 不存在,一個新的哈希表被創建並執行 HINCRBY 命令。 如果指定的欄位不存在,那麼在執行命令前,欄位的值被初始化為 0 。 對一個儲存字元串值的欄位執行 HINCRBY 命令將造成一個錯誤。 本操作的值被限制在 64 位(bit)有符號數字表示之內。
  • 查看哈希表 key 中,指定的欄位是否存在;HEXISTS KEY_NAME FIELD_NAME
Redis Hexists 命令用於查看哈希表的指定欄位是否存在。 如果哈希表含有給定欄位,返回 1 。 如果哈希表不含有給定欄位,或 key 不存在,返回 0 。
  • 獲取哈希表中欄位的數量:HLEN KEY_NAME
Redis Hlen 命令用於獲取哈希表中欄位的數量。 哈希表中欄位的數量。 當 key 不存在時,返回 0 。
  • 獲取所有哈希表中的欄位:HKEYS KEY_NAME
Redis Hkeys 命令用於獲取哈希表中的所有欄位名。 包含哈希表中所有欄位的列表。 當 key 不存在時,返回一個空列表。
  • 獲取哈希表中所有值:HVALS KEY_NAME
Redis Hvals 命令返回哈希表所有欄位的值。 一個包含哈希表中所有值的表。 當 key 不存在時,返回一個空表。   3、List(列表) Redis 列表是簡單的字元串列表,按照插入順序排序。你可以添加一個元素到列表的頭部(左邊)或者尾部(右邊)。     列表最多可存儲 232 - 1 元素 (4294967295, 每個列表可存儲40多億)。 常用命令:
  • 將一個或多個值插入到列表頭部: LPUSH KEY_NAME VALUE1.. VALUEN
Redis Lpush 命令將一個或多個值插入到列表頭部。 如果 key 不存在,一個空列表會被創建並執行 LPUSH 操作。 當 key 存在但不是列表類型時,返回一個錯誤。 eg:127.0.0.1:6379> lpush mylist a b c
  • 在列表中添加一個或多個值:RPUSH KEY_NAME VALUE1..VALUEN
Redis Rpush 命令用於將一個或多個值插入到列表的尾部(最右邊)。 如果列表不存在,一個空列表會被創建並執行 RPUSH 操作。 當列表存在但不是列表類型時,返回一個錯誤。 eg:127.0.0.1:6379> rpush mylist2 a b c
  • 獲取列表指定範圍內的元素: LRANGE KEY_NAME START END
Redis Lrange 返回列表中指定區間內的元素,區間以偏移量 START 和 END 指定。 其中 0 表示列表的第一個元素, 1 表示列表的第二個元素,以此類推。 你也可以使用負數下標,以 -1 表示列表的最後一個元素, -2 表示列表的倒數第二個元素,以此類推。 eg:127.0.0.1:6379> lrange mylist 0 5 127.0.0.1:6379> lrange mylist2 0 -1
  • 移出並獲取列表的第一個元素:LPOP KEY_NAME
Redis Lpop 命令用於移除並返回列表的第一個元素。 eg:127.0.0.1:6379> lpop mylist
  • 移除並獲取列表最後一個元素:RPOP KEY_NAME
Redis Rpop 命令用於移除並返回列表的最後一個元素。 eg:127.0.0.1:6379> rpop mylist2
  • 獲取列表長度:LLEN KEY_NAME
Redis Llen 命令用於返回列表的長度。 如果列表 key 不存在,則 key 被解釋為一個空列表,返回 0 。 如果 key 不是列表類型,返回一個錯誤。 eg:127.0.0.1:6379> llen mylist
  • 將一個或多個值插入到已存在的列表頭部: LPUSHX KEY_NAME VALUE1.. VALUEN
Redis Lpushx 將一個或多個值插入到已存在的列表頭部,列表不存在時操作無效。 eg:127.0.0.1:6379> lpushx mylist x
  • 為已存在的列表添加值:RPUSHX KEY_NAME VALUE1..VALUEN
Redis Rpushx 命令用於將一個或多個值插入到已存在的列表尾部(最右邊)。如果列表不存在,操作無效。 eg:127.0.0.1:6379> rpushx mylist2 4
  • 移除列表元素: LREM KEY_NAME COUNT VALUE
Redis Lrem 根據參數 COUNT 的值,移除列表中與參數 VALUE 相等的元素。 COUNT 的值可以是以下幾種: count > 0 : 從表頭開始向表尾搜索,移除與 VALUE 相等的元素,數量為 COUNT count < 0 : 從表尾開始向表頭搜索,移除與 VALUE 相等的元素,數量為 COUNT 的絕對值。 count = 0 : 移除表中所有與 VALUE 相等的值。 eg:127.0.0.1:6379> lrem mylist3 2 2     從頭開始刪除兩個鍵值為2的數據 eg:127.0.0.1:6379> lrem mylist3 -2 2    從末尾開始刪除兩個鍵值為2的數據 eg:127.0.0.1:6379> lrem mylist3 0 1     刪除所有鍵值為1的數據
  • 通過索引設置列表元素的值:LSET KEY_NAME INDEX VALUE
Redis Lset 通過索引來設置元素的值。 當索引參數超出範圍,或對一個空列表進行 LSET 時,返回一個錯誤。 eg:127.0.0.1:6379> lset mylist 3 cc
  • 在列表的元素前或者後插入元素: LINSERT KEY_NAME BEFORE EXISTING_VALUE NEW_VALUE
Redis Linsert 命令用於在列表的元素前或者後插入元素。 當指定元素不存在於列表中時,不執行任何操作。 當列表不存在時,被視為空列表,不執行任何操作。 如果 key 不是列表類型,返回一個錯誤。 eg:127.0.0.1:6379> linsert mylist3 before b 888 127.0.0.1:6379> linsert mylist3 after b 999
  • 移除列表的最後一個元素,並將該元素添加到另一個列表並返回:RPOPLPUSH SOURCE_KEY_NAME DESTINATION_KEY_NAME
Redis Rpoplpush 命令用於移除列表的最後一個元素,並將該元素添加到另一個列表並返回。 eg:127.0.0.1:6379> rpoplpush mylist5 mylist6   4、Set(集合) Redis的Set是string類型的無序集合。 集合是通過哈希表實現的,所以添加,刪除,查找的複雜度都是O(1)。 sadd 命令 添加一個string元素到,key對應的set集合中,成功返回1,如果元素已經在集合中返回0,key對應的set不存在返回錯誤。   註意:以上實例中 lisi添加了兩次,但根據集合內元素的唯一性,第二次插入的元素將被忽略。 集合中最大的成員數為 232 - 1(4294967295, 每個集合可存儲40多億個成員)。   5、zset(sorted set:有序集合) Redis zset 和 set 一樣也是string類型元素的集合,且不允許重覆的成員。 不同的是每個元素都會關聯一個double類型的分數。redis正是通過分數來為集合中的成員進行從小到大的排序。 zset的成員是唯一的,但分數(score)卻可以重覆。 zadd 命令 添加元素到集合,元素在集合中存在則更新對應score zadd key score member    
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 錯誤1. ERROR: child process failed, exited with error number 100 可能原因: 1.沒有正確關閉服務 2.服務已經啟動 3.conf文件的參數配置錯誤。 錯誤2. "errmsg" : "not authorized on admin to ...
  • 一、概述 MongoDB複製群集支持節點故障自動切換,最小配置應包含3個節點,正常情況下應該至少包含兩個數據節點,第三個節點可以是數據節點也可以是仲裁節點。仲裁節點的作用是當出現偶數節點導致無法仲裁的時候參與進來進行投票使之變成奇數個投票點,仲裁節點可以看成是不包含任何數據集的副本節點。仲裁節點並不 ...
  • 來源地址:https://baike.baidu.com/item/NoSQL/8828247?fr=aladdin NoSQL,泛指非關係型的資料庫。隨著互聯網web2.0網站的興起,傳統的關係資料庫在應付web2.0網站,特別是超大規模和高併發的SNS類型的web2.0純動態網站已經顯得力不從心 ...
  • Window XP系統上安裝Oracle Database 10G,在Mac系統上使用Navicat遠程連接oracle資料庫(不需要安裝oracle客戶端,Navicat 11 已經集成了該客戶端) ...
  • 最近同事在交接工作時,發現有幾個schedule job沒有執行成功,我這邊給看了下,其中一個是由於資料庫遷移,調用dblink的host主機IP在tnsnames中沒有變更導致,還有一個是無法視圖的報錯,即報錯信息如下: 一、錯誤日誌 通過查看schedual job報錯日誌,具體報錯信息如下 O ...
  • 現實工作中會有多個數據源同步到一個資料庫完成數據分析的場景,這些數據可以不是實時同步的,我們一般通過定時任務抽取數據到統計分析庫給應用使用。 一般的同步方式可以通過時間戳做全量和增量數據同步(存在原數據變化可能,數據不一致的情況),也可以通過dblink做數據實時查詢(較損耗線上資料庫性能),一般最 ...
  • 官方下載網站:http://www.sqltolinq.com/ 本文介紹版本為Linqer 4.5.7 第一步:下載下來,解壓,雙擊安裝.exe文件,運行界面如下。 第二步:建立與資料庫的連接 點擊左上角的New Connection,彈出對話框,填寫Name,點擊Connection Strin ...
  • 寫在前面 目前,在系統設計中引入了越來越多的NoSQL產品,例如Redis/ MongoDB/ HBase等,其中性能指標往往會成為權衡不同NoSQL產品的關鍵因素。對這些產品在性能表現和產品選擇上的爭論,Ivan碰到不止一次。雖然通過對系統架構原理方面的分析可以大致判斷出其在不同讀寫場景下的表現, ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...