redis的基本操作整理

概念

Redis (Remote Dictionary Server) is an in-memory data structure project implementing a distributed, in-memory key-value database with optional durability

redis基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)

redis作為key-value數(shù)據(jù)庫(kù),key都是字符串,value則為以下數(shù)據(jù)結(jié)構(gòu)其中之一

  1. string 字符串
  2. list 列表
  3. set 集合
  4. hash 哈希
  5. zset 有序集合

redis常用命令

db操作

redis由多個(gè)db構(gòu)成,默認(rèn)有0~15號(hào)db

操作 命令 說(shuō)明
選定db select db select 1表示選定1號(hào)數(shù)據(jù)庫(kù)
獲取db存儲(chǔ)的key總數(shù) dbsize 返回整數(shù)
清空當(dāng)前db的數(shù)據(jù) flushdb 謹(jǐn)慎使用
清空所有db的數(shù)據(jù) flushall 謹(jǐn)慎使用!!

key操作

db中可以有很多key

操作 命令 示例 說(shuō)明
給key賦值(不同的數(shù)據(jù)類(lèi)型有不同的方式,用字符串類(lèi)型來(lái)舉例說(shuō)明) set key value set myname jack 通常返回OK
是否存在key exists key exists myname 存在=1,不存在=0
刪除key del key del myname 成功=1,失敗=0
查看key的數(shù)據(jù)類(lèi)型 type key type myname string/list/hash/set/zset...
設(shè)置key過(guò)期時(shí)間(單位:秒) expire key n expire myname 100 n<=0時(shí),key會(huì)馬上過(guò)期
查看key剩余有效時(shí)間 ttl key ttl myname -2=key不存在,-1=key無(wú)過(guò)期時(shí)間
模式匹配符合規(guī)則的key keys pattern keys my_* keys *查看所有key名

string 字符串

  • 最常用(最簡(jiǎn)單)的數(shù)據(jù)結(jié)構(gòu)
  • value通常是普通字符串或序列化后的對(duì)象(也是字符串)
操作 命令 示例 說(shuō)明
給key賦值 set key value set myname jack 通常返回OK
給多個(gè)key賦值(減少網(wǎng)絡(luò)傳輸次數(shù)) mset key1 val1 key2 val2 ... mset myname jack hisname john 通常返回OK
獲取key的值 get key get myname val字符串 / (nil)空值
獲取多個(gè)key的值 mget key1 key2 ... mget myname hisname val字符串 / (nil)空值
使key的值+1并返回(value不為數(shù)字時(shí),會(huì)報(bào)錯(cuò)。key未定義,則賦值1并返回) incr key incr age 返回增加后的數(shù) / 報(bào)錯(cuò)原因
使key的值-1并返回(key未定義,則賦值-1并返回) decr key decr money 返回增加后的數(shù) / 報(bào)錯(cuò)原因
使key的值+N并返回 incrby key num incrby money 100 返回增加后的數(shù) / 報(bào)錯(cuò)原因
使key的值-N并返回 decrby key num decrby money 50 返回增加后的數(shù) / 報(bào)錯(cuò)原因
key的值的字符串長(zhǎng)度 strlen key strlen myname type=string時(shí)=長(zhǎng)度 / type=none時(shí)=0 / type=其他時(shí)=報(bào)錯(cuò)
往key的值后追加字符串 append key str append myname happy type=string/none 追加 , type=其他 報(bào)錯(cuò)
截取key對(duì)應(yīng)的字符串返回(不會(huì)改變?cè)?,start和end是閉區(qū)間,且支持負(fù)數(shù)) substr key start end substr money 0 -3 超過(guò)范圍不會(huì)報(bào)錯(cuò)
獲取key用二進(jìn)制表示的第n位(0或1) getbit key n getbit myname 2 -
設(shè)置key用二進(jìn)制表示的第n位(0或1) setbit key n val setbit myname 3 1 val=0/1,否則會(huì)報(bào)錯(cuò)
獲取key中的范圍內(nèi)所有字符用二進(jìn)制表示時(shí)的1的個(gè)數(shù)(閉區(qū)間) bitcount key start end bitcount myname 2 3,start/end可以為空,表示整個(gè)字符串 -

