redis的資料類型和指令

來源:互聯網
上載者:User

標籤:

1.全域key操作:

測試指令:

全域key操作命令:忽略與key關聯的value的類型刪flushdb  清空當前選擇的資料庫del mykey mykey2  刪除了兩個 Keys改move mysetkey 1   將當前資料庫中的 mysetkey 鍵移入到 ID 為 1 的資料庫中rename mykey mykey1   將 mykey 改名為 mykey1renamenx oldkey newkey   如果 newkey 已經存在,則無效expire mykey 100   將該鍵的逾時設定為 100 秒persist mykey  將該 Key 的逾時去掉,變成持久化的鍵  查keys my*  擷取當前資料庫中所有以my開頭的keyexists mykey  若不存在,返回0;存在返回1select 0   開啟 ID 為 0 的資料庫ttl mykey  查看存貨時間還剩下多少秒type mykey  返回mykey對應的值的類型randomkey  返回資料庫中的任意鍵
2.String(字串)

string是redis最基本的類型,一個key對應一個value。

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

string類型是Redis最基本的資料類型,一個鍵最大能儲存512MB。

測試指令的過程就不貼出來了,下面是測試的指令

增set mykey "test"   為鍵設定新值,並覆蓋原有值getset mycounter 0   設定值,取值同時進行setex mykey 10 "hello"  設定指定 Key 的到期時間為10秒,在存活時間可以擷取valuesetnx mykey "hello"   若該鍵不存在,則為鍵設定新值mset key3 "stephen" key4 "liu"  大量設定鍵
刪del mykey 刪除已有鍵
改append mykey "hello" 若該鍵並不存在,返回當前 Value 的長度 該鍵已經存在,返回追加後 Value的長度incr mykey 值增加1,若該key不存在,建立key,初始值設為0,增加後結果為1decrby mykey 5 值減少5setrange mykey 20 dd 把第21和22個位元組,替換為dd, 超過value長度,自動補0查 exists mykey 判斷該鍵是否存在,存在返回 1,否則返回0get mykey 擷取Key對應的valuestrlen mykey 擷取指定 Key 的字元長度ttl mykey 查看一下指定 Key 的剩餘存活時間(秒數)getrange mykey 1 20 擷取第2到第20個位元組,若20超過value長度,則截取第2個和後面所有的的mget key3 key4 批量擷取鍵

3.Hashes類型:(map<string,string>)

 我們可以將Redis中的Hashes類型看成具有String Key和String Value的map容器。

 所以該類型非常適合於儲存值對象的資訊。如Username、Password和Age等。如果Hash中包含很少的欄位,那麼該類型的資料也將僅佔用很少的磁碟空間。

 每一個Hash可以儲存4294967295個索引值對。

 測試指令:

案例解釋:Map類型:    hset myhash field1 "s"      redis.key=myhash   redis.value=( map.key=field1   map.value=s )     增hset myhash field1 "s"    若欄位field1不存在,建立該鍵及與其關聯的Hashes, Hashes中,key為field1 ,並設value為s ,若欄位field1存在,則無效                   hsetnx myhash field1 s    若欄位field1不存在,建立該鍵及與其關聯的Hashes, Hashes中,key為field1 ,並設value為s, 若欄位field1存在,則無效hmset myhash field1 "hello" field2 "world   一次性設定多個欄位刪hdel myhash field1   刪除 myhash 鍵中欄位名為 field1 的欄位del myhash  刪除鍵改  hincrby myhash field 1  給field的值加1查hget myhash field1   擷取索引值為 myhash,欄位為 field1 的值hlen myhash   擷取myhash鍵的欄位數量hexists myhash field1     判斷 myhash 鍵中是否存在欄位名為 field1 的欄位hmget myhash field1 field2 field3  一次性擷取多個欄位hgetall myhash   返回 myhash 鍵的所有欄位及其值hkeys myhash  擷取myhash 鍵中所有欄位的名字hvals myhash   擷取 myhash 鍵中所有欄位的值

4.List類型:

List類型是按照插入順序排序的字串鏈表。和資料結構中的普通鏈表一樣,我們可以在其頭部(left)和尾部(right)添加新的元素。在插入時,如果該鍵並不存在,Redis將為該鍵建立一個新的鏈表。與此相反,如果鏈表中所有的元素均被移除,那麼該鍵也將會被從資料庫中刪除。

List中可以包含的最大元素數量是4294967295。

測試指令:

