Redis五大數據類型

来源:https://www.cnblogs.com/itoyr/archive/2018/12/05/10069329.html
-Advertisement-
Play Games

Redis五大數據類型 補充:常用命令 Ping ping下redis Dbsize 查看當前資料庫的key的數量 Select 1 切換到下標為1的資料庫中 Flushdb 清空當前庫key Flushall 清空全部庫key Redis鍵的操作(常用): 查看當前資料庫的所有key: Keys ...


Redis五大數據類型

補充:常用命令

Ping       ping下redis

Dbsize   查看當前資料庫的key的數量

Select 1   切換到下標為1的資料庫中

Flushdb     清空當前庫key

Flushall   清空全部庫key

 

Redis鍵的操作(常用):

查看當前資料庫的所有key:

Keys *

 

判斷當前key是否存在:

exists name

 

將當前key移動到2號庫中:

Move name 2

 

設置key在6秒後過期:

expire name 6

 

查看當前key還有多久過期

ttl name

 

查看當前key是什麼結構的類型

type name

 

 

String 類型(常用)

String是redis最基本的類型,可以理解成一個key對應一個value。

String類型是二進位安全帶額,意思是redis的string可以包含任何數據,比如jpg圖片或者序列化對象。

一個redis中字元串value最多可以是512M

 

操作:

set name oyr:    給鍵name設置值為oyr

 

get name:       獲取鍵name的值

 

del name:       刪除建為name值

 

append name 123:  name對應的值後面追加123

 

strlen name:    得到當前name對應的值的長度

 

incr age:age+1    一定要是數字才能操作

 

incrby age 10:age+10

 

decr age:age-1    一定要是數字才能操作

 

decrby age 10: age-10

 

setex name 10 oyr:

set with expire)

設置key為name,過期時間為10秒,值為oyr

 

sexnx name ooo:

sex if not exist)

設置鍵位name,值為ooo,只有不存在的時候才會設置進去

 

mset k1 v1 k2 v2 k3 v3:    一次設置多個值

 

mget k1 k2 k3:        一次獲取多個值

 

msetnx k1 v1 k2 v2 k3 v3:    一次設置多個值,如果有一個鍵是存在的那麼全部失效。

 

 

Hash 類型(常用)

Redis hash 是一個鍵值對集合。

Redis hash是一個string類型的field和value的映射表,hash特別適合用於存儲對象。

Redis hash是一個string類型的field和value的映射表,hash特別適合用於存儲對象。

類似Java裡面的Map<String,Object>

K-V模式不變,但V是一個鍵值對

 

操作:

1)hset

hset user name oyr      給鍵user的name屬性設置值

 

 

2)hget

hget user name        獲取鍵user的name值

 

3)hmset

hmset user age 18 sex nan    同時設置多個值

 

4)hmget

hmget user name age sex    同時獲取多個屬性值

 

5)hgetall

hgetall user         獲取鍵user中的所有鍵和值

 

6)hdel

hdel user name      刪除鍵user中的name屬性

 

7)hlen

hlen user          獲取鍵user下有幾個屬性

 

8)hexists

hexists user nane      判斷鍵user下是否有name屬性

 

9)hkeys

hkys user          獲取鍵user下的所有屬性

 

10)hvals

hvals user            獲取鍵user下的所有值

 

11)hsetnx

hsetnx user name "oyr"    如果user對象里存在 name 屬性,則不做操作,不存在,創建並賦值。

 

(12)hincrby

hincrby  user age 10      給鍵user里的age 屬性添加10

 

 

Lists 類型(雙向鏈表)

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

它的底層實際是個鏈表而且是雙向鏈表。註意:先進後出,後進先出

 

操作:

 

lpush list1 a b c d    list1鏈表添加數據a b c d,從頭部添加

 

lrange list1 0 -1      獲取list1鏈表所有數據

 

rpush list2 1 2 3    給鏈表list2尾部插入元素

 

lpop list1      出棧 mylist,出棧後,元素消失(從頭部出)

 

rpop list1      出棧 mylist,出棧後,元素消失(從尾部出)

 

lindex list1 3    獲取鏈表的3索引位置的值

 

list1        獲取list1 鏈表的長度

 

lset list2 2 s    給鏈表索引2的位置設置值為 s

 

lrem list3 2 d    刪除鏈表2個d元素

 

ltrim list2 2 5    從索引2截取到索引5,其他元素被遺棄

 

linsert list2 before/after s u    在鏈表f元素前面或者後面插入 h 元素

 

rpoplpush list1 list2       list1鏈表中尾部出站,出棧元素添加給list2鏈表

 

lists性能總結:

它是一個字元串鏈表,left、right都可以插入添加;

如果鍵不存在,創建新的鏈表;

如果鍵已存在,新增內容;