list 列表

  • 雙向鏈表結(jié)構(gòu),兩端插入刪除速度快,查詢?cè)芈?/li>
操作 命令 示例 說(shuō)明
從key左邊(逐個(gè))插入元素 lpush key val1 val2 ... lpush namelist jack john bob 通常返回正數(shù)表示成功,正數(shù)=插入元素個(gè)數(shù)
從key右邊(逐個(gè))插入元素 rpush key val1 val2 ... rpush namelist jack john bob 通常返回正數(shù)表示成功,正數(shù)=插入元素個(gè)數(shù)
從key左邊彈出元素 lpop key lpop namelist 彈出元素,如果key對(duì)應(yīng)的是null值,則彈出(nil)空值
從key右邊彈出元素 rpop key rpop namelist 彈出元素,如果key對(duì)應(yīng)的是null值,則彈出(nil)空值
key中元素個(gè)數(shù) llen key llen namelist -
獲取key中元素范圍(不會(huì)改變key,start和end是閉區(qū)間,且支持負(fù)數(shù)) lrange namelist start end lrange namelist 2 5 空時(shí)返回(empty list or set)
改變key中元素,只保留范圍內(nèi)元素 ltrim key start end ltrim namelist 1 2 返回OK表示成功
獲取key的第n個(gè)元素 lindex key n lindex namelist 2 返回該元素 / (nil)空值

hash 哈希

操作 命令 示例 說(shuō)明
賦值key中的field hset key field val hset myattr age 10 初次創(chuàng)建返回1,否則(修改)返回0
獲取key的field對(duì)應(yīng)的值 hget key field hget myattr age 返回該元素 / (nil)空值
為key的field設(shè)置多個(gè)值 hmset key f1 val1 f2 val2 hmset myattr eyes big mouth small 通常返回OK
從key中取多值 hmget key f1 f2 ... hmget myattr f1 f2 f3 返回結(jié)果列表
獲取key的所有字段和所有值 hgetall key hgetall myattr 返回key和value,每個(gè)元素都是一行
取所有字段名 hkeys key hkeys myattr 返回key,每個(gè)元素都是一行
取所有數(shù)據(jù)值 hvals key hvals myattr 返回value,每個(gè)元素都是一行
獲取字段長(zhǎng)度 hlen key hlen myattr key-value對(duì)的個(gè)數(shù)
刪除字段 del key field1 field2 del myattr xxx yyy 刪除元素個(gè)數(shù)
字段是否存在 hexists key field hexists myattr k3 存在=1,不存在=0
當(dāng)字段存在的時(shí)候賦值(相當(dāng)于exists+hset,但是是原子操作) hsetnx key field val hsetnx myattr k3 aa 設(shè)置成功=1,已存在=0

set 集合

操作 命令 示例
往key中增加值 sadd key val1 val2 sadd flag red blue 成功增加的元素個(gè)數(shù)(>=0)
刪除key中的值 srem key val1 val2 srem flag red blue 成功刪除的元素個(gè)數(shù)(>=0)
獲取key中所有元素 smembers key smembers flag 返回列表
判斷某個(gè)元素是否在key的元素中 sismember key val sismember flag green 存在=1,不存在=0
key中元素個(gè)數(shù) scard key scard flag 元素個(gè)數(shù)
隨機(jī)彈出一個(gè)元素 spop key spop flag 元素值
隨機(jī)返回n個(gè)元素(負(fù)數(shù)表示可重復(fù),正數(shù)表示不重復(fù)) srandmember key count srandmember flag -2 元素列表
差集 sdiff key1 key2 ... sdiff f1 f2 f3 元素列表
交集 sinner key1 key2 ... sinner f1 f2 f3 元素列表
并集 sunion key1 key2 ... sunion f1 f2 f3 元素列表

zset 有序集合

