redis數據結構詳解

前言

Redis和Memcached最大的區別,Redis 除啦支持數據持久化之外,還支持更多的數據類型而不僅僅是簡單key-value結構的數據記錄。Redis還支持對這些數據類型做更多的服務端操作,從而也能減少網路的IO次數與數據體積,這裏也比Memcached要方便與高效,只針對這一點。

Redis主要支持的數據類型有5種:String ,Hash ,List ,Set ,和 Sorted Set。

一、——————數據類型-String————————————–

string類型在redis中是最常見的類型,value存儲最大數據量爲512M,可以存放json數據,圖像數據等等。

1.redis數據寫命令Set,相當於數據插入

127.0.0.1:6379> set name zlh –返回值: ok,說明插入成功。如果當前name存在值則覆蓋替換原有的value值。

2.redis數據讀命令Get,獲取數據

127.0.0.1:6379> get name –返回值: “zlh” ,如果當前key沒有value值,則返回null

3.redis數據追加命令Append,追加數據

127.0.0.1:6379> append name ’ is my friend’ –返回值:”zlh is my friend” ,如果當前key的value有值則附加到原有string後面,如果沒有則寫入。

4.redis數據刪除

127.0.0.1:6379>del name

5.redis數據讀寫操作命令GetSet,獲取原有value值的同時寫入新的value值

127.0.0.1:6379>getset name zlh –返回值:”zlh is my friend”,這裏返回的是原有name的value值,同時又給name的value設置新值zlh。此時name的值真實值爲zlh

127.0.0.1:6379>get name –返回值:zlh ,因爲上面getset給name的value設置值爲zlh。

6.redis數據加法計算命令incr,incrby,數據加法運算,incr爲+1內置運算,incrby爲+n自設n運算

127.0.0.1:6379>incr name —返回值:“數據不是整型或數據超出64位有符號整形數據範圍” ,由於原有name的value爲”zlh”,所以不能轉換爲整型,故報異常。

127.0.0.1:6379>incr age —-返回值:1,由於不存在age的key與value值,但是默認age爲key值爲0進行+1運算。

127.0.0.1:6379>incr age —返回值:2,由於上一行代碼給age賦值爲1,這裏incr命令進行+1運算,故返回值爲2。

127.0.0.1:6379>incrby age 10 —返回值:12 ,因爲原有age是2,這裏+10故爲12。

7.redis數據減法計算命令decr,decrby, 數據減法運算,decr爲-1內置運算,decrby爲減n自設n運算

127.0.0.1:6379>decr name –返回值:“數據不是整型或數據超出64位有符號整形數據範圍” ,由於原有name的value爲”zlh”,所以不能轉換爲整型,故報異常。

127.0.0.1:6379>decr age –返回自:11,因爲原有age的value值爲12,這裏decr是自減1的意思,故爲11。

127.0.0.1:6379>decrby age 10 –返回值:1,因爲原有age爲11,這裏-10,故爲1。

8.redis獲取string長度的命令strlen

127.0.0.1:6379>strlen name –返回值:3,因爲name的value值爲zlh,故長度爲3,如果該key或者value不存在,則返回0。

9.redis設置value值並設置過期時間命令setex(單位秒)

127.0.0.1:6379>setex sex 20 male —返回值:ok,設置key爲sex的value值爲male,緩存的過期時間爲20s。

127.0.0.1:6379>ddl sex —返回值: 剩餘過期時間,0爲已過期,-1爲永不過期。

127.0.0.1:6379>get sex —返回值:male,說明此時爲沒有過期,當已經過期此處返回數據爲null。

10.redis賦值判斷原值是否存在,存在不賦值,返回0;不存在才賦值,返回1;命令setnx

127.0.0.1:6379>setnx name Tom —返回值:0,因爲name的原有value爲zlh,存在值則不賦值。

127.0.0.1:6379>gete name —返回值:zlh,因爲有值,故上面賦值爲tom失敗,返回0。

127.0.0.1:6379>setnx phone 18501733702 —返回值:1,賦值成功,因爲原來不存在phone的key與value。

127.0.0.1:6379>get phone —返回值:18501733702,說明上面的setnx賦值成功。

11.redis字符串替換賦值,從指定位置開始替換,命令setrange

127.0.0.1:6379>setrange phone 9 123 –返回值:12,12爲字符串長度,11位號碼變成了12位。因爲從第9位開始替換,替換到原有字符串的最後一位還沒有替換完畢,所以在最後面添加啦一位設置爲3。

