【Redis】Redis經常使用命令

IP:192.168.225.128
環境:centos7php

1、全局命令

一、查詢鍵

keys * 查詢全部的鍵,會遍歷全部的鍵值,複雜度O(n)java

二、鍵總數

dbsize 查詢鍵總數,直接獲取redis內置的鍵總數變量,複雜度O(1)python

三、檢查鍵是否存在

exists key 存在返回1,不存在返回0redis

四、刪除鍵O(k)

del key [key...] 返回結果爲成功刪除鍵的個數數據庫

五、鍵過時

expire key seconds 當超過過時時間,會自動刪除,key在seconds秒後過時
expireat key timestamp 鍵在秒級時間戳timestamp後過時
pexpire key milliseconds 當超過過時時間,會自動刪除,key在milliseconds毫秒後過時
pexpireat key milliseconds-timestamp key在豪秒級時間戳timestamp後過時
ttl 命令能夠查看鍵hello的剩餘過時時間,單位:秒(>0剩餘過時時間;-1沒設置過時時間;-2鍵不存在)
pttl是毫秒centos

192.168.225.129:6379> expire k2 100
(integer) 1
192.168.225.129:6379> ttl k2
(integer) 91
192.168.225.129:6379> ttl ma
(integer) -1
192.168.225.129:6379>

六、鍵的數據結構類型

type key 若是鍵hello是字符串類型,則返回string;若是鍵不存在,則返回none服務器

七、鍵重命名

rename key newkey
renamenx key newkey 只有newkey不存在時纔會被覆蓋數據結構

八、隨機返回一個鍵

randomkeyapp

九、遷移鍵

(1)move key db (不建議再生產環境中使用)把指定的鍵從源數據庫移動到目標數據庫
(2)dump+restore

dump key
Restore key ttl value
Dump+restore能夠實如今不一樣的redis實例之間進行數據遷移的功能,整個遷移的過程分爲兩步;
1)在源redis上,dump命令會將鍵值序列化,格式採用的是RDB格式
2)在目標redis上,restore命令將上面序列化的值進行復原,其中ttl參數表明過時時間,ttl=0表明沒有過時時間
例子:dom

源redis
192.168.225.129:6379> get redis
"world"
192.168.225.129:6379> dump redis
"\x00\x05world\a\x00\xe6\xe3\xe9w\xd8c\xa7\xd8"
目標redis
192.168.225.128:6379> get redis
(nil)
192.168.225.128:6379> restore redis 0 "\x00\x05world\a\x00\xe6\xe3\xe9w\xd8c\xa7\xd8"
OK
192.168.225.128:6379> get redis
"world"
(3)migrate

migrate其實是吧dump、restore、del 3個命令進行組合,從而簡化了操做步驟。
Migrate host port key [ key ......] destination-db timeout [replace]
源redis中執行
192.168.225.129:6379> migrate 192.168.225.128 6379 flower 0 1000 replace
(將鍵flower遷移至目標192.168.225.128:6379的庫0中,超時時間爲1000毫秒,replace表示目標庫若是存在鍵flower,則覆蓋)

十、遍歷鍵

(1)全量遍歷鍵

keys pattern
例如:keys h , keys [r,l]edis ,keys 等等

(2)漸進式遍歷

scan 它能夠有效的解決keys命令存在的阻塞問題,scan每次的額複雜度是O(1)

數據庫管理

一、切換數據庫

select dbIndex
默認16個數據庫:0-15,進入redis後默認是0庫。不建議使用多個數據庫

二、flushdb / flushall

用於清除數據庫,flushdb只清除當前數據庫,flushall清除全部數據庫。

2、針對key的操做

一、設置值 O(1)

set key value [ex]  [px]  [nx|xx]
ex爲鍵值設置秒級過時時間
px爲鍵值設置毫秒級過時時間
nx鍵必須不存在,才能夠設置成功,用於添加
xx與nx相反,鍵必須存在,才能夠設置成功,用於更新
setnx、setex 與上面的nx、ex做用相同

二、獲取值O(1)

get key 不存在則返回nil

三、批量設置值O(k)

mset key value [key value ......]
mset a 1 b 2 c 3 d 4

四、批量獲取值O(k),k是鍵的個數

mget key [key ......]

五、計數O(1)

incr key
decr key /inceby key increment /decrby key increment
返回結果分爲3中狀況:
值不是整數,返回錯誤;
值是整數,返回自增後的結果;
鍵不存在,按照值爲0自增,返回結果爲1。

六、追加值O(1)

append key value 能夠向字符串尾部追加值

七、字符串長度O(1)

strlen key
每一個漢字佔用3個字字節

八、設置並返回原值O(1)

getset key value

九、設置指定位置的字符O(n),n是字符串長度