List類型:(鏈表:最後一個插入的元素,位置索引為o)
增 lpush mykey a b 若key不存在,建立該鍵及與其關聯的List,依次插入a ,b, 若List類型的key存在,則插入value中
lpushx mykey2 e 若key不存在,此命令無效, 若key存在,則插入value中
linsert mykey before a a1 在 a 的前面插入新元素 a1
linsert mykey after e e2 在e 的後面插入新元素 e2rpush mykey a b 在鏈表尾部先插入b,在插入arpushx mykey e 若key存在,在尾部插入e, 若key不存在,則無效 rpoplpush mykey mykey2 將mykey的尾部元素彈出,再插入到mykey2 的頭部(原子性的操作)刪del mykey 刪除已有鍵 lrem mykey 2 a 從頭部開始找,按先後順序,值為a的元素,刪除數量為2個,若存在第3個,則不刪除ltrim mykey 0 2 從頭開始,索引為0,1,2的3個元素,其餘全部刪除改lset mykey 1 e 從頭開始, 將索引為1的元素值,設定為新值 e,若索引越界,則返回錯誤資訊rpoplpush mykey mykey 將 mykey 中的尾部元素移到其頭部查lrange mykey 0 -1 取鏈表中的全部元素,其中0表示第一個元素,-1表示最後一個元素。
lrange mykey 0 2 從頭開始,取索引為0,1,2的元素
lrange mykey 0 0 從頭開始,取第一個元素,從第0個開始,到第0個結束lpop mykey 擷取頭部元素,並且彈出頭部元素,出棧lindex mykey 6 從頭開始,擷取索引為6的元素 若下標越界,則返回nil

5.set類型:

Set類型看作為沒有排序的字元集合。Set可包含的最大元素數量是4294967295。
如果多次添加相同元素,Set中將僅保留該元素的一份拷貝。

測試指令:

增sadd myset a b c  若key不存在,建立該鍵及與其關聯的set,依次插入a ,b,若key存在,則插入value中,若a 在myset中已經存在,則插入了 d 和 e 兩個新成員。
刪spop myset 尾部的b被移出,事實上b並不是之前插入的第一個或最後一個成員srem myset a d f 若f不存在, 移出 a、d ,並返回2改smove myset myset2 a 將a從 myset 移到 myset2,查sismember myset a 判斷 a 是否已經存在,傳回值為 1 表示存在。smembers myset 查看set中的內容scard myset 擷取Set 集合中元素的數量srandmember myset 隨機的返回某一成員sdiff myset1 myset2 myset3 1和2得到一個結果,拿這個集合和3比較,獲得每個專屬的值
sdiffstore diffkey myset myset2 myset3 3個集和比較,擷取專屬的元素,並存入diffkey 關聯的Set中sinter myset myset2 myset3 獲得3個集合中都有的元素
sinterstore interkey myset myset2 myset3 把交集存入interkey 關聯的Set中sunion myset myset2 myset3 擷取3個集合中的成員的並集
sunionstore unionkey myset myset2 myset3 把並集存入unionkey 關聯的Set中

6.Sorted-Sets類型:

Sorted-Sets中的每一個成員都會有一個分數(score)與之關聯,Redis正是通過分數來為集合中的成員進行從小到大的排序。成員是唯一的,但是分數(score)卻是可以重複的。

測試指令:

 分數:按分數高低排序      位置索引:分數最低的索引為0增zadd myzset 2 "two" 3 "three"   添加兩個分數分別是 2 和 3 的兩個成員刪zrem myzset one two  刪除多個成員變數,返回刪除的數量改zincrby myzset 2 one  將成員 one 的分數增加 2,並返回該成員更新後的分數查 zrange myzset 0 -1 WITHSCORES  返回所有成員和分數,不加WITHSCORES,只返回成員zrank myzset one   擷取成員one在Sorted-Set中的位置索引值。0表示第一個位置zcard myzset    擷取 myzset 鍵中成員的數量zcount myzset 1 2   擷取分數滿足運算式 1 <= score <= 2 的成員的數量zscore myzset three  擷取成員 three 的分數zrangebyscore myzset (1 2   擷取分數滿足運算式 1 < score <= 2 的成員#-inf 表示第一個成員,+inf最後一個成員#limit限制關鍵字#2  3  是索引號zrangebyscore myzset -inf +inf limit 2 3  返回索引是2和3的成員zremrangebyscore myzset 1 2   刪除分數 1<= score <= 2 的成員,並返回實際刪除的數量zremrangebyrank myzset 0 1  刪除位元置索引滿足運算式 0 <= rank <= 1 的成員zrevrange myzset 0 -1 WITHSCORES   按位置索引從高到低,擷取所有成員和分數#原始成員:位置索引從小到大      one  0        two  1#執行順序:把索引反轉      位置索引:從大到小      one 1      two 0#輸出結果: two         onezrevrange myzset 1 3  擷取位置索引,為1,2,3的成員#相反的順序:從高到低的順序zrevrangebyscore myzset 3 0  擷取分數 3>=score>=0的成員並以相反的順序輸出zrevrangebyscore myzset 4 0 limit 1 2  擷取索引是1和2的成員,並反轉位置索引

 


    ,

redis的資料類型和指令

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.