127.0.0.1:6379>get phone —返回值爲:185017337123.

127.0.0.1:6379>set phone 1 —這裏爲了下面說下setrange的其他特性,把電話設置爲1.

127.0.0.1:6379>setrange phone 3 aaa —返回值爲:6,因爲原有phone的value值爲1,不到三位,用0*00替換2位,所以要添加2爲才能替換第三位後面的值爲aaa。

127.0.0.1:6379>get phone —返回值:1*00*00aaa。理解下上面的操作就知道這裏爲什麼是這樣的返回值了。

12.redis截取字符串,從下標爲n開始截取到n或n+1,類似c#中的substring,命令getrange

127.0.0.1:6379>set phone 18501733701 —-方便下面操作

127.0.0.1:6379>getrange phone 1 5 —返回值:85017,因爲getrange是從下標爲1開始截取截取到下標爲5,這裏包含下標爲5的值。

127.0.0.1:6379>getrange phone 0 0 —返回值:1,從下標爲0開始截取,截取到下標爲0,包含下標爲0。故返回值爲1。

127.0.0.1:6379>getrange phone 10 13 –返回值爲:1,此號碼下標直到10的11位號碼,從10開始截取,截到第13位,後2位不存在忽略,只返回第10位。故返回乾淨的1。

13.redis批量操作修改及讀取string數據,命令mget,批量讀取,命令mset,批量賦值,命令msetnx,帶事務性的賦值,發現有一個key已經存在,所有事務迴歸,不做賦值處理操作

127.0.0.1:6379>mset name zlh age 30 —返回值:ok,這裏設置了 key爲name和age的value分別爲zlh,30

127.0.0.1:6379>mget name zlh —返回值:1>zlh 2>30 。

127.0.0.1:6379>msetnx name Jim address China —返回值爲:0,沒有做任何修改,因爲key爲那麼已存在。

127.0.0.1:6379>mget name address —返回值:1>zlh 2>null

127.0.0.1:6379>msetnx address China,hobbies sports –返回值爲:1,插入成功

127.0.0.1:6379>mget address hobbies —返回值:1>China 2>sports

二、——————數據類型-List——————————————

1、redis中的list的基本屬性?
List數據結構是鏈表結構,這意味這無論數據量多大,頭尾操作數據還是很快的,list的容量是2的32次方減1個元素,即4294967295個元素數量。
2、爲什麼使用redis中的list數據類型?
依靠redis內存中操作數據的優勢,又提供一些列實用獨特的Api操控數據,用着簡便,速度又快,又能實現特有的數據特徵排序讀寫,做時間軸數據,評論列表,消息傳遞等等,又提供簡便的分頁,讀寫操作。你用不用。
3、爲什麼使用消息隊列?
舉個簡單的例子,功能是這樣子的,你要呈現頁面給用戶看,在你呈現頁面之前有一個很複雜耗時的運算要操作,但是這個操作不影響頁面呈現的數據,也不作爲頁面呈現的數據。 

方案一:運算完,呈現頁面。
方案二:把要計算的數據,拋到持久化的消息隊列中,不做耗時的運算,直接呈現頁面。然後用另外一個程序來對消息隊列中的數據單獨做運算。
顯而易見,方案二是最佳答案,你用不用消息隊列。

4、爲什麼不使用成熟的rabbitmq而使用redis實現的消息隊列?
Rabbitmq只關注數據的先進先出,沒有數據優先級的概念,假如你想給那個數據來個先處理的特權,那麼不好意思,我不支持,但是rabbitmq也可以變通着來處理,就是建立多個隊列用程序路由來實現這個特權功能。那麼redis實現的消息隊列,是可以靈活掌控的,後面做示範。
1、redis中list列表的數據插入命令:lpush,rpush,linsert

127.0.0.1:6379>rpush mylist 1 —結果爲:(integer) 1

127.0.0.1:6379>rpush mylist 2 —結果爲:(integer) 2

127.0.0.1:6379>rpush mylist 3 —rpush命令:向mylist列表中,從右邊插入3條數據,返回值爲當前列表的容量。結果爲:(integer) 3

127.0.0.1:6379>lrange mylist 0 -1 —lrange命令:查看mylist列表中的數據,0開始位置,-1結束位置,結束位置爲-1時,表示列表的最後一個位置,即查看所有。結果爲:1> “1” 2> “2” 3> “3”

127.0.0.1:6379>lpush mylist 0 —lpush命令:向mylist列表中,從左邊插入一條數據爲0的數據

