Redis基礎(chǔ)講解2(常用命令的使用)

1. redis的五大數(shù)據(jù)類(lèi)型

  • String(字符串): String 是redis最基本的數(shù)據(jù)類(lèi)型,一個(gè)key對(duì)應(yīng)一個(gè)value;String是二進(jìn)制安全的;’redis的String可以包含任何的數(shù)據(jù)(jpg圖像和序列化的對(duì)象等都可以包含);注意:一個(gè)redis中的字符串value最多可以存512M
  • Hash(哈希,類(lèi)似Map): redis hash是一個(gè)鍵值對(duì)集合;是一個(gè)String類(lèi)型的field和value的映射表 ,hash適合用于存儲(chǔ)對(duì)象;類(lèi)似Java里面的Map<String,Object>
  • List(列表): redis列表是簡(jiǎn)單的字符串列表,按照插入的順序排序,可以添加一個(gè)元素到列表的頭或者尾(注意:列表的底層是鏈表
  • Set(集合): Set是String類(lèi)型的無(wú)序無(wú)重復(fù)的集合。他是通過(guò)HashTable實(shí)現(xiàn)的。
  • Zset(sorted set: 有序集合): 和Set一樣無(wú)重復(fù)集合,不同的是每個(gè)元素都會(huì)關(guān)聯(lián)一個(gè)double類(lèi)型的分?jǐn)?shù)score;redis正式通過(guò)分?jǐn)?shù)為集合中的成員進(jìn)行從小到大的排序。Zset的成員是唯一的,但score卻是可以重復(fù)的。

2. redis鍵(key)

  • keys *: 列出所有的key
  • exists key : 判斷某個(gè)key是否存在
  • move key db:將某個(gè)key移動(dòng)到某個(gè)庫(kù)去,例如move hello 7 將key為hello的這個(gè)key 移動(dòng)到第8號(hào)庫(kù)。
  • expire key 秒鐘 :為給定的key設(shè)置過(guò)期時(shí)間
  • ttl key:查看還有多少秒過(guò)期(-1表示永不過(guò)期,-2表示已過(guò)期)
  • type key:查看key是什么類(lèi)型
  • del key:刪除key

3. redis字符串(String:?jiǎn)沃祮蝪alue)

  • set key value:設(shè)置key;
    get key :獲取key;
    del key: 刪除key;
    append key value: 追加;
    strlen key: 獲取key的長(zhǎng)度
  • incr key:值為數(shù)字的value+1;
    decr key:值為數(shù)字的value-1;
    incrby key 增長(zhǎng)值:值為數(shù)字的value+增長(zhǎng)值;
    decrby key 增長(zhǎng)值:值為數(shù)字的value-增長(zhǎng)值;
    注意:如果value不是數(shù)字,那么執(zhí)行這四個(gè)命令將報(bào)錯(cuò)
  • getrange:獲取指定區(qū)間的字符串;如getrange key 0 -1: 表示獲取key對(duì)應(yīng)的value與get key一樣,getrange key 0 3則是獲取這個(gè)key對(duì)應(yīng)的value的0-3個(gè)字符,包括第三個(gè),也就是說(shuō)輸出的是4個(gè)字符;
    setrange: 用來(lái)替換字符;如setrange key 0 111: 表示從0個(gè)位置開(kāi)始替換value的值,替換前三個(gè)為111。如果此key的value是qwert,那么執(zhí)行了setrange key 0 111命令以后value就變成了 111rt。
  • setex key 秒 value : 設(shè)置key的同時(shí)為其設(shè)置過(guò)期時(shí)間;如setex abc 10 sssss設(shè)置key為abc,value為sssss的數(shù)據(jù)過(guò)期時(shí)間為10秒鐘
    setnx key value: 如果key不存在則插入key和value,如果key存在則不進(jìn)行插入,防止覆蓋
  • mset key1 value1 key2 value2 key3 value3 ...批量設(shè)置key和value的值
    mget key1 key2 key3...批量獲取key的值
    msetnx key1 value1 key2 value2 key3 value3 ...如果有一個(gè)key已經(jīng)存在,那么這個(gè)命令將不會(huì)把數(shù)據(jù)插進(jìn)去,如果key都不存在才會(huì)把所有的都插進(jìn)去。

4. redis列表(List :?jiǎn)沃刀鄓alue)

  • lpush key value1 value2 value3 ... valuen 從左邊添加(先進(jìn)后出)
    rpush key value1 value2 value3 ... valuen 從右邊添加(先進(jìn)先出)
    lrange key 0 -1 將key所有的value都列出,如果是lpush的,列出的順序應(yīng)該是valuen ... value3 value2 value1;如果是rpush 的,列出的順序?qū)⑹牵簐alue1 value2 value3 ... valuen

  • lpop key :取棧頂?shù)脑爻鰲?br> rpop key:取棧底的元素出棧

  • lindex key 下標(biāo):按照索引的下標(biāo)獲取元素,從上往下獲取的

  • llen key:獲取這個(gè)key的value的長(zhǎng)度

  • lrem key n個(gè) value:刪除list中的n個(gè)value;如lrem list1 3 ttt就是將list1中value為ttt的刪除掉3個(gè)。如下圖:

    lrem.png

  • ltrime key 起始值 終止值 :將key中的value從起始值開(kāi)始,到終止值結(jié)束截取出來(lái)重新賦值給key;如下圖:

    ltrime.png

  • rpoplpush 源list 目的list 將源list的棧底元素移動(dòng)到目的list的棧頂中去,如下圖:

    rpoplpush .png

  • lset key index value 給index位置的值重新賦值為value

  • linsert key before/after value 值 :在value前面或者后面插入一個(gè)值

