Redis数据库(二)——数据类型
生活随笔
收集整理的這篇文章主要介紹了
Redis数据库(二)——数据类型
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
Redis數(shù)據(jù)庫(二)——數(shù)據(jù)類型
- 一、String數(shù)據(jù)類型
- 1、set / get / append / strlen
- 2、incr / decr / incrby / decrby
- 3、getset
- 4、setex
- 5、setnx
- 6、mset / mget / msetnx
- 二、List數(shù)據(jù)類型
- 1、lpush / lpushx / lrange
- 2、lpop / llen
- 3、lrem / lset / lindex / ltrim
- 4、linsert
- 5、rpush / rpushx / rpop / rpoplpush
- 三、Hash數(shù)據(jù)類型(散列類型)
- 1、hset / hget / hdel / hexists / hlen / hsetnx
- 2、hincrby
- 3、hmset / hmget / hgetall / hkeys / hvals
- 四、set數(shù)據(jù)類型(無序集合)
- 1、sadd / smembers / scard / sismember
- 2、spop / srem / srandmember / smove
- 五、Sorted Set數(shù)據(jù)類型(zset、有序集合)
- 1、zadd / zcard / zcount / zrem / zincrby / zscore / zrank
- 2、zrangebyscore / zremrangebyrank /zremrrangebyscore
- 3、zrevrange / zrevrangebyscore / zrevrank
- 小結(jié)
一、String數(shù)據(jù)類型
- 概述:String是redis最基本的類型,最大能存儲512MB的數(shù)據(jù),String類型是二進制安全的,即可以存儲任何數(shù)據(jù)、比如數(shù)字、圖片、序列化對象等
1、set / get / append / strlen
set key value #存放數(shù)據(jù) get key value #獲取數(shù)據(jù) append key value #Redis的append命令是往一個key追加value。如果沒有key,則創(chuàng)建一個并且設置value strlen key #獲取指定Key的字符長度例: append test "hello" append test " world" get test set test 35123512 get test strlen test
2、incr / decr / incrby / decrby
incr key #該Key的值遞增1 decr key #該Key的值遞減1 incrby key increment #增加指定的整數(shù) decrby key increment #減少指定的整數(shù)例: incr number incr number decr number incrby number 5 decrby number 3 get numberset number hello get number incr number
3、getset
getset key value #獲取計數(shù)器原有值的同時,并將其設置為新值,這兩個操作原子性的同時完成例: set test2 5 get test2 getset test2 0 get test24、setex
setex key seconds value #設置指定Key的過期時間為xx秒 ttl key #查看鍵的剩余存活時間例: setex test2 10 'hello' ttl test2 get test2 等待10s get test2 ttl test2 set test '3333' ttl test5、setnx
setnx key value #創(chuàng)建指定鍵,若該鍵存在則不執(zhí)行,不存在則執(zhí)行例: setnx test3 "zhangsan" setnx test3 "lisi" get test36、mset / mget / msetnx
mset key value #批量設置鍵的值 mget key #批量獲取鍵的值 msetnx key value #批量設置鍵值,若有存在的鍵則不執(zhí)行例: mset a1 111 a2 222 mget a1 a2 msetnx a3 333 a4 444 mget a3 a4 msetnx a4 555 a5 666 mget a4 a5二、List數(shù)據(jù)類型
- 概述:列表的元素類型為string,按照插入順序排序,在列表的頭部或尾部添加元素
1、lpush / lpushx / lrange
lpush key value #該命令會創(chuàng)建該鍵及與其關(guān)聯(lián)的List,之后在將參數(shù)中的values從左到右依次插入到表頭 lpushx key value #該命令僅當key存在時,將value值插入表頭 lrange key start stop #返回列表中指定區(qū)間內(nèi)的元素,0表示第一個元素,1表示第二個元素例: lpush letter a b c d lrange letter 0 -1 lrange letter 1 2 lpushx letter e lrange letter 0 -1 lpushx letter2 e2、lpop / llen
lpop key #移除并返回第一個元素,從頭開始 llen key #查看列表中元素個數(shù)3、lrem / lset / lindex / ltrim
lrem key count value #從頭部(left)向尾部(right)變量鏈表,刪除2個值等于a的元素,返回值為實際刪除的數(shù)量 lset key index value #將索引值為xxx的元素值設置為新值xxx lindex key index #獲取索引值為xxx的元素值。 ltrim key start stop #僅保留索引值xxx到xxx的元素4、linsert
linsert key BEFORE|AFTER pivot value #在鍵的xxx元素前|后插入新元素元素
5、rpush / rpushx / rpop / rpoplpush
rpush key value #將值從左往右依次插入到表尾 rpushx key value #指定鍵存在時執(zhí)行,否則不執(zhí)行 rpop key #移除并返回鍵的第一個元素,從尾開始 rpoplpush source destination #將鍵1尾部元素xxx彈出,同時再插入到鍵2的頭部(原子性的完成這兩步操作)
三、Hash數(shù)據(jù)類型(散列類型)
- 概述:hash用于存儲對象。可以采用這樣的命名方式:對象類別和ID構(gòu)成鍵名,使用字段表示對象的屬性,而字段值則存儲屬性值。 如:存儲 ID 為 2 的汽車對象。
如果Hash中包含很少的字段,那么該類型的數(shù)據(jù)也將僅占用很少的磁盤空間。每一個Hash可以存儲4294967295個鍵值對。
1、hset / hget / hdel / hexists / hlen / hsetnx
hset key field value #給xxx鍵設置字段為xxx,值為xxx hget key field #獲取xxx鍵,字段為xxx的值 hdel key field #刪除xxx鍵的xxx字段,成功返回1 hexists key field #判斷xxx鍵中的xxx字段是否存在,存在返回1 hlen key #獲取xxx鍵的字段數(shù)量 hsetnx key field value #給xxx鍵添加新字段,是否執(zhí)行基于此字段是否存在,不管鍵是否存在,返回1表示執(zhí)行成功2、hincrby
hincrby key field increment #給xxx鍵的xxx字段值加x3、hmset / hmget / hgetall / hkeys / hvals
hmset key field value #批量為xxx鍵創(chuàng)建字段和賦值 hmget key field #獲取指定多個字段值 hgetall key #返回xxx鍵的所有字段及其值,是逐對列出的 hkeys key #僅獲取xxx鍵中所有字段名 hvals key #僅獲取xxx鍵中所有字段值四、set數(shù)據(jù)類型(無序集合)
- 概述:無序集合,元素類型為String類型,元素具有唯一性,不允許存在重復的成員。多個集合類型之間可以進行并集、交集和差集運算。
應用范圍:
- 可以使用Redis的Set數(shù)據(jù)類型跟蹤一些唯一性數(shù)據(jù),比如訪問某一博客的唯一IP地址信息。對于此場景,我們僅需在每次訪問該博客時將訪問者的IP存入Redis中,Set數(shù)據(jù)類型會自動保證IP地址的唯一性。
- 充分利用Set類型的服務端聚合操作方便、高效的特性,可以用于維護數(shù)據(jù)對象之間的關(guān)聯(lián)關(guān)系。比如所有購買某一電子設備的客戶ID被存儲在一個指定的Set中,而購買另外一種電子產(chǎn)品的客戶ID被存儲在另外一個Set中,如果此時我們想獲取有哪些客戶同時購買了這兩種商品時,Set的intersections命令就可以充分發(fā)揮它的方便和效率的優(yōu)勢了。
1、sadd / smembers / scard / sismember
sadd key member #將一個或多個成員元素加入到集合中,已經(jīng)存在于集合的成員元素將被忽略。假如集合 key 不存在,則創(chuàng)建一個只包含添加的元素作成員的集合 smembers key #通過smembers命令查看插入的結(jié)果,輸出的順序與插入順序無關(guān) scard key #獲取集合中成員的數(shù)量 sismember key member #判斷鍵中xxx成員是否存在,返回0表示不存在,1表示存在2、spop / srem / srandmember / smove
spop key #隨機的移除并返回鍵中的某一成員 srem key member1 member1 ... #從鍵中移出member成員,并返回移出成員個數(shù) srandmember key #該命令隨機的返回某一成員 smove source destination member #將source的member成員移到destination,成功返回1,失敗返回0五、Sorted Set數(shù)據(jù)類型(zset、有序集合)
- 概述:
a、有序集合,元素類型為Sting,元素具有唯一性,不能重復。
b、每個元素都會關(guān)聯(lián)一個double類型的分數(shù)score(表示權(quán)重),可以通過權(quán)重的大小排序,元素的score可以相同。
應用范圍:
- 可以用于一個大型在線游戲的積分排行榜。每當玩家的分數(shù)發(fā)生變化時,可以執(zhí)行ZADD命令更新玩家的分數(shù),此后再通過ZRANGE命令獲取積分TOP10的用戶信息。當然我們也可以利用ZRANK命令通過username來獲取玩家的排行信息。最后我們將組合使用ZRANGE和ZRANK命令快速的獲取和某個玩家積分相近的其他用戶的信息。
- Sorted-Set類型還可用于構(gòu)建索引數(shù)據(jù)。
1、zadd / zcard / zcount / zrem / zincrby / zscore / zrank
zadd key [NX|XX] [CH] [INCR] score member [score member ...] #將一個或多個成員元素及其分數(shù)值加入到有序集當中 zrange key start stop [withscores] #查看成員;加withscores可顯示成員加分數(shù) zcard key #獲取鍵中成員的數(shù)量 zcount key min max #分數(shù)滿足表達式x <= score <= x的成員的數(shù)量 zrem key member [member ...] #刪除成員xxx、xxx,返回實際刪除成員的數(shù)量 zincrby key increment member #成員xxx不存在,zincrby命令將添加該成員并假設其初始分數(shù)為0 zscore key member #獲取成員xxx的分數(shù) zrank key member #獲取成員xxx的位置索引值2、zrangebyscore / zremrangebyrank /zremrrangebyscore
zrangebyscore key min max #獲取分數(shù)滿足表達式x <= score <= x的成員zrangebyscore key -inf +inf limit 2 3 #-inf表示第一個成員(位置索引值最低的,即1),+inf表示最后一個成員(位置索引值最高的), limit后面的參數(shù)用于限制返回成員的值,2表示從位置索引等于2的成員開始,取后3個成員。zremrangebyrank key start stop #刪除位置索引滿足表達式x <= rank <= x的成員。 zremrangebyscore key min max #刪除分數(shù)滿足表達式x <= score <= x的成員,并返回實際刪除的數(shù)量。3、zrevrange / zrevrangebyscore / zrevrank
zrevrange key start stop [withscores] #以位置索引從高到低的方式獲取并返回此區(qū)間內(nèi)的成員 zrevrangebyscore key max min #獲取分數(shù)滿足表達式x >= score >= x 的成員,并以從高到底的順序輸出。 zrevrank key member #獲取成員索引小結(jié)
String數(shù)據(jù)類型查詢數(shù)據(jù): get lrangeList數(shù)據(jù)類型查詢數(shù)據(jù): lrangeHash數(shù)據(jù)類型(散列類型)查詢數(shù)據(jù): hmget:獲取指定多個字段值 hgetall:返回xxx鍵的所有字段及其值,是逐對列出的 hkeys:僅獲取xxx鍵中所有字段名 hvals:僅獲取xxx鍵中所有字段值set數(shù)據(jù)類型(無序集合)查詢數(shù)據(jù): smembers:通過smembers命令查看插入的結(jié)果,輸出的順序與插入順序無關(guān)Sorted Set數(shù)據(jù)類型(zset、有序集合)查詢數(shù)據(jù): zrange總結(jié)
以上是生活随笔為你收集整理的Redis数据库(二)——数据类型的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 电脑速度提升秘籍:四核处理器+12G内存
- 下一篇: 颠覆传统!全新ddr4 8g内存震撼发布