127.0.0.1:6379>lrange mylist 0 -1 —結果爲:1>”0” 2>”1” 3>”2” 4>”3”

127.0.0.1:6379>linsert mylist after 3 4 —linsert命令,表達式爲linsert key before|after pivot value ;這句命令的意思是在key爲mylist的列表中查找值爲3的數據,在其後插入一條值爲4的數據。

127.0.0.1:6379>lrange mylist 0 -1 —結果爲:1>”0” 2>”1” 3>”2” 4>”3” 5>”4”

127.0.0.1:6379>linsert mylist before 0 -1 —意思是:在key爲mylist的列表中查找值爲0的數據,在其前插入一條值爲-1的數據。

127.0.0.1:6379>lrange mylist 0 -1 —結果爲:1>”-1” 2>”0” 3>”1” 4>”2” 5>”3” 6>”4”

127.0.0.1:6379>lisert mylist after 5 8 —結果爲:-1,由於mylist列表不存在值爲5的數據,所以不執行任何操作,返回狀態值-1。如果key不存在時,返回錯誤提示。

127.0.0.1:6379>lrange mylist 0 -1 —結果爲:1>”-1” 2>”0” 3>”1” 4>”2” 5>”3” 6>”4”

2、redis中list列表的數據刪除命令:lpop,rpop

127.0.0.1:6379>lpop mylist —lpop命令:從列表中的左邊移除一條數據,同時輸出被刪除的數據,這裏輸出的結果爲-1

127.0.0.1:6379>lrange mylist 0 -1 —結果爲:1>”0” 2>”1” 3>”2” 4>”3” 5>”4”

127.0.0.1:6379>rpop mylist —rpop命令:從列表的右邊移除一條數據,同時輸出被刪除的數據,這裏輸出的結果爲4

127.0.0.1:6379>lrange mylist 0 -1 —結果爲:1>”0” 2>”1” 3>”2” 4>”3”

127.0.0.1:6379>ltrim mylist 1 3 —-ltrim命令:保留設定的兩個下標區間的值,刪除不在其區間的所有值。1爲開始保留的下標值,3爲結束保留的下標值。

127.0.0.1:6379>lrange mylist 0 -1 —結果爲:1>”1” 2>”2” 3>”3”

3、redis中list列表的數據查看命令:lrange,llen,lindex

127.0.0.1:6379>llen mylist —llen命令:返回列表的長度,這裏mylist只剩下4條數據,故輸出結果爲4

127.0.0.1:6379>lindex mylist 3 —lindex命令:獲取給定位置的數據,這裏座標爲3的數據是”2”,所以結果爲2.

4、redis中list列表數據修改命令:lset

127.0.0.1:6379>lset mylist 2 zlh —lset命令:把下標爲2的值設置爲zlh,如果下標值超出範圍或對一個空list列表進行lset,那麼將返回一個錯誤提示

127.0.0.1:6379>lrange mylist 0 -1 —結果爲: 1>”1” 2>”2” 3>”zlh”

5、redis中list列表,兩個列表A,B,將A列表的尾元素添加到B列表的頭元素中,命令:rpoplpush

這裏我有連個列表A數據爲{1,2,3} ,B列表數據爲{4,5,6}

127.0.0.1:6379>rpoplpush A B

127.0.0.1:6379>lrange A —結果爲:1>”1’ 2>”2”

127.0.0.1:6379>lrange B —結果爲:1>”3’ 2>”4” 3>”5” 4>”6”

6、redis中的幾個帶阻塞的高級命令:blpop,brpop,brpoplpush

127.0.0.1:6379>blpop A 30 —意思是:A列表有值的話,從左邊移除一個數據,如果沒有值的話,則等待A中插入數據爲止,等待時間爲30秒,如果時間設置爲0表示阻塞時間無限延長

127.0.0.1:6379>blpop B30 —意思是:A列表有值的話,從左邊移除一個數據,如果沒有值的話,則等待A中插入數據爲止,等待時間爲30秒,如果時間設置爲0表示阻塞時間無限延長

127.0.0.1:6379>brpoplpush A B 30 —意思是:將A列表的尾元素添加到B列表的頭元素中,如果A列表中有值則插入,如果沒值,則等待A中插入數據爲止,等待時間爲30秒,如果時間設置爲0表示阻塞時間無限延長

Redis實現消息隊列,並自帶優先級功能

1、首先redis中的list是鏈表結構,具備消息隊列中的先進先出特徵。

