Redis常用命令帥哥專供版
阿新 • • 發佈:2019-06-24
[TOC]
Redis常用命令帥哥專供版
- 沒錯這裡說的帥哥指的就是我自己
Redis常用語法及設定帥哥專供版
常用命令
常用命令: # 監控命令 monitor 該命令實時讀取Redis的所有操作語句 # 該命令可在Redis客戶端內,向一般命令一樣直接執行,但是由於不能用grep等shell命令, 會直接列印所有的Redis操作 ./redis-cli monitor | grep 'NOTIFY_EMAIL' # 指定redis讀取的配置檔案 ./redis-server ./redis.conf # 提供host為localhost,埠為6380,redis服務的統計資訊 redis-cli -h localhost -p 6380 info # 監控host為localhost,埠為6380,redis的連線及讀寫操作 實時輸出 # 該命令可在Redis客戶端內,向一般命令一樣直接執行,但是由於不能用grep等shell命令, 會直接列印所有的Redis操作 redis-cli -h localhost -p 6380 monitor # 通過密碼和指定埠和host進行登入 # 此時進入redis命令列後是沒有任何許可權的 # 進入redis後 輸入 auth 按照提示輸入密碼即可 redi-cli -h host地址 -p 埠 -a 密碼 # 批量刪除指定庫中匹配格式的Key redis-cli -n 0 keys "*" | xargs redis-cli -n 0 del # 如果要指定 Redis 資料庫訪問密碼,使用下面的命令 redis-cli -a password keys "*" | xargs redis-cli -a password del # 100個併發連線,100000個請求,檢測host為localhost 埠為6379的redis伺服器效能 redis-benchmark -h localhost -p 6379 -c 100 -n 100000 新增redis登入密碼 配置檔案: #requirepass foobared 修改foobared為任意密碼 重啟redis-server sudo service redis stop sudo redis-server /etc/redis.conf 之後依然可以使用reids-cli登入redis,但是不能做任何的操作, redis-cli -h 127.0.0.1 -p 6379 嘗試使用密碼進行登入 redis-cli -h 127.0.0.1 -p 6379 -a myRedis 通過redis命令列進行配置(臨時性): config set requirepass my_redis (可以用來修改密碼) 檢視通過命令列設定的密碼 config get requirepass 無需重啟redis即可生效 這時候用原來的密碼發現已經不行了.但是重啟redis後,命令列密碼即可失效. 除了在登入時通過 -a 引數制定密碼外,還可以登入時不指定密碼,而在執行操作前進行認證。 redis-cli -h 127.0.0.1 -p 6379 auth 輸入密碼 登入成功 master配置了密碼,slave如何配置 若master配置了密碼則slave也要配置相應的密碼引數否則無法進行正常複製的。 slave中配置檔案內找到如下行,移除註釋,修改密碼即可 #masterauth mstpassword memcache最大支援1m redis單個val最大1g支援主從配置 註釋: 設定redis預設從後臺啟動 可以通過後臺設定選擇後臺啟動daemonize yes設定完畢後需要重讀配置檔案,如:./redis-server ./redis.conf 1.Keys操作: exists key 測試指定 key是否存在 del key1 key2 .... 刪除給定Kye type key 返回指丁Key的value型別 keys pattern 返回匹配指定模式的所有 kye, keys * 為所有 rename oldkey newkey 改名字 dbsize 返回當前資料庫的key數量 expire key seconds 為key指定過期時間 ttl key 返回key的剩餘過期秒數 select db-index 選擇資料庫 move key db-index 將Key從當前資料庫移動到指定資料庫 flushdb 刪除當前資料庫中所有key flushall 刪除所有資料庫中所有的key swapdb db1 db2 互換資料庫db1和db2 info 可以看到redis當前執行情況, info下列表資訊的也都可以直接呼叫. 如: info Clients 檢視連線的客戶端數量 info Persistence RDB 和 AOF 的相關資訊 info Memory 檢視記憶體使用情況 info Stats 一般統計資訊 info Replication 主從資訊,master上顯示的資訊 info CPU CPU計算量統計資訊 info Cluster 叢集相關資訊 info keyspace 檢視所有庫中的key的數量 info all 返回所有資訊 info default 返回預設選擇的資訊 ...........巴拉巴拉...還有很多具體可以命令列中直接通過 info 命令檢視. 2.string型別操作: string是redis最基本的型別 redis的string 可以包含任何資料,包裹JPG圖片或者序列化的物件 單個value值最大上線是1G位元組. 如果只用string型別,redis就可以被看做加上持久化的memcache set key value 設定key對應的值為string型別的value. mset key1 value1 ... 一次設定多個Key的值. mget key1 key2... 一次獲取多個key的值. incr key 對Key的值做+1操作,並返回新的值. 無Key建立key decr key 對key的值做-1操作,並返回新的值. incrby key integer 對Key的值+任意數字, 並返回新的值. decrby key integer 對Key的值-任意數字,並返回新的值. append key value 給指定key的支付穿值追加value. substr key start end 返回擷取過的key的字串值, 序列自0開始. 2.list型別操作 list列表是簡單的字串列表. list型別其實就是一個雙向連結串列,通過Push,POP操作從連結串列的頭部或者尾部新增刪除元素, 這使得list即可以用作棧,可以用作佇列. 同一個口子進出叫做棧, 一頭進一頭出叫做佇列. 在使用過程中,主要用來做佇列. lpush key string 在Key對應list的頭部新增字串元素,返回當前長度. rpop key 從list的尾部刪除元素,並返回刪除元素. llen key 返回key 對應list的長度,key不存在返回0,如果key對應型別不是list 則返回錯誤. lrange key start end 返回指定區間內的元素,下標從0開始. rpush key string 在Key對應list的尾部新增字串元素. lpop key 從list的頭部刪除元素,並返回元素. ltrim key start end 擷取list, 保留指定區間內的元素,其他部分刪除. 3.set型別操作 redis的set是string型別的無需集合. set元素最大可以包含(2的32次方-1)個元素. 關於set集合型別除了基本的新增刪除操作,其他有用的操作海包含集合的取並集,交集,差集, 通過這些操作,很容易的實現sns中的好友推薦功能. 注意: 每個集合中的各個元素不能重複. 在使用過程中, 主要用來判斷兩個無需集合中的Key中的value的交集,並集,差集 sadd key member... 新增一個string元素到可以對應的set集合中成功返回1.如果元素已經存在集合中,返回0,key對應的set不存在則返回錯誤. srem key member[member] 從Key對應set中移除給定元素,成功返回1. smove p1 p2 member 從p1對應set中移除member並新增到p2對應的set中 scard key 返回set的元素個數 sismember key member 判斷member是否在set中 sinter key1 key2..... 返回所有給定key的交集 交集: key1和key2中都有的部分 sunion key1 key2... 返回所有給定key的並集 並集: key1和ke2的集合(重複部分,只取一個) sdiff key1 key2... 返回所有給定key的差集 差集:key1和key2不相交的部分 smembers key 返回key對應set 的所有元素, 結果是無序的 spop key 移除並返回集合中的一個隨機元素 4.SortSet 有序集合 和set一樣,sortset 也是string型別元素的集合 不同的是每個元素都睡管理一個權重 通過權重值可以有序的獲取集合中的元素. 在使用過程中, 主要可以用來在排序使用. zadd key score member 新增元素到集合,元素在集合中存在則更新對應score zrem key member 刪除指定元素 1表示成功, 如果元素不存在返回0 zincrby key incr member 按照incr幅度增加對應member的score值返回score值 zrank key member 返回指定元素在集合中的排名(下標), 集合中元素是按照score從小到大排序的. zrevrank key member 同上,但是集合中元素是按照score從大到小排序的. zrange key start end 類似lrange 操作從集合中去指定區間的元素,返回的是有序結果. zrevrange key start end 同上返回結果是按照score逆序的. zcard key 返回集合中元素的個數 zscore key element 返回給定元素對應的score zremrangebyrank key min max 刪除集合中排名在給定區間的元素. 5.Hash資料型別 hash資料型別儲存的資料與MySQL資料庫中儲存的一條記錄極為相似. hset key field value 設定hash field為指定值, 如果key不存在,則建立 hget key field 獲取指定的hash的field hmget key field1 field2 獲取多個指定的hash field hmset key field vlaue1 value2 同時設定hash多個field hincrby key field integer 將指定的hash field 加上給定值 hexists key field 測試指定的field是否存在 hdel key field 刪除指定的hash field hlen key 返回指定hash的field數量 hkeys key 指定hash的所有field hvals key 返回hash的所有values hgetall key 發揮hash的所有field和values
持久化操作
持久化操作: redis為了內部資料到嗯安全考慮, 會吧本身資料以檔案形式儲存到硬碟中一份,在伺服器重啟之後會自定把硬碟中的資料回覆到記憶體的裡面.資料儲存到硬碟燈嗯過程就被稱為'持久化'效果. 1. snap shotting 快照持久化也叫做RDB持久化: 該持久化預設開啟,一次性把redis中全部資料,儲存一份儲存在硬碟中,如果資料非常多(10G-20G)就不適合頻繁該持久化操作. redis中資料備份檔案預設為的dump.rdb. RDB的資料dump.rdb(預設檔名)可以直接複製出來給另外一個redis-server使用,但是低版本不可以讀取高版本 配置檔案中redis.conf中: 快照持久化的備份頻率: save 900 1 當900秒內有超過1個Key通過修改的話, 就發起一次快照儲存. save 3000 10 當300秒內有超過10個Key被修改,發起一次快照儲存. save 60 10000 當60秒內超過10000個key修改的話, 發起一次快照儲存. 以上三個save的意思: 資料修改的頻率搞,備份的頻率也高. 資料修改的頻率低,備份的頻率也低. 理解案例: 假如 :沒間隔一個小時做一次持久化. 8:00 快照 間隔時間斷電的話,可能會造成資料丟失,所以在這個時間段可以採用: 精細持久化, 把修改的每個key都儲存起來,並且頻率可以達到(秒級). 9:00 快照 精細持久化 10:00 快照 精細持久化 11:00 快照 精細持久化 12:00 快照 精細持久化 .......... 快照 dbfilename dump.rdb 快照持久化儲存的檔名 dir ./ 所有持久化儲存的路徑 手動發起持久化: redis持久化相關命令: bgsave 非同步儲存資料到磁碟(快照儲存) lastsave 返回上次成功儲存到磁碟的Unix時間戳 shutdown 同步儲存到伺服器並關閉redis伺服器 bgrewriteaof 當日志文件過長時優化AOF日誌檔案儲存 ./redis-cli bgrewriteaof ./redis-cli bgsave # 手動發起快照到目標地址 ./redis-cli -h 127.0.0.1 -p 6379 bgsave 如果要儲存在本地可以省略IP和埠 ./redis-cli bgsave 2.append only file (AOF 持久化)也叫精細持久化 和快照持久化是一種互補的關係. 本質: 把使用者執行的每個寫指令(新增,修改,刪除)都備份到檔案中,還原資料的時候,就是執行具體指令而已. 預設沒有開啟AOF持久化; 開啟AOF持久化(會清空redis內部的資料): 開啟配置檔案redis.conf : appendonly no 預設沒有開啟 修改為yes 為開啟. appendfilename appendonly.aof 設定AOF持久化儲存的名字 配置檔案被修改,需要重啟redis服務: 1. 殺死程序 2. ./redis-server ./redis.conf 使用該命令讀取配置檔案,同時啟動服務 新的程序啟動好之後, 會在目錄中看到appendonly.aof的AOF持久化的備份檔案 AOF持久化的追加備份頻率: 配置檔案中設定AOF持久化設定: appendfsync no 對比當前伺服器效能比較寬裕就進行備份,完全依賴OS,持久化沒保障.不推薦 appendfsync erveysec 每秒鐘備份一次(在效能和持久化方面做了很好的折中): 推薦使用 [預設] appendfsync always 只要有寫指令就寫進行備份資料(最慢, 效能差,但是保證完整的持久化)不推薦 AOF持久化備份後,檔案會特別大,例如,incr num num這個檔案會特別的打,通過檢視得知incr num10次以後,會在備份檔案中,生成多次的自增, 而此時實際上直接可以使用set num 10就可以.這時候使用./redis-cli bgrewriteaof 優化備份檔案中的資料格式. 此時檢視appendonli.aof 之前通過incr num多次的資料,變成了set num 10;
主從模式
3. 主從模式 配置檔案中: slaveof <masterip><masterport> 修改為 slaveof IP port 設定從伺服器追蹤到哪個主伺服器.預設從伺服器不可以用來寫入; 此時的從伺服器只可以用來讀取,不能寫入. 如果想要寫入需要修改配置檔案: slave-read-only yes 修改為no master配置了密碼,slave如何配置 若master配置了密碼則slave也要配置相應的密碼引數否則無法進行正常複製的。 slave中配置檔案內找到如下行,移除註釋,修改密碼即可 #masterauth mstpassword
資料備份與回覆
資料備份與回覆:
資料備份:
1.在 redis-cli 中使用 save 命令,同步備份所有資料到dump.rdb 中,以RDB檔案的形式儲存到硬碟.
2.使用config get dir 獲取本分目錄
註釋:
一般來說,生產環境很少使用 save, 因為他會阻塞所有的客戶端.儲存資料通常使用 bgsave.
Redis的資料型別
TTL
TTL:
TTL key
以秒為單位,返回給定 key 的剩餘生存時間(TTL, time to live)。
當 key 不存在,或者 key 沒有設定剩餘生存時間時,命令都返回 -1 。
String 字串型別
一個鍵最多儲存512M
1> SET:設定key對應值為value
語法: SET key value
SET str1 'xdl'
2>GET:根據KEY找到對應的值
語法: GET key
注意:如果key不存在 返回nil
3>GETRANGE:返回字串中的一部分
語法: GETRANGE key start end
GETRANGE str1 0 1
GETRANGE str1 0 -1
GETRANGE str1 0 -2
GETRANGE str1 0 1000
4>GETSET:設定指定key的值,並返回舊值
語法: GETSET key value
SET str2 'itxdl'
GETSET str2 'xdl'
注意:當key不存在返回nil
5>MSET:一次設定多個鍵值對
語法:MSET key value [key value .......]
MSET str4 'xdl' str5 'itxdl' str6 'xdlo2o'
6>MSETNX:一次設定多個key-value對,只有所有的key都不存在的時候才會成功
語法: MSETNX key value [key value .....]
MSETNX str10 'a' str11 'b' str12 'c'
MSETNX str12 'd' str13 'e'
7>MGET:一次得到多個鍵值
語法: MGET key key
MGET str4 str5 str6
8>STRLEN:獲取key的字串長度
語法: STRLEN key
STRLEN str4
9>SETRANGE:相當於字串替換
語法:SETRANGE key offset value
SET str7 'hello'
SETRANGE str7 5 'xdl'
注意: 如果設定key原來的字串的長度比偏移量小,就會以零位元組(\x00)來填充
10>SETNX:只有KEY不存在的時候才能設定成功
語法: SETNX key value
SETNX str7 'hello'
11>SETEX:設定一個KEY並且設定一個過期時間
語法: SETEX key seconds value
SETEX str8 30 'xdl'
12>PSETEX: 以毫秒為單位設定KEY的生存週期
語法:PSEREX key milliseconds value
PSETEX set9 20000 'hello'
13> INCR:對key中儲存的數字加1
語法: INCR key
SET str14 1
INCR str14
INCR str15
注意:key如果不存在,則會先初始化為0,在進行INCR操作
14>INCRBY:將key中儲存的數字加上指定增量
語法: INCRBY key INCREMENT
SET str16 10
INCRBY str16 5
INCRBY str16 1.5
15>INCRBYFLOAT:將key中儲存的數字加上指定浮點數
語法; INCRBYFLOAT key increment
SET str17 1
INCRBYFLOAT str17 1.5
16>DECR:將key中儲存的數字減1
語法: DECR key
SET str18 1
DECR str18
17>DECRBY:將key中儲存的數值減指定值
語法: DECRBY key decrement
SET str19 20
DECRBY str19 5
18>APPEND:通過APPEND將值追加到字串末尾
語法:APPEND key value
SET str20 'xdl'
APPEND str20 'o2o'
LIST列表型別
1>LPUSH:向列表左端新增元素
語法: LPUSH key value value ....
LPUSH list1 a b c
2>RPUSH:向列表右端新增元素
語法: RPUSH key value ....
RPUSH list1 d e
3>LRANGE:獲取列表片段
語法: LRANGE key start stop
LRANGE list1 0 -1
4>LPUSHX:向列表頭部新增元素,只有key存在才新增
語法: LPUSHX key value
LPUSHX list1 a
5>RPUSHX:向列表尾部新增元素,只有key存在才新增
語法: RPUSHX key value
6>LPOP:將列表頭部的元素彈出
語法: LPOP key
LPOP list1
7>RPOP:彈出列表尾部元素
語法: RPOP key
RPOP list1
8>LLEN:獲取列表長度
語法 LLEN key
LLEN list1
9>LREM:刪除列表中的指定值
語法: LREM key count value
count >0 :從列表頭部開始,向尾部搜尋,移除與value相等的元素,移除count個
count <0 :從列表的尾部開始,向頭部搜尋,,移除與value相等的元素,移除count個
count = 0:移除列表中所有與value相等的元素
LPUSH list3 a b c d a e b d c b e d
LREM list3 2 a
LREM list3 -2 b
LREM list3 0 d
10>LINDEX:獲取指定索引元素上的值
語法: LIDEX key index
LINDEX list3 3
11>LSET:設定指定元素的值
語法: LSET key index value
LSET list3 10 a
12>LTRIM:只保留列表片段
語法:LTRIM key start stop
LTRIM list3 0 3
LPUSH list3 a b c a b c a b c
LTRIM list3 0 1000
13>LINSERT 向列表中插入元素
語法: LINSERT key BEFORE|AFTER pivot value
LPUSH list4 a b c d
LINSERT list4 BEFORE 'b' 'x'
LINSERT list4 AFTER 'b' 'x'
14>RPOPLPUSH:將元素從一個列表轉移到另一個列表
語法 RPOPLPUSH source destination
LPUSH list5 a b c
LPUSH list6 x y z
RPOPLPUSH list5 list6
SET集合型別:無序集合
1> SADD:向集合中新增一個元素
語法 SADD key value [,.......]
SADD set1 xdl
SADD set1 itxdl
2>SMEMBERS:返回指定集合中的元素
語法: SMEMBERS key
SMEMBERS set1
3>SISMEMBER:檢查member是否是集合中的成員
語法:SISMEMBER key member
SISMEMBER set1 xdl
4>SREM:刪除集合中一個或多個成員
語法:SREM key member [member ....]
SREM set1 xdl
5>SPOP:刪除並返回集合中的隨機元素
語法: SPOP key
SPOP set1
6>SRANDMEMBER:隨機返回集合中元素
語法: SRANDMEMBER key count
注意:
count 為正數,而且小於集合中的元素,返回一個隨機元素的集合陣列,
count 數大於集合中的個數的時候,返回整個集合
count 為負數,返回一個數組,陣列中的成員可能出現重複,陣列的長度是count的絕對值
SRANDMEMBER set1 -3
7>SDIFF:返回集合的差集
語法: SDIFF key key ....
SADD set2 a b c d
SADD set3 c d e f
SADD set4 a e
SDIFF set3 set2
SDIFF set2 set3 set4
8>SINTER:返回集合的交集
語法: SINTER key key key ...
SINTER set2 set3
SADD set5 c
SINTER set2 set3 set5
9>SUNION:返回集合中並集
語法: SUNION key key ...
SUNION set2 set3
SUNION set2 set3 set4
10>SCARD:返回集合中元素個數
語法: SCARD key
SCARD set2
11>SDIFFSTORE:將差集的結果儲存到指定的集合當中
語法: SDIFFSTORE destination key key ....
SDIFFSTORE set6 set2 set3
12>SINTERSTORE:將交集的結果儲存到指定的集合當中
語法: SINTERSTORE destination key key ....
SINTERSTORE set7 set2 set3
13>SUNIONSTORE:將並集的結果儲存到指定的集合當中
語法: SUNIONSTORE destination key key ....
SUNIONSTORE set8 set2 set3
14>SMOVE:將集合中的元素移動另一個集合中
語法 SMOVE source destination member
SMOVE set3 set2 e
Hash型別
1>HSET:將雜湊表中的key中的field設定成指定的value
語法:HSET key field value
HSET h1 username 'zhangsan'
HSET h1 password '123'
HSET h1 age '18'
2>HGET:返回雜湊表key中給的field的值
語法: HGET key field
HGET h1 username
HGET h1 age
3>HSETNX:將hash表中的field設定成指定的值,只有field不存在才能成功,如果field存在,操作無效
語法 HSETNX key field value
HSETNX h1 aaa '20'
HSETNX h1 aaa '21'
4>HMSET:通過多個 field value設定到hash表key中
語法 HMSET key field value field value .....
HMSET h2 username 'lisi' age '20' password '456'
5>HMGET:一次獲得hash表key中多個field的值
語法: HMGET key field field .....
HMGET h2 username age password
HMGET h2 username age password aaa
注意:如果hash表key中field不存在,返回nil
6>HGETALL:返回hash表key中所有的field和value
語法 HGETALL key
HGETALL h2
7>HKEYS:返回hash表key中的所有的field
語法 HKEYS key
HKEYS h2
keys * 檢視所有的key
8>HVALS:返回hash表key中所有的field的對應值
語法 HVALS key
HVALS h2
9>HEXISTS:檢測hash中key的field是否存在
語法: HEXISTS key field
HEXISTS h2 username
HEXISTS h2 aaa
10>HLEN:返回hash表key中的field的數量
語法 HLEN key
HLEN h2
11>HINCRBY :給hash表key中的field做增量操作
語法 HINCRBY key field increment
HSET h3 age 20
HINCRBY h3 age 5
12>HINCRBYFLOAT:給hash表key中的field做增量浮點操作
語法: HINCRBYFLOAT key field increment
HSET h3 aaa '12.2'
HINCRBYFLOAT h3 aaa 2.5
13>HDEL:刪除hash中key的指定field,可刪除一個或多個
語法: HDEL key field field .....
HDEL h2 username
HGETALL h2
zset 有序集合
1>ZADD:將元素新增到集合中
語法:ZADD key score member [score member..]
ZADD zset 100 xdl
ZADD zset 98 zhangsan 97 list 80 test 78 test1 60 test2 50 test4
2>ZSCORE:獲得指定元素的分數
語法: ZSCORE key member
ZSCORE zset xdl
3>ZRANGE:按照元素分數從小到大的順序返回指定索引start到stop之間的元素(包含兩端)
語法: ZRANGE key start stop [WITHSCORES]
ZRANGE zset 0 -1
ZRANGE zset 0 -1 WITHSCORES
ZRANGE zset 0 1 WITHSCORES
ZRANGE zset 0 2000 WITHSCORES
ZRANGE zset 1000 2000 WITHSCORES
ZADD zset 60 test5 60 test6 60 test7 60 test8
注意:當兩個元素的分值相同的時候,Redis在排序按照字典的順序(0<9<A<Z<a<z),如果使用的是UTF-8的編碼方式同樣會按照中文字典的方式排序
4>ZREVRANGE:和ZRANGE相反,按照分值從大到小排序
語法: ZREVRANGE key start stop [WITHSCORES]
ZREVRANGE zset 0 -1
ZREVRANGE zset 0 -1 WITHSCORES
ZREVRANGE zset 0 2000 WITHSCORES
5>ZRANGEBYSCORE:獲得指定分數範圍的元素,按照分值從小到大排序,返回的是分值的指定min到max的元素
語法:ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]
#獲取70 -90之間的元素 包含70 90
ZRANGEBYSCORE zset 70 90
ZRANGEBYSCORE zset 70 90 WITHSCORES
ZADD zset 70 test9 75 test10 80 test11 85 test12 90 test13
ZRANGEBYSCORE zset (70 90 WITHSCORES
ZRANGEBYSCORE zset 70 (90 WITHSCORES
ZRANGEBYSCORE zset 70 (90 WITHSCORES LIMIT 0 3
注意: 通過(代表不包含
6>ZREVRANGEBYSCORE:獲得指定分數範圍的元素,按照分值從大到小的順序返回,
語法: ZREVRANGEBYSCORE key max min [WITHSCORES] [LIMIT offset count]
ZREVRANGEBYSCORE zset 90 70 WITHSCORES
ZREVRANGEBYSCORE zset (90 70 WITHSCORES
ZREVRANGEBYSCORE zset (90 70 WITHSCORES LIMIT 0 3
7> ZINCRBY:操作元素的分值,返回操作之後的分數
語法:ZINCRBY key increment member
ZINCRBY zset 10 test13
ZINCRBY zset -20 test13
8>ZCARD:來獲取集合中的元素數量
語法:ZCARD key
ZCARD zset
9>ZCOUNT:獲取分數內的元素數量
語法:ZCOUNT key min max
ZCOUNT zset 70 90
ZCOUNT zset (70 (90
10>ZREM:刪除一個或多個元素,返回刪除元素的數量
語法:ZREM key member .....
ZREM zset test13 test12
11>ZREMRANGEBYRANK:按照排名範圍刪除元素,按照分數從小到大的順序刪除指定的排名範圍內的所有元素
語法: ZREMRANGEBYRANK key start stop
ZADD testRen 1 a 2 b 3 c 4 d 5 e 6 f 7 g 8 h
ZREMRANGEBYRANK testRen 0 1
ZRANGE testRen 0 -1 WITHSCORES
12>ZREMRANGEBYSCORE:按照分數範圍刪除元素
語法:ZREMRANGEBYSCORE key min max
ZADD testRen1 1 a 2 b 3 c 4 d 5 e 6 f 7 g 8 h
ZRANGE testRen1 0 -1
ZREMRANGEBYSCORE testRen1 3 7
13>ZRANK:獲取指定元素的排名,根據分數從小到大的順序
語法 ZRANK key member
ZRANK zset xdl
14>ZREVRANK: 獲取指定元素排名.根據分數從大到小的順序
語法: ZREVRANK key member
ZREVRANK zset xdl
15>ZINTERSTORE:計算有序集合的交集,並將結果儲存起來
語法:ZINTERSTORE destination numkeys [WEIGHTS weight weight] [AGGREGATE SUM | MIN |MAX]
ZADD zset2 1 a 2 b 3 c
ZADD zset3 10 a 20 b 30 c
ZINTERSTORE zset4 2 zset2 zset3
ZRANGE zset4 0 -1 WITHSCORES
ZINTERSTORE zset5 2 zset2 zset3 AGGREGATE MIN
ZRANGE zset5 0 -1 WITHSCORES
ZINTERSTORE zset6 2 zset2 zset3 AGGREGATE MAX
ZRANGE zset6 0 -1 WITHSCORES
ZINTERSTORE zset7 2 zset2 zset3 WEIGHTS 2 0.2
ZRANGE zset7 0 -1 WITHSCORES
16>ZUNIONSTORE :計算有序集合的並集,將結果儲存起來
語法: ZUNIONSTORE destination numkeys [WEIGHTS weight weight] [AGGREGATE SUM | MIN |MAX]
ZADD zset8 1 a 2 b 3 c
ZADD zset9 4 d 5 e 6 f 7 a
ZUNIONSTORE zset10 2 zset8 zset9
ZRANGE zset10 0 -1 WITHSCORES
ZUNIONSTORE zset11 2 zset8 zset9 AGGREGATE SUM
ZRANGE zset11 0 -1 WITHSCORES
ZUNIONSTORE zset12 2 zset8 zset9 AGGREGATE MIN
ZRANGE zset12 0 -1 WITHSCORES
ZUNIONSTORE zset13 2 zset8 zset9 AGGREGATE MAX
ZRANGE zset13 0 -1 WITHSCORES
ZUNIONSTORE zset14 2 zset8 zset9 WEIGHTS 2 2
ZRANGE zset14 0 -1 WITHSCORES
其他
SETNX key value 將 key 的值設為 value ,當且僅當 key 不存在。若給定的 key 已經存在,則 SETNX 不做任何動作。
SETEX KEY_NAME TIMEOUT VALUE 用於在Redis鍵中的指定超時,設定鍵的字串值。字串,如果在鍵中設定了值則返回OK。如果值未設定則返回 Null。
type key 檢視key是什麼型別
info 可以看到redis當前執行情況, info下的也都可以再次呼叫.
如:
info keyspace 檢視所有庫中的key的數量
info Clients 檢視連線的客戶端數量
info Memory 檢視記憶體使用情況
...........巴拉巴拉...還有很多具體可以命令列中直接通過 info 命令檢視.
dbsize則是當前庫key的數量
keys *這種資料量小還可以,大的時候可以直接搞死生產環境。
dbsize和keys *統計的key數可能是不一樣的,如果沒記錯的話,keys *統計的是當前db有效的key,而dbsize統計的是所有未被銷燬的key(有效和未被銷燬是不一樣的,具體可以瞭解redis的過期策略)
# expire 設定key生存時間 返回值: 為1成功, 0失敗或者不存在 語法: expire key time
# 刪除當前資料庫中的所有Key
flushdb
# 刪除所有資料庫中的key
flushall
Redis 優化 找出拖慢 Redis 的罪魁禍首
INFO commandstats 通過這個工具可以檢視所有命令統計的快照,比如命令執行了多少次,執行命令所耗費的毫秒數(每個命令的總時間和平均時間)
只需要簡單地執行 CONFIG RESETSTAT 命令就可以重置,這樣你就可以得到一個全新的統