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
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...