2、從上面的幾個高級命令中可以看出,list有幾個自帶阻塞功能,時間設置爲0,可以視爲永不休息的監聽進程

三、——————數據類型-Set——————————————

在Redis中,Set和list都是字符串序列,非常相似,不同之處在於Set是用哈希表來保持字符串的唯一性,沒有先後順序,不像list一樣,可以在首尾增刪數據。但是set也有自己的相應處理命令來完成對自己的操作。下面我們來看下Set的命令怎麼使用

操作單個set的命令

1.redis中set列表的新增命令Sadd,key值相同下的value值不能重複,返回插入的數據個數,key後面可跟多個value值

127.0.0.1:6379>sadd mySet 1 —添加key爲mySet的set數據值爲1,

127.0.0.1:6379>sadd mySet 2 4 5 —添加key爲mySet的set數據值爲2,

2.redis中查看set數據集合的命令:smembers,可以獲取全部的元素,當set成員比較多時考慮其性能啊

127.0.0.1:6379>smembers mySet —獲取key爲mySet的說有set數據值集合

3.redis中set判斷某個key的value中是否存在某個值的命令:sismember ,如果存在返回1,不存在返回0

127.0.0.1:6379>sismember mySet 3 —返回值爲0,因爲myset的set成員中只有1,2沒有3

127.0.0.1:6379>sismember mySet 2 —返回值爲1,因爲myset的Set成員中存在2.

4.redis中set的刪除數據命令srem,返回刪除個數,key後面可跟多個value值

127.0.0.1:6379>srem mySet 1 —刪除key爲mySet,value爲1的數據項。

127.0.0.1:6379>srem mySet 2 4 —刪除key爲mySet,value爲2和4的2個數據項。

5.redis中查看set數據個數的命令scard,如果不存在返回0

127.0.0.1:6379>sadd mySet 1 2 3 4 5

127.0.0.1:6379>scrad mySet —查看mySet中存在多少個數據項,返回結果爲5

6.redis中set隨機查看元素命令srandmember

127.0.0.1:6379>srandmember mySet —輸出key爲mySet的數據項中的隨機一個value,

7.redis中set隨機刪除一個元素的命令spop,並返回輸出刪除的數據

127.0.0.1:6379>spop mySet —-隨機從key爲mySet的數據集合中刪除一條數據,並返回輸出刪除的數據

127.0.0.1:6379>scard mySet —key爲mySet的數據集合中的數據個數爲4

操作多個set的命令

set除了對一個set中的元素進行增刪改查外,還可以對多個set進行操作,比如將一個set的元素移到另外一個set中,計算多個set的並集,交集,差集等操作。

1.redis中set將一個set中的元素移動到另外一個set中的命令smove

127.0.0.1:6379>sadd mySet 1 2 3 —-向mySet中添加3條數據 1 2 3

27.0.0.1:6379>sadd youSet 3 4 5 —-向youSet中添加3條數據 3 4 5

127.0.0.1:6379>smove youSet mySet 4 —將youSet中的數據4移除的同時將數據4添加到mySet中

127.0.0.1:6379>smembers mySet —結果爲:1 2 3 4

127.0.0.1:6379>smembers youSet —結果爲 3 5

2.redis中set求交集命令sinter

127.0.0.1:6379>sinter mySet youSet —輸出結果爲mySet和youSet的交集,輸出結果爲:3

3.redis中set求並集的命令sunion

127.0.0.1:6379>sunion mySet youSet —輸出結果爲mySet與youSet的並集,輸出結果爲:1 2 3 4 5

4.redis中set求差集的命令sdiff

127.0.0.1:6379>sdiff mySet youSet —輸出結果爲mySet中youSet不存在的數據,輸出結果爲:1 2 4

127.0.0.1:6379>sdiff youSet mySet —輸出結果爲youSet中mySet不存在的數據,輸出結果爲:5

四、——————數據類型-Set——————————————

Zset跟Set之間可以有並集運算,因爲他們存儲的數據字符串集合,不能有一樣的成員出現在一個zset中,但是爲什麼有了set還要有zset呢?zset叫做有序集合,而set是無序的,zset怎麼做到有序的呢?就是zset的每一個成員都有一個分數與之對應,並且分數是可以重複的。有序集合的增刪改由於有啦排序,執行效率就是非常快速的,即便是訪問集合中間的數據也是非常高效的。

操作單個zset的redis命令

1、添加,如果值存在添加,將會重新排序。zadd

