Redis幾種常用數(shù)據(jù)類型的命令及使用場景

KEY常用命令

????exists key 測試指定key是否存在

????del key1 key2? 刪除指定key

????type key 返回給定key的value類型

????keys pattern 返回匹配指定模式的所有key(例:keys class*;返回classa,classb,classc)

????rename okey nkey 改名

????dbsize? 返回當(dāng)前數(shù)據(jù)庫的key數(shù)量

????expire key seconds 為key指定過期時間

????ttl key 返回key剩余過期秒數(shù)(Time To Live)不存在返回-2,永不過期返回-1

????select db-index 選擇數(shù)據(jù)庫(共16個)

????move key db-index? 移動到指定數(shù)據(jù)庫

????flushdb 刪除當(dāng)前數(shù)據(jù)庫中所有key

????flushall 刪除所有數(shù)據(jù)庫的所有key

????get keyname? 獲取指定key的值

STRING

????1 string是redis最基本的類型

????2 redis的string可以包含任何數(shù)據(jù),包括jpg圖片或者序列化的對象。

????3 單個value值最大1G字節(jié)。

????4 如果只用string,redis就可以看做被加上持久化特性的memcache。

????set? ? key value? ? ? ? ? 設(shè)置key對應(yīng)的值為string類型的value

????mset? key1 value1 key2 value2 ...? 批量設(shè)置

????mget? key1 key2 ...? ? ? 批量獲取

????incr? key? ? ? ? ? ? ? ? 加加操作,并返回新的值

????decr? key? ? ? ? ? ? ? ? 減減操作,并返回新的值

????incrby key [integer]? ? ? 同incr,加指定值

????decrby key [integer]? ? ? 同decr,減指定值

? ? append key value? ? ? ? ? 給指定的key追加value

????substr key [start] [end]? 返回截取過得key的字符串值

? ? *當(dāng)加減創(chuàng)建的值不存在,會自動創(chuàng)建,做0

LIST

????list 類型其實就是一個雙向鏈表。通過push,pop操作從鏈表的頭部或者尾部添加刪除元素。既可以作棧(先進后出),也可以用作隊列(先進先出)。

????lpush? key string? ? 在key對應(yīng)的list的頭部添加字符串元素

????rpush? key string? ? 在尾部添加

????lpop? key? ? ? ? ? 在list的頭部刪除元素,并返回刪除元素

????rpop? key? ? ? ? ? 從list的尾部刪除元素,并返回刪除元素

????llen? key? ? ? ? ? 返回key對應(yīng)list的長度,key不存在返回0,如果key對應(yīng)類型不是list返回錯誤

????lrange key start end 返回指定區(qū)間內(nèi)的元素

????ltrim? key start end 截取list,保留指定區(qū)間元素

SET

????redis的set是string類型的無序結(jié)合

????set元素最大可以包含(2的32次方-1)個元素

????set集合類型除了基本的添加刪除操作,其他有用的操作還包括集合的取并集(union),交集(intersection),差集(difference)。通過這些可以很容易實現(xiàn)sns(社交網(wǎng)絡(luò)平臺)中的好友推薦功能,不允許有重復(fù)元素。

????sadd key member? ? ? ? 添加一個string元素到key對應(yīng)的set集合中,成功則返回1,如果元素已經(jīng)在集合中返回0,key對應(yīng)的set集合不存在返回錯誤

????srem key member [member]? 從key對應(yīng)的set集合中移除給定元素,成功返回1

????smove p1 p2 member ? 將p1所屬set中的member移動到p2所屬的set中

????scard key? ? 返回set的元素個數(shù)

????sismember key member ? 判斷member是否在set中

????sinter key1 key2 ... ? 取所有給定key的交集(intersection)

????sunion key1 key2 ... ? 取所有給定key的并集

????sdiff? key1 key2 ... ? 取所有給定key的差集

????smembers key ? 返回對應(yīng)set的所有元素,結(jié)果是無序的

ZSET

????和set不同的是每個元素都會關(guān)聯(lián)一個權(quán),通過權(quán)值可以有序的獲取集合中的元素

????zadd key [score] [member] 添加元素到集合,元素在集合中存在則更新對應(yīng)score(即權(quán)值),權(quán)值相等,先入為大

????zrem key member 刪除指定元素,成功返回1,不存在返回0

????zincrby key incr member 按照incr幅度增加對應(yīng)member的score值,返回score值

????zrank key member 返回指定元素在集合中的排名,集合中元素是按照score從小到大排序

????zrevrank key member ? ? ? ? 同上,按照從大到小排序

????zrange key start end 從集合中取指定區(qū)間的元素,返回有序結(jié)果

????zrevrange key start end 返回結(jié)果按照score逆序

????zcard key 返回集合中元素個數(shù)

????zscore key element 返回給定元素對應(yīng)的score

????zremrangerank key min max 刪除集合中排名在給定區(qū)間的元素,通過score從小到大(remove range rank)

????例子:

????zadd test 1 zhangsan

????zadd test 2 lisi

????zrange test 0 1

????zhangsan

????lisi

????因為不允許重復(fù)的成員,可以用來做排行榜。

HASH

????主要用來解決對象存儲需要序列化和反序列化的開銷,或者存為多條數(shù)據(jù)的內(nèi)存開銷。哈??梢灾苯佑胟ey加field進行存儲如姓名,年齡一些信息,而且可以只針對其中一條進行更改。

????hset key field value? ? 設(shè)置hash->field的值為value,如果key不存在,則先創(chuàng)建

????hget key field? 獲取指定的hashfield

????hmget key field1...? ? 批量獲取

????hmset key field1 value1 field2 value2 批量設(shè)置

????hincrby key field integer 將指定key->field 加上給定值

????hexists key field? 測試指定field是否存在

????hdel? key field 刪除指定hash? field

????hkeys key 返回hash 的所有field

????hvals key 返回hash的所有value

????hgetall key 返回hash的所有field和value

?著作權(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)容