Redis常用指令之string、list、set、zset、hash

来源:https://www.cnblogs.com/bfy0221/archive/2022/08/16/16591591.html
-Advertisement-
Play Games

Redis之五大類型常用指令 redis的一些小知識 redis伺服器埠預設是6379 在編譯完成後的bin目錄下啟動服務端:redis-server 客戶端連接操作:redis-cli -h localhost -p 6379,如果是一臺機器可以省略後面的:redis-cli (備註:可以複製r ...


Redis之五大類型常用指令

redis的一些小知識

  • redis伺服器埠預設是6379

  • 在編譯完成後的bin目錄下啟動服務端:redis-server

  • 客戶端連接操作:redis-cli -h localhost -p 6379,如果是一臺機器可以省略後面的:redis-cli

    (備註:可以複製redis解壓目錄下的redis-conf文件到另一個文件夾,然後可以修改埠號 port 7000 這時你再次啟動服務還是6379的埠號,讀取的還是源碼目錄里的redis-conf文件,要想在啟動的時候讀取我們修改後的配置文件,需要修改啟動命令的格式:redis-server 複製過來修改後的配置文件路徑,比如:redis-server ./redis.conf 客戶端啟動的時候預設是與6379的埠號的redis服務連接,所有當我們指定埠號啟動的時候,客戶端也需要改變,格式為:redis-cli -h 伺服器的ip地址 -p 埠號 ,比如:redis-cli -h localhost -p 7000)

  • redis 資料庫預設有16個庫,名字從0開始到15編號。一開始預設進入的是0號庫。我們可以在客戶端通過select dbid(庫的編號)來切換庫,比如:select 1 切換到1號庫。同時需要註意的是庫與庫之間的數據是不共用的,是相對隔離的。

Redis特點

  • Redis是一個高性能key/value記憶體型資料庫,在redis中,所有的數據形式都是以鍵值對的方式來存儲的
  • Redis支持豐富的數據類型 string、list、set、sorted set 指的鍵值對中值的類型
  • Redis支持持久化,將記憶體的數據存儲到硬碟裡面
  • Redis單線程,單進程。由於是單線程和單進程的,所以它的線程是安全的。

操作key相關指令

  • del 指令

    語法 : DEL key [key ...]

    • 作用 : 刪除給定的一個或多個key 。不存在的key 會被忽略。多個key之間使用空格隔開

    • 可用版本: >= 1.0.0

    • 返回值: 被刪除key 的數量。

      image-20220812202950487

  • exists指令

    語法: EXISTS key

    • 作用: 檢查給定key 是否存在。多個key之間使用空格隔開,只要有一個key存在,返回值就是1 新版本中會提示幾個鍵存在

    • 可用版本: >= 1.0.0

    • 返回值: 若key 存在,返回1 ,否則返回0。

      image-20220812203100886

  • expire指令

    語法: EXPIRE key seconds

    • 作用: 為給定key 設置生存時間,以秒為單位,當key 過期時(生存時間為0 ),它會被自動刪除。

    • 可用版本: >= 1.0.0

    • 時間複雜度: O(1)

    • 返回值:設置成功返回1 。

      image-20220812203545532

  • keys指令

    語法 : KEYS pattern

    • 作用 : 查找所有符合給定模式pattern 的key 。

    • 語法:
      KEYS * 匹配資料庫中所有key 。
      KEYS h?llo 匹配hello ,hallo 和hxllo 等。
      KEYS h*llo 匹配hllo 和heeeeello 等。
      KEYS h[ae]llo 匹配hello 和hallo ,但不匹配hillo 。特殊符號用 "" 隔開

    • 可用版本: >= 1.0.0

    • 返回值: 符合給定模式的key 列表。

      image-20220812204021409

  • move指令

    語法 : MOVE key db (move name 1----將name鍵移動到1號庫)

    • 作用 : 將當前資料庫的key 移動到給定的資料庫db 當中。

    • 可用版本: >= 1.0.0

    • 返回值: 移動成功返回1 ,失敗則返回0 。

      image-20220812204203873

  • pexpire指令

    語法 : PEXPIRE key milliseconds

    • 作用 : 這個命令和EXPIRE 命令的作用類似,但是它以毫秒為單位設置key 的生存時間,而不像EXPIRE 命令那樣,以秒為單位。

    • 可用版本: >= 2.6.0

    • 時間複雜度: O(1)

    • 返回值:設置成功,返回1 key 不存在或設置失敗,返回0

      image-20220812204416962

  • pexpireat指令

    語法 : PEXPIREAT key milliseconds-timestamp

    • 作用 : 這個命令和EXPIREAT 命令類似,但它以毫秒為單位設置key 的過期unix 時間戳,而不是像EXPIREAT那樣,以秒為單位。

    • 可用版本: >= 2.6.0

    • 返回值:如果生存時間設置成功,返回1 。當key 不存在或沒辦法設置生存時間時,返回0 。(查看EXPIRE 命令獲取更多信息)

      image-20220812205116949

  • ttl指令

    語法 : TTL key

    • 作用 : 以秒為單位,返回給定key 的剩餘生存時間(TTL, time to live)。
    • 可用版本: >= 1.0.0
    • 返回值:
      當key 不存在時,返回-2 。
      當key 存在但沒有設置剩餘生存時間時,返回-1 。
      否則,以秒為單位,返回key 的剩餘生存時間。
  • pttl指令

    語法 : PTTL key

    • 作用 : 這個命令類似於TTL 命令,但它以毫秒為單位返回key 的剩餘生存時間,而不是像TTL 命令那樣,以秒為單位。

    • 可用版本: >= 2.6.0

    • 返回值: 當key 不存在時,返回-2 。當key 存在但沒有設置剩餘生存時間時,返回-1 。

    • 否則,以毫秒為單位,返回key 的剩餘生存時間。

      image-20220812205402121

  • randomkey指令

    語法 : RANDOMKEY

    • 作用 : 從當前資料庫中隨機返回(不刪除) 一個key 。

    • 可用版本: >= 1.0.0

    • 返回值:當資料庫不為空時,返回一個key 。當資料庫為空時,返回nil 。

      image-20220812205608595

  • rename指令

    語法 : RENAME key newkey

    • 作用 : 將key 改名為newkey 。key 不存在時,返回一個錯誤。當newkey 已經存在時,RENAME 命令將覆蓋舊值。

    • 可用版本: >= 1.0.0

    • 返回值: 改名成功時提示OK ,失敗時候返回一個錯誤。

      image-20220812205936271

  • type指令

    語法 : TYPE key

    • 作用 : 返回key 所儲存的值的類型。

    • 可用版本: >= 1.0.0

    • 返回值:
      none (key 不存在)
      string (字元串)
      list (列表)
      set (集合)
      zset (有序集)
      hash (哈希表)

      image-20220812210850156

String類型操作命令

image-20200623132104399

命令 說明
set 設置一個key/value
get 根據key獲得對應的value
mset 一次設置多個key value
mget 一次獲得多個key的value
getset 獲得原始key的值,同時設置新值
strlen 獲得對應key存儲value的長度
append 為對應key的value追加內容
getrange 索引0開始 截取value的內容 到末尾-1
setex 設置一個key存活的有效期(秒)
psetex 設置一個key存活的有效期(毫秒)
setnx 存在不做任何操作,不存在添加
msetnx原子操作(只要有一個存在不做任何操作) 可以同時設置多個key,只有有一個存在都不保存
decr 進行數值類型的-1操作
decrby 根據提供的數據進行減法操作
Incr 進行數值類型的+1操作
incrby 根據提供的數據進行加法操作
Incrbyfloat 根據提供的數據加入浮點數(不是四捨五入)
  • set:設置一個key/value

  • get:根據key獲得對應的value

  • mset:一次設置多個key/value

    image-20220812211520944

  • mget:一次獲得多個key的value

    image-20220812211743926

  • getset:獲得原始的key值,同時設置新值

    image-20220812211945225

  • strlen:獲得對應key存儲value的長度

    image-20220812212146850

  • append:為對應的key的value追加內容

    image-20220812212312067

  • getrange:截取value的內容,字元串的索引從0開始。比如12345從前往後數索引為01234,從後往前數索引為-1-2-3-4-5。所以截取到末尾可以用0 -1 表示。

    image-20220812212954215

  • setnx:key/value如果存在,不做任何操作,不存在添加

    image-20220812213214929

  • msetnx:原子操作(只要有一個存在不做任何操作)可以同時設置多個key,只有有一個存在都不保存

    image-20220812214413047

  • setex:設置一個key存活的有效期(秒),跟expire指令意思相同,但是這個指令還需要輸入key對應的value

    image-20220812213858764

  • psetex:設置一個key存活的有效期(毫秒),跟pexpire指令意思相同,但是這個指令還需要輸入key對應的value

  • decr:進行數值類型的-1操作

  • decrby:根據提供的數據進行減法操作

  • incr:進行數值類型的+1操作

  • incrby:根據提供的數據進行加法操作

  • incrbyfloat:根據提供的數據加入浮點數,不是四捨五入

    image-20220812214930025

List類型

ist 列表 相當於java中list 集合 特點 元素有序 且 可以重覆,key還是一個字元串,值是一個list

1.記憶體存儲模型

image-20200623161114380

2.常用操作指令

命令 說明
lpush 將某個值加入到一個key列表頭部 lpush list xiaohu xiaohei xiaoming 當列表不存在的時候會進行創建
lpushx 同lpush,但是必須要保證這個key存在 必須在列表進行存在的情況下從左插入
rpush 將某個值加入到一個key列表末尾
rpushx 同rpush,但是必須要保證這個key存在
lpop 返回和移除列表左邊的第一個元素
rpop 返回和移除列表右邊的第一個元素
lrange 獲取某一個下標區間內的元素 lrange list 0 -1
llen 獲取列表元素個數
lset 設置某一個指定索引的值(索引必須存在)
lindex 獲取某一個指定索引位置的元素
lrem 刪除重覆元素
ltrim 保留列表中特定區間內的元素
linsert 在某一個元素之前,之後插入新元素
  • lpush:(小寫的L)將某個值加入到一個key列表頭部 lpush list xiaohu xiaohei xiaoming 當列表不存在的時候會進行創建

    image-20220812220709188

  • lpushx:同lpush,但是必須要保證這個key存在 必須在列表進行存在的情況下從左插入

    image-20220812220906339

  • rpush:將某個值加入到一個key列表末尾

  • rpushx:同rpush,但是必須要保證這個key存在

    image-20220812221111014

  • lpop:返回和移除左列表左邊的第一個元素,加上數字可以移除左邊前幾個元素

  • rpop: 返回和移除列表右邊的第一個元素,加上數字可以移除右邊後幾個元素

  • lrange:獲取某一個下標區間內的元素 lrange list 0 -1,和string類型的getrange命令意思一樣

    image-20220812221539781

  • llen:獲取列表元素個數

    image-20220812222146110

  • lset:設置某一個指定索引的值(索引必須存在)

  • lindex:獲取某一個指定索引位置的元素

    image-20220812223457990

  • lrem:刪除重覆元素 。

    image-20220812223629164

    image-20220812223803297

  • ltrim:保留列表中特定區間內的元素

    image-20220812224457137

  • linsert:在某一個元素之前,之後插入新元素

    image-20220812224520177

    image-20220812224633594

Set類型

特點: Set類型 Set集合 元素無序 不可以重覆

常用命令(如果set集合沒有元素,key也就不存在了)

命令 說明
sadd 為集合添加元素
smembers 顯示集合中所有元素 無序
scard 返回集合中元素的個數
spop 隨機返回一個元素 並將元素在集合中刪除
smove 從一個集合中向另一個集合移動元素 必須是同一種類型
srem 從集合中刪除一個元素
sismember 判斷一個集合中是否含有這個元素
srandmember 隨機返回元素 後面可以加數字 表示每次返回的個數
sdiff 去掉第一個集合中其它集合含有的相同元素
sinter 求交集
sunion 求和集
  • sadd:為集合添加元素

  • smembers:顯示集合中所有元素,無序

  • scard:返回集合中的個數

    image-20220816095743001

  • spop:返回集合中的count個元素,併在集合中刪除

    image-20220816100118959

  • smove:從一個集合向另一個集合移動元素,必須是同一種集合類型,移動元素要帶引號不然集合中的值雖然移動了,但是原來的值的位置還在

    image-20220816100838257

  • srem:從集合中刪除一個或多個元素

  • sismember:判斷一個集合中是否含有這個元素

    image-20220816101235070

  • srandmember:隨機返回數據,後面可以加數字表示返回的個數

  • sdiff:去掉一個集合中其他集合含有的相同元素(求差集)

  • sinter:求交集

  • sunion:求合集

    image-20220816103525171

ZSet集合

特點: 可排序的set集合 排序 不可重覆

ZSET 官方 可排序SET sortSet

常用命令

命令 說明
zadd 添加一個有序集合元素 zadd zset 2 xiaohu 3 xiaohu2
zcard 返回集合的元素個數
zrange 升序 zrevrange 降序 返回一個範圍內的元素 如果想看看分數 withscores
zrangebyscore(6.2.0版本後已棄用) 按照分數查找一個範圍內的元素 zrangebyscore zset 0 20 withscores limit 0 2
zrank 返回排名
zrevrank 倒序排名
zscore 顯示某一個元素的分數
zrem 移除某一個元素
zincrby 給某個特定元素加分
  • zadd:添加一個有序集合元素

  • zcard: 返回集合的元素個數

  • zrange 升序 zrevrange 降序:返回一個範圍內的元素 如果想看看分數 withscores

    範圍是集合的索引,左閉右閉

    image-20220816104622878

  • zrangebyscore:按照分數查找一個範圍內的元素

    image-20220816111017276

    image-20220816111045329

    按照分數查詢,同時設置按索引範圍查詢

    image-20220816112247929

    image-20220816112301607

  • zrank:返回排名

  • zrevrank:倒序排名

  • zscore:顯示某一個元素的分數

  • zrem:移除某一個元素

  • zincrby:給某個特定元素加分

    image-20220816111743475

hash類型

特點: value 是一個map結構 存在key value key 無序的

redis key(String) value(map)

Map<String,Map<String,value>> map

舉例:map name zhangsan

image-20220511234124908

常用命令

命令 說明
hset 設置一個、多個key/value對
hget 獲得一個key對應的value
hgetall 獲得所有的key/value對
hdel 刪除某一個key/value對
hexists 判斷一個key是否存在
hkeys 獲得所有的key
hvals 獲得所有的value
hmset(已棄用) 設置多個key/value
hmget 獲得多個key的value
hsetnx 設置一個不存在的key的值
hincrby 為value進行加法運算(只能針對數值做運行)
hincrbyfloat 為value加入浮點值
  • hset:設置一個key/value對,可設置多個,設置中文顯示不出來,可通過可視化工具查看

    image-20220816143347833

    image-20220816144329333

    image-20220816144342517

  • hgethmget:獲得一個key的value、獲得多個key的value

    image-20220816143552148

  • hkeyshvals:獲得所有的key、獲得所有的value

    image-20220816143716410**


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

-Advertisement-
Play Games
更多相關文章
  • MindNode 5 for Mac是一款應用於mac平臺的思維導圖軟體產品,為用戶在靈感啟發、思緒整理、記憶協助、項目規劃、授課講演等諸多場景下提升學習和工作效率。通過導圖社區和雲文件無縫鏈接用戶設備,方便用戶隨時隨地收集靈感和展示文檔。 詳情:MindNode 5 for Mac(思維導圖) m ...
  • podman的基本設置和使用 運行httpd示例容器 [root@localhost ~]# podman run -dt -p 8080:8080/tcp -e HTTPD_VAR_RUN=/run/httpd -e HTTPD_MAIN_CONF_D_PATH=/etc/httpd/conf.d ...
  • Amoeba+Mysql實現資料庫讀寫分離 一、Amoeba 是什麼 Amoeba(變形蟲)項目,專註 分散式資料庫 proxy 開發。座落與Client、DB Server(s)之間。對客戶端透明。具有負載均衡、高可用性、sql過濾、讀寫分離、可路由相關的query到目標資料庫、可併發請求多台數據 ...
  • 系統負載高 系統負載高導致了申請系統資源失敗,最後資料庫實例crash,常見原因及診斷方法詳見系統資源瓶頸診斷。 數據頁損壞 如果是硬體故障或者磁碟空間滿了,向數據文件寫入時,很容易導致數據文件的寫corrupt,為了保證數據的一致性,資料庫實例會crash。 Bug 資料庫實例發生crash的一個 ...
  • MySQL刪除數據的方式 以MySQL 5.7為例,資料庫刪除數據的方式一共有以下三種: delete truncate drop 以上三種方式都可以刪除數據,但是使用場景是不同的。 對於整個表進行刪除的執行速度來說: drop > truncate >> delete MySQL刪除數據的方式-d ...
  • FileMaker Pro19 Advanced 是一款功能強大、易於使用的資料庫軟體。它能幫助你和你的團隊更快地完成各種類型的工作。在商業、政府和教育領域,有數百萬的用戶使用 FileMaker Pro 輕鬆地管理 iPad、iPhone、Windows、Mac 和 Web 上的全部信息。 Mac ...
  • 數據可視化工具數不勝數,只看顏值的話,這4款才是我的心頭好: 1. 山海鯨可視化 官網:https://www.shanhaibi.com/ 山海鯨可視化是一款國產自研的數據可視化大屏編輯軟體,零基礎也能快速上手。幫助大家越過了數字孿生系統開發的高技術門檻,讓沒有技術基礎的用戶只需通過簡單的點擊拖拽 ...
  • (以下情況僅針對StoneDB 1.0版本不支持的部分DML和DDL操作,StoneDB 2.0及以上版本將無需此類操作) 主從複製中,主庫的任何更新都會同步到從庫,如果從庫不想重做主庫的某個更新動作,可以使用以下兩種方法進行規避。當然,最終帶來的影響是主從環境數據不一致的問題。 以下的測試環境中, ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...