127.0.0.1:6379>zadd myZSet 1 zlh —添加分數爲1,值爲zlh的zset集合

127.0.0.1:6379>zadd mySet 2 Tom 3 Jim —添加2條zset集合,分別爲分數爲2、3,值爲tom、jim的集合。

2、查看zset集合的成員個數。zcard

127.0.0.1:6379>zcard myZSet —輸出zset的成員個數爲3

3、查看Zset指定範圍的成員,withscores爲輸出結果帶分數。zrange

127.0.0.1:6379>zrange mZySet 0 -1 —-0爲開始,-1爲結束,輸出順序結果爲: zlh tom jim

127.0.0.1:6379>zrange mZySet 0 -1 withscores —輸出帶分數的結果爲:zlh 1 tom 2 jim 3

4、獲取zset成員的下標位置,如果值不存在返回null。zrank

127.0.0.1:6379>zrank mZySet Jim —Jim的在zset集合中的下標爲2

5、獲取zset集合指定分數之間存在的成員個數。zcount

127.0.0.1:6379>zcount mySet 1 3 —輸出分數>=1 and 分數 <=3的成員個數爲3,因爲分數是可以重複的,所以這個命令是有道理的。

6、刪除指定的一個成員或多個成員。zrem

127.0.0.1:6379>zrem myZSet zlh –刪除值爲zlh的zset成員

127.0.0.1:6379>zrem myZSet Tom Jim —刪除值爲Tom和Jim的兩個zset成員

7、獲取指定值的分數。zscore

127.0.0.1:6379>zadd myZset 1 zlh 1 tom 2 jim 3 xdd 4 pmm —由於上面的數據被刪除完了,這裏添加5條示範數據再。

127.0.0.1:6379>zscore myZset zlh —輸出值爲zlh的分數爲1

8、給指定元素的分數進行增減操作,負值爲減,正值爲加。zincrby

127.0.0.1:6379>zscore myZset tom —-輸出tom的分數爲1

127.0.0.1:6379>zincrby myZset 4 tom —tom的分數值加4,輸入分數值爲5

127.0.0.1:6379>zscore myZset tom —輸出tom的分數值爲5

9、根據指定分數的範圍獲取值。zrangebysocre

127.0.0.1:6379>zrangebyscore myZset 1 5 —輸出分數>=1 and <=5的成員值爲:zlh jim xdd pmm tom