setrange key offeset value
192.168.225.129:6379> get liming
"class4"
192.168.225.129:6379> setrange liming 0 m
(integer) 6
192.168.225.129:6379> get liming
"mlass4"
192.168.225.129:6379>

十、獲取部分字符串

getrange key start end start和end分別爲開始和結束的偏移量,偏移量從0開始

3、 Hash操做

一、設置值

hset key field value
還提供了hsetnx命令
Eg:hset user:1 name tom

二、獲取值

hget key field

192.168.225.129:6379> hset user:1 name Tom
(integer) 1
192.168.225.129:6379> hget user:1 name
"Tom"
192.168.225.129:6379> hget user:1 age
(nil)

三、刪除field

hdel key field [field ......] 會刪除一個或多個field,返回結果爲成功刪除fiel的個數

四、計算field的個數

hlen key

五、批量設置或獲取field-value

Hmget key field [field ......]
Hmset key field value [field value]

六、判斷field是否存在

hexists key field

七、獲取全部field

hkeys key

192.168.225.129:6379> hkeys user:1
1) "name"
2) "age"
3) "grand"
4) "city"

八、獲取全部value

hvals key

192.168.225.129:6379> hvals user:1
1) "Tom"
2) "20"
3) "3"
4) "beijing"

九、獲取全部的field、value

hgetall key

十、hincrby hincrbyfloat 做用域是field

hincrby key field
hincrbyfloat key field

十一、計算value字符串的長度

hstrlen key field

4、列表List操做

列表類型原來存儲多個有序的字符串,能夠重複

列表的4中操做類型
操做類型 操做
添加 rpush 、lpush、linsert
lrange、lindex、llen
刪除 lpop 、rpop、 lrem、ltrim
修改 lset
阻塞操做 blpop、brpop

一、添加

(1)從右邊插入元素

rpush key value [value......]

(2)從左邊插入元素

lpush key value [value......]

(3)向某個元素前或者後插入元素

linsert key before|after pivot value
linsert命令會從列表中找到等於pivot的元素,在其前或者後插入一個新的元素value

192.168.225.129:6379> rpush mylist a b c d e f b a 
(integer) 8
192.168.225.129:6379> linsert mylist after f g
(integer) 9
192.168.225.129:6379> lrange mylist 0 -1
1) "a"
2) "b"
3) "c"
4) "d"
5) "e"
6) "f"
7) "g"
8) "b"
9) "a"

二、查找

(1)獲取指定範圍內的元素列表

lrange key start end 索引下標從左到右分別是0到N-1,從右到左分別是-1到-N;end選項包含了自身
lrange key 0 -1 能夠從左到右獲取列表的全部元素
lrange mylist 1 3 獲取列表中第2個到第4個元素

(2)獲取列表指定下標的元素

lindex key index

(3)獲取列表長度

llen key

三、刪除

(1)從列表右側彈出元素

rpop key

(2)從列表左側彈出元素

lpop key

(3)刪除指定元素

lrem key count value
Lrem命令會從列表中找到=value的元素進行刪除,根據count的不一樣分爲3中狀況

Count>0,從左到有,刪除最多count個元素
 Count<0,從右到左,刪除最多count絕對值個元素
 Count=0,刪除全部
列表listaaa爲a a a a java php b a b
192.168.225.129:6379> lrem listaaa 5 a
(integer) 5
192.168.225.129:6379> lrange listaaa 0 -1
1) "java"
2) "php"
3) "b"
4) "b"
192.168.225.129:6379> lrem listaaa 3 php
(integer) 1
192.168.225.129:6379> lrange listaaa 0 -1
1) "java"
2) "b"
3) "b"

四、修改

lset key index newValue 修改指定索引下標的元素
Eg:lset listaaa 1 python 輸出爲java python b

五、阻塞操做

blpop key [key ...] timeout
brpop key [key ...] timeout
blpop和brpop是lpop、rpop的阻塞版本,除了彈出方式不一樣,使用方法基本相同,timeout阻塞時間

(1)列表爲空

brpop list:test 3 3秒後返回
brpop list:test 0 一直處於阻塞中

(2)列表不爲空

brpop mylist 0 馬上返回

192.168.225.129:6379> brpop mylist 0
1) "mylist"
2) "a"

5、Set操做(不可重複)

集合內的操做

一、添加元素

sadd key element [element .....] 返回結果爲添加成功的元素個數

二、刪除元素

srem key element [element .....] 返回結果爲刪除成功的元素個數

三、計算元素個數

Scard key scard的時間複雜度爲O(1),直接用redis內部的變量

四、判斷元素是否在集合中

Sismember key element 在集合中則返回1,不然返回0

五、隨機從集合返回指定個數元素

Srandmember key [count] count可不寫,默認爲1

六、從集合隨機彈出元素

Spop key [count] 3.2版本開始支持[count]

七、獲取全部元素

Smembers key 它和lrange、hgetall都屬於比較重的命令,有時候可使用sscan來完成