操作 命令 示例
往key中增加值 zadd key score1 val1 score2 val2 zadd zflag 100 red 90 blue 成功增加的元素個(gè)數(shù)(>=0)
刪除key中的值 zrem key val1 val2 zrem zflag red blue 成功刪除的元素個(gè)數(shù)(>=0)
獲取分?jǐn)?shù) zscore key val zrem zflag red 分?jǐn)?shù)
key中元素個(gè)數(shù) zcard key zcard zflag 元素個(gè)數(shù)
指定分?jǐn)?shù)范圍內(nèi)的元素個(gè)數(shù)(默認(rèn)是閉區(qū)間,加上(可以轉(zhuǎn)成開(kāi)區(qū)間) zcount key min max zcount zflag (85 (90 元素個(gè)數(shù)
升序獲取key中排名范圍內(nèi)的元素 zrange key start end [withscores] zrange zflag 0 -3 withscores withscores參數(shù)表示同時(shí)返回分?jǐn)?shù),分?jǐn)?shù)相等時(shí),按key字典序
降序獲取key中排名范圍內(nèi)的元素 zrevrange key start end [withscores] zrevrange zflag 0 2 -
升序獲取key中分?jǐn)?shù)范圍內(nèi)的元素 zrangebyscore key min max [withscores] [limit offset count] zrangescore zflag 90 100 limit 3 1 升序的時(shí)候,先min后max,limit后接偏移量和獲取的行數(shù)
降序獲取key中分?jǐn)?shù)范圍內(nèi)的元素 zrevrangebyscore key max min [withscores] [limit offset count] zrevrangescore zflag 110 100 limit 3 1 降序的時(shí)候,先max后min,limit后接偏移量和獲取的行數(shù)
獲取key中某分?jǐn)?shù)范圍內(nèi)的元素個(gè)數(shù) zcount key min max zcount zflag 100 110 元素個(gè)數(shù)
獲取key中某個(gè)元素的升序排名 zrank key value zrank zflag red 從0開(kāi)始算
獲取key中某個(gè)元素的降序排名 zrevrank key value zrevrank zflag red -
刪除key中某個(gè)元素 zrem key val1 val2 zrem zflag red blue 成功刪除的元素個(gè)數(shù)(>=0)
刪除key中某個(gè)排名范圍的元素 zremrangebyrank key start end zremrangebyrank zflag 0 1 成功刪除的元素個(gè)數(shù)(>=0)
刪除key中某個(gè)分?jǐn)?shù)范圍元素 zremrangebyscore key min max zremrangebyscore zflag 90 100 成功刪除的元素個(gè)數(shù)(>=0)
?著作權(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)容

  • Redis的內(nèi)存優(yōu)化 聲明:本文內(nèi)容來(lái)自《Redis開(kāi)發(fā)與運(yùn)維》一書(shū)第八章,如轉(zhuǎn)載請(qǐng)聲明。 Redis所有的數(shù)據(jù)都...
    meng_philip123閱讀 19,081評(píng)論 2 29
  • NOSQL類(lèi)型簡(jiǎn)介鍵值對(duì):會(huì)使用到一個(gè)哈希表,表中有一個(gè)特定的鍵和一個(gè)指針指向特定的數(shù)據(jù),如redis,volde...
    MicoCube閱讀 4,168評(píng)論 2 27
  • 參考來(lái)源 Redis的內(nèi)存優(yōu)化 Redis所有的數(shù)據(jù)都在內(nèi)存中,而內(nèi)存又是非常寶貴的資源。對(duì)于如何優(yōu)化內(nèi)存使用一直...
    秦漢郵俠閱讀 1,374評(píng)論 0 2
  • 聲明:本文內(nèi)容來(lái)自《Redis開(kāi)發(fā)與運(yùn)維》一書(shū)第八章,如轉(zhuǎn)載請(qǐng)聲明。Redis所有的數(shù)據(jù)都在內(nèi)存中,而內(nèi)存又是非常...
    yoqu閱讀 1,623評(píng)論 0 2
  • 記得老葉總喜歡說(shuō)等她兩個(gè)小孩都上學(xué)了她要怎么樣怎么樣,小鳳也是二胎后算是告別職場(chǎng)生涯了。是啊,都說(shuō)女人結(jié)婚生子后...
    谷幽_yan閱讀 231評(píng)論 0 0

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