Redis 常用操作命令

常用管理命令

1、啟動Redis

>redis-server[--port?6379]

如果命令參數(shù)過多,建議通過配置文件來啟動Redis。

>redis-server[xx/xx/redis.conf]

6379是Redis默認(rèn)端口號。

2、連接Redis

>?./redis-cli?[-h?127.0.0.1?-p?6379]

3、停止Redis

>?redis-cli?shutdown

> killredis-pid

以上兩條停止Redis命令效果一樣。

4、發(fā)送命令

給Redis發(fā)送命令有兩種方式:

1、redis-cli帶參數(shù)運(yùn)行,如:

>?redis-cli? shutdown

not? connected>

這樣默認(rèn)是發(fā)送到本地的6379端口。

2、redis-cli不帶參數(shù)運(yùn)行,如:

>?./redis-cli

127.0.0.1:6379>shutdown

not? connected>

5、測試連通性

127.0.0.1:6379>ping

PONG

key操作命令

獲取所有鍵

語法:keys pattern

127.0.0.1:6379>keys*

1)?"javastack"

*表示通配符,表示任意字符,會遍歷所有鍵顯示所有的鍵列表,時間復(fù)雜度O(n),在生產(chǎn)環(huán)境不建議使用。

獲取鍵總數(shù)

語法:dbsize

127.0.0.1:6379>dbsize

(integer)?6

獲取鍵總數(shù)時不會遍歷所有的鍵,直接獲取內(nèi)部變量,時間復(fù)雜度O(1)。

查詢鍵是否存在

語法:exists key [key …]

127.0.0.1:6379>exists javastack java

(integer)?2

查詢查詢多個,返回存在的個數(shù)。

刪除鍵

語法:del key [key …]

127.0.0.1:6379>del java javastack

(integer)?1

可以刪除多個,返回刪除成功的個數(shù)。

查詢鍵類型

語法: type key

127.0.0.1:6379>type javastack

string

移動鍵

語法:move key db

如把javastack移到3號數(shù)據(jù)庫。

127.0.0.1:6379>move javastack 3

(integer)?1

127.0.0.1:6379>select 3

OK

127.0.0.1:6379[2]>keys*

1)?"javastack"

查詢key的生命周期(秒)

秒語法:ttl key

毫秒語法:pttl key

127.0.0.1:6379[2]>ttl javastack

(integer)-1

-1:永遠(yuǎn)不過期。

設(shè)置過期時間

秒語法:expire key seconds

毫秒語法:pexpire key milliseconds

127.0.0.1:6379>expire javastack 60

(integer)?1

127.0.0.1:6379>ttl javastack

(integer) 50

設(shè)置永不過期

語法:persist key

127.0.0.1:6379[2]>persist javastack

(integer)?1

更改鍵名稱

語法:rename key newkey

127.0.0.1:6379[2]>rename javastack javastack111

OK

字符串操作命令

字符串是Redis中最基本的數(shù)據(jù)類型,單個數(shù)據(jù)能存儲的最大空間是512M。

存放鍵值

語法:set key value [EX seconds] [PX milliseconds] [NX|XX]

nx:如果key不存在則建立,xx:如果key存在則修改其值,也可以直接使用setnx/setex命令。

127.0.0.1:6379>set javastack 123

OK

獲取鍵值

語法:get key

127.0.0.1:6379>get javastack

"123"

值遞增/遞減

如果字符串中的值是數(shù)字類型的,可以使用incr命令每次遞增,不是數(shù)字類型則報錯。

語法:incr key

127.0.0.1:6379>incr javastack

(integer)?667

一次想遞增N用incrby命令,如果是浮點型數(shù)據(jù)可以用incrbyfloat命令遞增。

同樣,遞減使用decr、decrby命令。

批量存放鍵值

語法:mset key value [key value …]

127.0.0.1:6379[2]>mset java1 1 java2 2 java3 3

OK

獲取獲取鍵值

語法:mget key [key …]

127.0.0.1:6379[2]>mget java1 java2

1)?"1"

2)?"2"

Redis接收的是UTF-8的編碼,如果是中文一個漢字將占3位返回。

獲取值長度

語法:strlen key

127.0.0.1:6379[2]> strlen javastack

(integer) 3

追加內(nèi)容

語法:append key value

127.0.0.1:6379[2]>appendjavastackhi

(integer)?5

