Redis | Redis五大常用數(shù)據(jù)類型及命令

一、五大常用數(shù)據(jù)類型

String、Hash、List、Set、Zset

  • Hash是一個鍵值對集合,適合用于存儲對象,類似于Java里面的Map
  • List是簡單的字符串列表,可以添加一個元素到列表的頭部或者尾部,底層實際是個鏈表
  • Zset與set相比的區(qū)別是每個元素都會關(guān)聯(lián)一個double類型的分?jǐn)?shù),通過分?jǐn)?shù)來為集合中的成員進(jìn)行從小到大的排序,Zset的成員是唯一的,但分?jǐn)?shù)卻可以重復(fù)

二、常用命令

1、key

  • keys *:查詢所有key
  • exists key(名字):查看某個key是否存在
  • move key(名字) db:移除db庫的某個key
  • expire key(名字) seconds(秒):為給定的key設(shè)置過期時間
  • ttl key(名字):查詢還有多少秒過期,-1表示永不過期,-2表示已過期
  • type key(名字):查看某個key是什么類型

2、字符串(String)

  • set k1 v1/get k1:設(shè)置k1為v1 / 獲取k1
  • del s1:刪除s1
  • append k1 v1:在k1后面插入v1(原來的值還在)
  • strlen k1:獲取k1的長度
  • incr k1/decr k1/incrby k1 num/decrby k1 num:遞增/遞減/增num/減num(必須要是數(shù)字)
  • getrange k1 s e:獲取k1中s到e范圍的值,如果是-1則到尾部
  • setrange k1 s value:在索引值為s開始的值覆蓋為value(范圍覆蓋)
  • setex k1 s v:為k1賦值v并設(shè)置能存活s秒
  • setnx k1 v1:如果不存在才設(shè)置值,存在則設(shè)置失敗
  • mset k1 v1 k2 v2....:批量設(shè)值
    例如mset k1 v1 k2 v2 k3 v3,給k1,k2,k3設(shè)值為v1,v2,v3
  • mget k1(鍵) k2(鍵)...:批量獲取
    例如mget k1 k2 k3,分別獲取key為k1,k2,k3的值
  • msetnx k1 v1 k2 v2...:批量設(shè)值,但是如果其中有一個已經(jīng)存在,那則全部都不會設(shè)置成功

3、List

  • lpush 鍵 值1 值2...:在一個鍵為list里面插入值(后進(jìn)先出),即放在頂部
  • lrange 鍵 [范圍]:在一個范圍內(nèi)取出鍵的值
    例如lrange list01 0 3取出list01中0-3的值
  • rpush 鍵 值1 值2...:在一個鍵為list里面插入值(先進(jìn)先出),即放在底部
  • lpop 鍵:彈出頂部的值
  • rpop 鍵:彈出底部的值
  • lindex 鍵 索引:按照索引下標(biāo)獲得元素(從上到下)
    例如現(xiàn)在有一個list01是2,3,4。則lindex list01 2結(jié)果為4,lindex list01 1結(jié)果為3。
  • llen 鍵:獲取長度
  • lrem 鍵 n value:刪除n個value
    例如lrem list01 2 3意思是在list01中刪除2個value為3的。
  • ltrim key sindex eindex:截取key中從sindex開始到eindex結(jié)束的值,再賦值給key
  • rpoplpush 源列表 目的列表:從源列表中的底部彈出一個值再放入目的列表的頂部
  • lset key index value:對key的索引為index的值改為value
  • linsert key before/after 值1 值2:在值1的前面/后面插入值2
    例如linsert list01 before x java在x的前面插入java

4、集合(Set)

  • sadd key value1 value2 value3:在key的集合中添加值(value1,value2,value3),值不允許重復(fù)
  • smembers key:取出key集合中的所有值
  • sismember key value:查看key集合中是否有值為value的
  • scard key:獲取key集合中元素個數(shù)
  • srem key value1:刪除key集合中值為value1的元素
  • srandmember key num:在key集合中隨機(jī)出num個數(shù)值
  • spop key:在key集合中隨機(jī)出棧
  • smove key1 key2 value:將key1里的值為value的賦給key2
  • 數(shù)學(xué)集合類:差集(sdiff)、交集(sinter)、并集(sunion)
    差集 set1 set2:在第一個set里面而不在后面任何一個set里面的值

5、Hash

  • hset 某個哈希 key1 value1:在某個哈希中插入一個鍵值對
  • hget 某個哈希 key1:在某個哈希中獲取鍵為key1的值
  • hmset 某個哈希 key1 value1 key2 value2 ...:批量插入鍵值對
  • hmget 某個哈希 key1 key2 ...:批量獲取鍵值對
  • hgetall 某個哈希:獲取某個哈希里面所有的鍵值對
  • hdel 某個哈希 key:刪除某個哈希里面鍵為key的值
  • hlen 某個哈希:獲取長度
  • hexists 某個哈希 key:查看某個哈希中是否存在鍵為key的
  • hkeys 某個哈希:獲取某個哈希里面所有的key
  • hvals 某個哈希:獲取某個哈希里面所有的value
  • hincrby 某個哈希 key num:將某個哈希里面鍵為key的值遞增num
  • hincrbyfloat 某個哈希 key num:將某個哈希里面鍵為key的值遞增num(浮點數(shù))
  • hsetnx 某個哈希 key value:如果不存在key才插入

6、Zset

在set基礎(chǔ)上加上一個score值,之前set是k1 v1 v2 v3,現(xiàn)在zset是k1 score1 v1 score2 v2。

  • zadd zset1 score1 value1 score2 value2 ...:在zset1中批量添加值。
  • zrange zset1 index end:從index到end獲取zset1中的所有值(沒有score),如果end是-1則表示所有
  • zrange zset1 index end withscores: 從index到end獲取zset1中的所有值(有score),如果end是-1則表示所有
  • zrangebyscore zset1 sscore escore:從zset1中獲取分?jǐn)?shù)為sscore到escore的值,如果在分?jǐn)?shù)前加(則表示不包含,沒加則表示包含該分?jǐn)?shù),還可以加上limit index num從結(jié)果集里面的第index個開始來截取num個
  • zrem zset1 某score下對應(yīng)的value值:刪除元素
  • zcard zset1:獲取zset1的數(shù)量(值和分?jǐn)?shù)是為一體的,即只算一個)
  • zcount zset1 score區(qū)間:獲取zset在score區(qū)間內(nèi)的數(shù)量
    例如zcount zset1 60 80獲取zset在60-80分里面的數(shù)量
  • zrank zset1 value:獲取zset1的value對應(yīng)的下標(biāo)
  • zscore zset1 value:獲取zset1的value對應(yīng)的分?jǐn)?shù)
  • zrevrank zset1 value:逆序獲取zset1的value對應(yīng)的下標(biāo)
  • zrevrange zset1 s e:逆序獲取zset1從s到e的值,e如果為-1表示獲取到結(jié)尾
  • zrevrangebycore zset1 score1 score2:逆序獲取zset1的分?jǐn)?shù)范圍在score1到score2(score1大于score2)的值
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容