集合間的操做

一、求多個集合的交集 sinter key [ key ......]

二、求多個集合的並集 sunion key [key ......]

三、求多個集合的差集 sdiff key [key ......] 第一個key裏面有的,第二個key裏面沒有的

四、將交集、並集、差集的結果保存

sinterstore destination key [ key ......]
sunionstore destination key [ key ......]
sdiffstore destination key [ key ......]

例如:sinterstore user:1_2:inter user:1 user:2 user:1_2:incr也是集合類型

6、ZADD操做(有序集合)

集合內

一、添加成員 時間複雜度O(log(n)), sadd爲O(1)

zadd key score member[score member .....] 返回結果爲添加成功的元素個數

二、計算成員個數

zcard key scard的時間複雜度爲O(1),直接用redis內部的變量

三、計算某個成員分數

zsore key member

四、計算成員的排名

zrank key member

五、刪除成員

zrem key member [member .......]

六、增長成員的分數

zincrby key increment member

七、返回指定排名範圍的成員

zrange key start end [withscores] 從低分到高分
zrevrange key start end [withscores] 從高分到低分

八、返回指定分數範圍的成員

zrange key min max [withscores] [limit offset count ] 按照分數從低分到高分
zrevrange key max min [withscores] [limit offset count ] 按照分數從高分到低分

九、返回指定分數範圍的成員個數

zcount key min max

十、刪除指定排名內的升序元素

zremrangebyrank key start end

十一、刪除指定分數範圍的成員

zremrangebystore key min max

集合間的操做

一、交集

二、並集

三、差集

四、將交集、並集、差集的結果保存

7、pub/sub(發佈、訂閱)

一、publish channel message           發佈消息    eg:publish channel:sports 'I want to go eatting'
二、subscribe channel [channel .....]     訂閱消息    eg: subscribe channel:sports
三、unsubscribe channel [channel .....]   取消訂閱
四、psubscribe pattern [pattern ......]    按照模式訂閱
五、unpsubscribe pattern [pattern ......]  按照模式取消訂閱
六、查詢訂閱
 pubsub channels                    查看活躍的頻道
   192.168.225.128:6379> pubsub channels
   1) "channel:sports"
   2) "__sentinel__:hello"
  pubsub numsub [channel ......]        查看頻道訂閱數  pubsub numsub channel:sports
  pubsub numpat                    查看模式訂閱數
七、說明:
   客戶端在執行訂閱命令以後進入了訂閱狀態,只能接收四個命令:subscribe、psubscribe、unsubscribe、punsubscribe;
   新開啓的訂閱客戶端,沒法收到該頻道以前的消息,由於redis不會對發佈的消息進行持久化。

8、Transaction(事務)

8.1 discard                             , 取消執行事務塊內的全部命令
8.2 exec                                , 執行事務塊內的命令
8.3 multi                               , 標記一個事務塊的開始
8.4 unwatch                             , 取消watch命令對全部key的監視
8.5 watch key [key ...]                 , 監視一個或者多個key,若是事務執行以前,這個kye被其它命令所動,則事務被打斷

9、Connection(鏈接)

9.1 auth password                       , 登陸redis時輸入密碼
 9.2 echo message               , 打印一個特定的信息message,測試時使用
 9.3 ping                                , 測試與服務器的鏈接,若是正常則返回pong
 9.4 quit                                , 請求服務器關閉與當前客戶端的鏈接
 9.5 select index                        , 切換到指定的數據庫

10、Server(服務器)

10.1 bgsave                             , 後臺異步保存數據到硬盤
10.2 client setname/client getname      , 爲鏈接設置、獲取名字
10.3 client kill ip:port                , 關閉地址爲 ip:port的客戶端
10.4 client list                        , 以人類可讀的方式,返回全部的鏈接客戶端信息和統計數據
10.5 config get parameter               , 取得運行redis服務器的配置參數
10.6 config set parameter value         , 設置redis服務器的配置參數
10.7 config resetstat                   , 重置info命令的某些統計數據
10.8 dbsize                             , 返回當前數據庫中key的數量
10.9 flushall                           , 清空整個redis服務器的數據(刪除全部數據庫的全部 key)
10.10 flushdb                           , 清空當前數據庫中的全部key
10.11 info [section]                    , 返回redis服務器的各類信息和統計數據
10.12 lastsave                          , 返回最近一次redis成功將數據保存到磁盤時的時間
10.13 monitor                           , 實時打印出redis服務器接收到的指令
10.14 save                              , 將當前 Redis 實例的全部數據快照(snapshot)以 RDB 文件的形式保存到硬盤
10.15 slaveof host port                 , 將當前服務器轉變爲指定服務器的從屬服務器
 10.16 slowlog subcommand [argument]     , Redis 用來記錄查詢執行時間的日誌系統
相關文章
相關標籤/搜索