向鍵值尾部添加,如上命令執(zhí)行后由666變成666hi

獲取部分字符

語法:getrange key start end

>?127.0.0.1:6379[2]>getrange javastack 0?4

"javas"

集合操作命令

集合類型和列表類型相似,只不過是集合是無序且不可重復(fù)的。

集合

存儲值

語法:sadd key member [member …]

//?這里有8個值(2個java),只存了7個

127.0.0.1:6379>?sadd?langs?java?php?c++goruby?python?kotlin?java

(integer)7

獲取元素

獲取所有元素語法:smembers key

127.0.0.1:6379>smembers?langs

1)"php"

2)"kotlin"

3)"c++"

4)"go"

5)"ruby"

6)"python"

7)"java"

隨機(jī)獲取語法:srandmember langs count

127.0.0.1:6379>srandmember?langs3

1)"c++"

2)"java"

3)"php"

判斷集合是否存在元素

語法:sismember key member

127.0.0.1:6379>sismember langs go

(integer)?1

獲取集合元素個數(shù)

語法:scard key

127.0.0.1:6379>scard langs

(integer)?7

刪除集合元素

語法:srem key member [member …]

127.0.0.1:6379>srem langs ruby kotlin

(integer)?2

彈出元素

語法:spop key [count]

127.0.0.1:6379>spop langs 2

1)?"go"

2)?"java"

有序集合

和列表的區(qū)別:

1、列表使用鏈表實現(xiàn),兩頭快,中間慢。有序集合是散列表和跳躍表實現(xiàn)的,即使讀取中間的元素也比較快。

2、列表不能調(diào)整元素位置,有序集合能。

3、有序集合比列表更占內(nèi)存。

存儲值

語法:zadd key [NX|XX] [CH] [INCR] score member [score member …]

127.0.0.1:6379>zadd footCounts 16011 tid 20082 huny 2893 nosy

(integer)?3

獲取元素分?jǐn)?shù)

語法:zscore key member

127.0.0.1:6379>zscore footCounts tid

"16011"

獲取排名范圍排名語法:zrange key start stop [WITHSCORES]

//?獲取所有,沒有分?jǐn)?shù)

127.0.0.1:6379>?zrange?footCounts? 0? -1

1)"nosy"

2)"tid"

3)"huny"

//?獲取所有及分?jǐn)?shù)

127.0.0.1:6379>?zrange?footCounts? 0? -1? Withscores

1)"nosy"

2)"2893"

3)"tid"

4)"16011"

5)"huny"

6)"20082"

獲取指定分?jǐn)?shù)范圍排名語法:zrangebyscore key min max [WITHSCORES] [LIMIT offset count]

127.0.0.1:6379>zrangebyscore footCounts 3000?30000 withscores limit 0?1

1)?"tid"

2)?"16011"

增加指定元素分?jǐn)?shù)

語法:zincrby key increment member

127.0.0.1:6379>zincrby footCounts 2000 tid

"18011"

獲取集合元素個數(shù)

語法:zcard key

127.0.0.1:6379>zcard footCounts

(integer)?3

獲取指定范圍分?jǐn)?shù)個數(shù)

語法:zcount key min max

127.0.0.1:6379>zcount footCounts 2000?20000

(integer)?2

刪除指定元素

語法:zrem key member [member …]

127.0.0.1:6379>zrem footCounts huny

(integer)?1

獲取元素排名

語法:zrank key member

127.0.0.1:6379>zrank footCounts tid

(integer)?1

列表操作命令

列表類型是一個有序的字段串列表,內(nèi)部是使用雙向鏈表實現(xiàn),所有可以向兩端操作元素,獲取兩端的數(shù)據(jù)速度快,通過索引到具體的行數(shù)比較慢。

列表類型的元素是有序且可以重復(fù)的。

存儲值

左端存值語法:lpush key value [value …]

127.0.0.1:6379>lpush list lily sandy

(integer)?2

右端存值語法:rpush key value [value …]

127.0.0.1:6379>rpush list tom kitty

(integer)?4

索引存值語法:lset key index value

127.0.0.1:6379>lset list 3 uto

OK

彈出元素

左端彈出語法:lpop key

127.0.0.1:6379>lpop list

"sandy"

右端彈出語法:rpop key

127.0.0.1:6379>rpop list

"kitty"

獲取元素個數(shù)

語法:llen key

127.0.0.1:6379>llen list

(integer)?2