如果值全移除,對應的鍵也就消失了。

鏈表的操作無論是頭和尾效率都極高,但假如是對中間元素進行操作,效率就很慘淡了。

 

 

Set 類型(不能重覆)

Redis的Set是string類型的無序集合。它是通過HashTable實現實現的,

 

操作:

 

sadd set1 a b c d       set1集合添加元素

 

smembers set1        查看set1集合的所有元素

 

sismember set1 a      判斷set1集合中是否有a元素

 

scard set1        獲取集合set1 的元素個數

 

srem set1 a      刪除集合set1中的元素(可以一次刪除多個)

 

srandmember set2 3    在集合set2中隨機出3個元素

 

diff set3 set4      差集,取set3中存在但是set4中不存在的元素

 

sinter set3 set4      交集,取set3和set4都存在的元素

 

sunion set3 set4      並集

 

 

Sortedsets 類型

 

Redis zset 和 set 一樣也是string類型元素的集合,且不允許重覆的成員。

不同的是每個元素都會關聯一個double類型的分數。

redis正是通過分數來為集合中的成員進行從小到大的排序。zset的成員是唯一的,但分數(score)卻可以重覆。

 

 

操作:

 

zadd zset1 60 a 70 b 80 c 90 d 100 f    zset1 有序集合設置元素,同時設置元素分數。

 

zrange zset1 0 -1 withscores      查詢集合所有元素,0:開始,-1:結,withscores顯示分數

 

zrange zset1 0 2            查詢集合下標0到下標2的元素

 

zcount zset1 70 90           統計分數在 70 到 90 之間元素,閉區間。

 

zcount zset1 (70 90       統計分數在70到90之間元素,左邊開區間,右邊閉區間

 

zcount zset1 -inf +inf      統計所有元素  -inf:最小值 +inf:最大值

 

根據分數查詢12到19集合,從坐標0開始。每頁顯示1條,12-19都是閉區間:

zrangebyscore mysset 12 19 withscores limit 0 1

 

zrem zset1 a b        集合刪除元素a b

 

 

五大數據類型操作結束


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

-Advertisement-
Play Games
更多相關文章
  • 一.客戶端與服務端交互 本篇簡單介紹下伺服器,伺服器運行涉及的內部原理知識很多,主要瞭解Redis伺服器內部要做哪些事情,需要開發人員去干預的比較少。Redis伺服器負責與多個客戶端建立網路連接,處理客戶端發送的命令請求,在資料庫中保存客戶端執行命令所產生的數據,並通過資源管理來維持伺服器自身的運轉 ...
  • 一批Reporting Service報表的訂閱突然報如下錯誤: Failure sending mail: The user or group name 'xxx\xxxx' is not recognized.Mail will not be resent. 原因如下,因為開發這批報表的人(也就... ...
  • 安裝完mysql以後,在桌面上可以找到mysql自帶的mysql command line client(命令行客戶端),點擊它,之後輸入自己的密碼,就進去了!(視頻下載) (全部書籍) 馬克-to-win:但如果有時進不去,可能你的mysql伺服器沒有啟動。你可以到控制面板/管理工具/服務:找到m ...
  • 1.基於數據文件的備份 直接將原始的數據文件Copy至備份的地方,這個方法的優點是比較快,因為備份和恢復都不需要轉換數據格式。缺點就是需要鎖住資料庫伺服器,但是此方案通常備份是在從節點上進行,備份過程不影響應用的正常運行。 如果不鎖住數據,經常會導致複製文件中斷,另外就是保證數據文件的一致性狀態。 ...
  • 下麵是我從網上摘取的一段話:(視頻下載) (全部書籍)i1974年,在IBM公司聖約瑟研究實驗室研製的大型關係資料庫管理 系統SYSTEM中,使用SEQUEL語言(由BOYCE 和CHAMBERLIN 提出),後來在SEQUEL 的基礎上發展了SQL語言。 SQL語言是一種互動式查詢語言,允許用戶直 ...
  • 什麼是DBMS,什麼是資料庫?(視頻下載) (全部書籍)馬克-to-win:DBMS (database management system 資料庫管理系統)像mysql,oracle,sql server之類,首先沒什麼神秘的,都只是某個公司編的一個軟體而已,比如mysql是MySQL AB公司編 ...
  • 接下來你可以學習Linux,java和linux是學習大數據的基礎,學不分先後。Linux因為大數據相關軟體都是在Linux上運行的,所以Linux要學習的扎實一些,學好Linux對你快速掌握大數據相關技術會有很大的幫助,能讓你更好的理解hadoop、hive、hbase、spark等大數據軟體的運 ...
  • 今天使用navicat向MySQL中插入中文時,報錯: 在我自己資料庫設計之初,沒有設計好字元編碼格式的問題。 使用如下語句解決: ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...