5. redis集合(Set:?jiǎn)沃刀鄓alue)

  • sadd key value1 value2 value3 ... valuen 新增set集合(重復(fù)的數(shù)據(jù)會(huì)過(guò)濾掉)
    smembers key 查看所有的value
    sismember key value: 在key這個(gè)集合中是否存在value這個(gè)值
  • scard key: 獲取集合里面的元素個(gè)數(shù)
  • srem key value : 刪除集合中的某個(gè)value
  • srandmember key :整數(shù)n:在key這個(gè)集合中隨機(jī)的出n個(gè)value(用來(lái)抽獎(jiǎng))
  • spop key :隨機(jī)出棧
  • smove key1 key2 key1里面的某個(gè)值:將key1里面的某個(gè)值移到key2中去
  • sdiff key1 key2 : 獲取key1和key2 的差集(在key1中并且不在key2中的值)
  • sinter key1 key2: 獲取key1和key2的交集(在key1中并且又在key2中的值)
  • sunion key1 key2: 獲取key1和key2的并集(在key1中或者在key2中的值)

6. redis哈希(hash:KV模式不變,但是V是一個(gè)鍵值對(duì)《重要》)

  • hset key field value;:新增key下面的field下的value值
    hget key field:獲取key下面的field的值
    hmset key field value [file value ....]:批量新增key下面的field的值
    hmget key field [field ...] : 批量獲取多個(gè)key
    hgetall key:獲取key下面的所有值
    hdel key field [field ...]:刪除key下面的field,可以刪除多個(gè);如下圖:
    set1.png
  • hlen key 獲取這個(gè)這個(gè)key有多少個(gè)屬性
  • hexists key field: 判斷這個(gè)field是否在這個(gè)key里面
  • hkeys key:列出key下的所有field
  • hvals key:列出key下所有的value
  • hincrby key field 整數(shù)n :給field的value增加n(只能給整數(shù)遞增)
  • hincrbyfloat key field 小數(shù)n:給field的value增加小數(shù)n(只能給小數(shù)增加)
  • hsetnx key field value : 給key增加一個(gè)不存在的field,如果存在此field,將不能新增,可以防止覆蓋

7. redis有序集合Zset(sorted set:在set的基礎(chǔ)上加了一個(gè)score值)

  • zadd key score value[score value]: 新增一個(gè)zset集合,score是排序的值
  • zrange key 0 -1: 查詢(xún)所有的value值
  • zrange key 0 -1 withscores : 查詢(xún)所有value并且攜帶score
  • zrangebyscore key min max: 查詢(xún)score在min 和max之間的所有value,包含min和max
  • zrangebyscore key (min (max加了'('這個(gè)符號(hào)后,就是不包含
  • zrangebyscore key min max limit offset count:表示score在min和max之前的并且從offset開(kāi)始查詢(xún)count條,limit相當(dāng)于mysql的分頁(yè)
  • zrem key value:刪除value這個(gè)元素
  • zcard key: 統(tǒng)計(jì)value的個(gè)數(shù)
  • zcount key min max :統(tǒng)計(jì)在min-max區(qū)間的個(gè)數(shù)
  • zrank key value : 獲得value的下標(biāo)值
  • zscore key value : 獲得value的score值
  • zrevrank key value: 逆序獲得下標(biāo)值
  • zrevrange key 0 -1:逆序輸出所有的value
  • zrevrangebyscore key max min:獲取min-max區(qū)間的所有value并倒序輸出
    如下圖所示:
    zset1.png
    zset2.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • 轉(zhuǎn)自:http://bbs.redis.cn/forum.php?mod=viewthread&tid=481 p...
    木十2036閱讀 1,192評(píng)論 0 7
  • 最近學(xué)習(xí)redis,記錄一下 redis官網(wǎng):redis.io 中文官網(wǎng):http://www.redis.net...
    alexpdh閱讀 1,979評(píng)論 0 1
  • Redis::__construct構(gòu)造函數(shù)$redis = new Redis(); connect, open...
    bycall閱讀 1,563評(píng)論 0 2
  • 本文為筆者對(duì)在學(xué)習(xí)Redis過(guò)程中所收集資料的一個(gè)總結(jié),目的是為了以后方便回顧相關(guān)的知識(shí),大部分為非原創(chuàng)內(nèi)容。特此...
    EakonZhao閱讀 14,639評(píng)論 0 9
  • phpredis是php的一個(gè)擴(kuò)展Redis::__construct構(gòu)造函數(shù)$redis = new Redis...
    hello大象閱讀 806評(píng)論 0 2

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