127.0.0.1:6379>zrangebyscore myZset (1 5 —-輸出分數>1 and <=5的成員值爲:jim xdd pmm tom

127.0.0.1:6379>zrangebyscore myZset 2 5 limit 1 2 —檢索分數爲2到5之間的數據,然後從下標爲1的數據開始往後輸出2個數據,包含下標爲1的數據。結果爲:xdd pmm

127.0.0.1:6379>zrangebyscore myZset -inf +inf limit 2 3 —-+inf表示最後一個成員,-inf表示第一個成員,意思是:檢索所有數據,然後從下標爲2的數據開始再往後輸出2個數據。結果爲:xdd pmm tom

10、倒序,從高到底排序輸出指定範圍的數據。zrevrange,zrevrangebyscore

127.0.0.1:6379>zrevrange myZset 2 3 —先倒序排列數據,輸出下標爲>=2 and <=3的數據爲xdd jim,這裏注意的是倒序之後下標也反過來了。

127.0.0.1:6379>zrevrange myZset 2 4 withscores —輸出結果爲:xdd 3 jim 2 zlh 1

127.0.0.1:6379>zrevrangebyscore myZset 5 1 limit 3 2 —-輸出結果爲:jim zlh 。獲取score <=5 and >=1,從下標爲爲3開始獲取2條數據。

127.0.0.1:6379>zrevrangebyscore myZset 4 2 —-分數>=2 and <=4 的數據倒序輸出:pmm xdd jim

11、根據座標,分數範圍刪除數據。zremrangebyscore,zremrangebyrank

127.0.0.1:6379>zremrangebyscore myZset 1 2 —刪除分數>=1 and <=2的數據

127.0.0.1:6379>zrange myZset 0 -1 —-輸出結果爲 xdd pmm tom

127.0.0.1:6379>zremrangebyrank myZset 0 2 —刪除下標>=0 and <=2的zset元素

127.0.0.1:6379>zrange myZset 0 -1 –輸出結果爲:empty list or set 。沒數據啦。

操作多個zset的redis命令

1、求多個zset的並集

127.0.0.1:6379>zadd myZset 1 zlh 2 jim 3 tom —添加3個數據

127.0.0.1:6379>zadd youZset 1 zlh 2 xdd 3 pmm —添加3個數據

127.0.0.1:6379>zunionzstore heZset 2 myZset youZset —-將myzset和youzset的並集添加到hezset中。

2、求多個zset的交集

127.0.0.1:6379>zinterstore sheZset 2 myZset youZset —-將myzset和youZset 的交集添加到sheZset中。

五、——————數據類型-Hash——————————————

Hash數據結構累似c#中的dictionary,大家對數組應該比較瞭解,數組是通過索引快速定位到指定元素的,無論是訪問數組的第一個元素還是最後一個元素,所耗費的時間都是一樣的,但是數組中的索引卻沒有實際意義,他只是一個位置而已。而我們在查找某個元素時,一般都會使用有意義的字段來做索引,這就產生啦dictionary。其實dictionary的實現,就是讓key跟下標索引有一定的關係,所實現的,讓他的查找算法複雜度變爲常數O(1)。
redis中hash對單個key/value操作的命令演示

1.redis中hash的添加命令hset,如果key不存在,創建key,存在,則覆蓋原有值

redis 127.0.0.1:6379>hset myhash name Jim —-給key爲myset的鍵值設置鍵爲name值爲Jim

2.redis中hash的查看命令hget

127.0.0.1:6379>hget myhash name —-輸出: “Jim”,獲取key爲myset,鍵爲name的value

127.0.0.1:6379>hset myhash name zlh —-覆蓋原有值,值改爲zlh替換Jim

127.0.0.1:6379>hget myhash name —輸出:”zlh”

3.redis中hash的獲取key包含的field數量的命令hlen

127.0.0.1:6379>hset myhash age 31 — 設置key爲myset鍵爲age的value=31

127.0.0.1:6379>hlen myhash —輸出爲2,key爲myset的field數量爲2

4.redis中判斷指定key中指定field是否存在的命令hexists,存在返回1,不存在返回0

127.0.0.1:6379>hexists myhash name —返回1,說明存在

127.0.0.1:6379>hexists myhash name1 —返回0,說明不存在

5.redis中hash刪除命令hdel,刪除一個或多個指定的字段

127.0.0.1:6379>hset myhash sex nan —-添加數據

127.0.0.1:6379>hset myhash issingle yes —-添加數據

127.0.0.1:6379>hset myhash hobby sports —-添加數據

127.0.0.1:6379>hdel myhash hobby —-刪除單個數據,filed爲hobby的數據

127.0.0.1:6379>hdel myhash issingle sex —刪除多個數據,filed爲issingle和sex的兩條數據

6.redis中hash如果key或field不存在插入有效,否則不採取操作的命令hsetnx

127.0.0.1:6379>hsetnx myhash sex nan —設置myhash,field爲sex的value爲nan,成功返回1,因爲原來不存在sex這個字段

127.0.0.1:6379>hsetnx myhash sex nv —設置myhash,field爲sex的value爲nv,不成功返回0,因爲原來存在sex這個字段並且有值

127.0.0.1:6379>hget myhash sex –輸出”nan”

7.redis中hash中的value爲數值時操作增減的命令hincrby

127.0.0.1:6379>del myhash —刪除該鍵

127.0.0.1:6379>hset myhash age 31 —設置key爲myhash的鍵爲age值爲31

127.0.0.1:6379>hincrby myhash age 10 —給key爲myhash,鍵爲age的值加10,輸出結果爲41

127.0.0.1:6379>hincrby myhash age -10 —給key爲myhash,鍵爲age的值減去10,輸出結果爲31

redis中hash批量操作key/value的命令演示

1.批量添加key/value的命令hmset

127.0.0.1:6379>del myhash –刪除該鍵
127.0.0.1:6379>hmset myhash name zlh age 31 issingle no —-給key爲myhash的hash添加name=zlh,age=31,issingle=no的多個鍵值

2.批量獲取key/value的命令hmget

127.0.0.1:6379>hmget myhash name age issingle —-輸出結果爲:zlh 31 no

3.根據myhash鍵獲取所有的字段及value的命令hgetall

127.0.0.1:6379>hgetall myhash —-輸出結果爲:name age issingle zlh 31 no

4.獲取所有的field的命令hkeys

127.0.0.1:6379>hkeys myhash —輸出結果爲:name age issingle

5.獲取所有字段的值的命令hvals

127.0.0.1:6379>hvals myhash —-輸出結果爲:zlh 31 no

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章