獲取列表元素

兩邊獲取語法:lrange key start stop

127.0.0.1:6379>?lpush?users?tom?kitty?land?pony?jack?maddy

(integer)?6

127.0.0.1:6379>?lrange?users?0?3

1)"maddy"

2)"jack"

3)"pony"

4)"land"

//?獲取所有

127.0.0.1:6379>?lrange?users?0?-1

1)"maddy"

2)"jack"

3)"pony"

4)"land"

5)"kitty"

6)"tom"

//?從右端索引

127.0.0.1:6379>?lrange?users?-3?-1

1)"land"

2)"kitty"

3)"tom"

索引獲取語法:lindex key index

127.0.0.1:6379>?lindex list 2

"ketty"

//?從右端獲取

127.0.0.1:6379>?lindex list -5

"sady"

刪除元素

根據(jù)值刪除語法:lrem key count value

127.0.0.1:6379>?lpush?userids?111?222?111?222?222?333?222?222

(integer)?8

//?count=0?刪除所有

127.0.0.1:6379>?lrem?userids?0?111

(integer)?2

//?count?>?0?從左端刪除前count個

127.0.0.1:6379>?lrem?userids?3?222

(integer)?3

//?count?<?0?從右端刪除前count個

127.0.0.1:6379>?lrem?userids?-3?222

(integer)?2

范圍刪除語法:ltrim key start stop

//?只保留2-4之間的元素

127.0.0.1:6379>?ltrim list 2 4

OK

散列操作命令

redis字符串類型鍵和值是字典結(jié)構(gòu)形式,這里的散列類型其值也可以是字典結(jié)構(gòu)。

存放鍵值

單個語法:hset key field value

127.0.0.1:6379>hset user name javastack

(integer)?1

多個語法:hmset key field value [field value …]

127.0.0.1:6379>hmset user name javastack age 20 address china

OK

不存在時語法:hsetnx key field value

127.0.0.1:6379>hsetnx user tall 180

(integer)?0

獲取字段值

單個語法:hget key field

127.0.0.1:6379>hget user age

"20"

多個語法:hmget key field [field …]

127.0.0.1:6379>hmget?user?name?age?address

1)"javastack"

2)"20"

3)"china"

獲取所有鍵與值語法:hgetall key

127.0.0.1:6379>hgetall?user

1)"name"

2)"javastack"

3)"age"

4)"20"

5)"address"

6)"china"

獲取所有字段語法:hkeys key

127.0.0.1:6379>hkeys?user

1)"name"

2)"address"

3)"tall"

4)"age"

獲取所有值語法:hvals key

127.0.0.1:6379>hvals?user

1)"javastack"

2)"china"

3)"170"

4)"20"

判斷字段是否存在

語法:hexists key field

127.0.0.1:6379>hexists user address

(integer)?1

獲取字段數(shù)量

語法:hlen key

127.0.0.1:6379>hlen user

(integer)?4

遞增/減

語法:hincrby key field increment

127.0.0.1:6379>hincrby user tall -10

(integer)?170

刪除字段

語法:hdel key field [field …]

127.0.0.1:6379>hdel user age

(integer)?1

最后編輯于
?著作權(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)容

  • redis是一個以key-value存儲的非關(guān)系型數(shù)據(jù)庫。有五種數(shù)據(jù)類型,string、hashes、list、s...
    林ze宏閱讀 1,107評論 0 0
  • 1 Redis介紹1.1 什么是NoSql為了解決高并發(fā)、高可擴(kuò)展、高可用、大數(shù)據(jù)存儲問題而產(chǎn)生的數(shù)據(jù)庫解決方...
    克魯?shù)吕?/span>閱讀 5,718評論 0 36
  • Redis提供了豐富的命令(command)對數(shù)據(jù)庫和各種數(shù)據(jù)類型進(jìn)行操作,這些command可以在Linux終端...
    OzanShareing閱讀 574評論 0 2
  • 前言 Redis作為cache服務(wù)器,支持多種數(shù)據(jù)結(jié)構(gòu),String、List、Hash、Set、Zset。多種數(shù)...
    小小小碼農(nóng)閱讀 1,078評論 0 1
  • sets類型及操作 set是集合,和我們數(shù)學(xué)中的集合概念相似,對集合的操作有添加刪除元素,有對多個集合求交并差等操...
    OzanShareing閱讀 864評論 0 4

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