MySQL效能優化-記憶體引數配置
阿新 • • 發佈:2021-11-19
連線
客戶端連線:redis-cli -h host -p port -a password
命令 | 描述 |
---|---|
AUTH password | 驗證密碼是否正確 |
ECHO message | 列印字串 |
PING | 檢視服務是否執行 |
QUIT | 關閉當前連線 |
SELECT index | 切換到指定的資料庫 |
Key
用於管理 redis 的鍵
命令 | 描述 |
---|---|
DEL key | 該命令用於在 key 存在是刪除 key。 |
DUMP key | 序列化給定 key ,並返回被序列化的值。 |
EXISTS key | 檢查給定 key 是否存在。 |
EXPIRE key seconds |
為給定 key 設定過期時間。 |
EXPIREAT key timestamp | EXPIREAT 的作用和 EXPIRE 類似,都用於為 key 設定過期時間。 不同在於 EXPIREAT 命令接受的時間引數是 UNIX 時間戳(unix timestamp)。 |
PEXPIRE key milliseconds | 設定 key 的過期時間億以毫秒計。 |
PEXPIREAT key milliseconds-timestamp | 設定 key 過期時間的時間戳(unix timestamp) 以毫秒計 |
KEYS pattern | 查詢所有符合給定模式( pattern)的 key 。 |
MOVE key db | 將當前資料庫的 key 移動到給定的資料庫 db 當中。 |
PERSIST key | 移除 key 的過期時間,key 將持久保持。 |
PTTL key | 以毫秒為單位返回 key 的剩餘的過期時間。 |
TTL key | 以秒為單位,返回給定 key 的剩餘生存時間(TTL, time to live)。 |
RANDOMKEY | 從當前資料庫中隨機返回一個 key 。 |
RENAME key newkey | 修改 key 的名稱 |
RENAMENX key newkey | 僅當 newkey 不存在時,將 key 改名為 newkey 。 |
TYPE key 返回 key | 所儲存的值的型別。 |
六種資料型別
String
用於管理 redis 字串值
命令 | 描述 |
---|---|
GET key | 獲取指定 key 的值。 |
GETRANGE key start end | 返回 key 中字串值的子串 |
GETSET key value | 將給定 key 的值設為 value ,並返回 key 的舊值(old value)。 |
GETBIT key offset | 對 key 所儲存的字串值,獲取指定偏移量上的位(bit)。 |
MGET key1 [key2..] | 獲取所有(一個或多個)給定 key 的值。 |
SET key value | 設定指定 key 的值 |
SETBIT key offset value | 對 key 所儲存的字串值,設定或清除指定偏移量上的位(bit)。 |
SETEX key seconds value | 將值 value 關聯到 key ,並將 key 的過期時間設為 seconds (以秒為單位)。 |
SETNX key value | 只有在 key 不存在時設定 key 的值。 |
SETRANGE key offset value | 用 value 引數覆寫給定 key 所儲存的字串值,從偏移量 offset 開始。 |
MSET key value [key value ...] | 同時設定一個或多個 key-value 對。 |
MSETNX key value [key value ...] | 同時設定一個或多個 key-value 對,當且僅當所有給定 key 都不存在。 |
PSETEX key milliseconds value | 這個命令和 SETEX 命令相似,但它以毫秒為單位設定 key 的生存時間,而不是像 SETEX 命令那樣,以秒為單位。 |
STRLEN key | 返回 key 所儲存的字串值的長度。 |
INCR key | 將 key 中儲存的數字值增一。 |
INCRBY key increment | 將 key 所儲存的值加上給定的增量值(increment) 。 |
INCRBYFLOAT key increment | 將 key 所儲存的值加上給定的浮點增量值(increment) 。 |
DECR key | 將 key 中儲存的數字值減一。 |
DECRBY key decrement | key 所儲存的值減去給定的減量值(decrement) 。 |
APPEND key value | 如果 key 已經存在並且是一個字串, APPEND 命令將 value 追加到 key 原來的值的末尾。 |
Hash
hash特別適合用於儲存物件
命令 | 描述 |
---|---|
HDEL key field1 [field2] | 刪除一個或多個雜湊表字段 |
HEXISTS key field | 檢視雜湊表 key 中,指定的欄位是否存在。 |
HGET key field | 獲取儲存在雜湊表中指定欄位的值 |
HGETALL key | 獲取在雜湊表中指定 key 的所有欄位和值 |
HMGET key field1 [field2] | 獲取所有給定欄位的值 |
HINCRBY key field increment | 為雜湊表 key 中的指定欄位的整數值加上增量 increment |
HINCRBYFLOAT key field increment | 為雜湊表 key 中的指定欄位的浮點數值加上增量 increment |
HKEYS key | 獲取所有雜湊表中的欄位 |
HLEN key | 獲取雜湊表中欄位的數量 |
HSET key field value | 將雜湊表 key 中的欄位 field 的值設為 value |
HSETNX key field value | 只有在欄位 field 不存在時,設定雜湊表字段的值 |
HMSET key field1 value1 [field2 value2 ] | 同時將多個 field-value (域-值)對設定到雜湊表 key 中 |
HVALS key | 獲取雜湊表中所有值 |
HSCAN key cursor [MATCH pattern] [COUNT count] | 迭代雜湊表中的鍵值對 |
List
新增一個元素導列表的頭部(左邊)或者尾部(右邊)
命令 | 描述 |
---|---|
LPOP key | 移出並獲取列表的第一個元素 |
RPOP key | 移除並獲取列表最後一個元素 |
LPUSH key value1 [value2] | 將一個或多個值插入到列表頭部 |
RPUSH key value1 [value2] | 在列表中新增一個或多個值 |
BLPOP key1 [key2 ] timeout | 移出並獲取列表的第一個元素, 如果列表沒有元素會阻塞列表直到等待超時或發現可彈出元素為止。 |
BRPOP key1 [key2 ] timeout | 移出並獲取列表的最後一個元素, 如果列表沒有元素會阻塞列表直到等待超時或發現可彈出元素為止。 |
LPUSHX key value | 將一個或多個值插入到已存在的列表頭部 |
RPUSHX key value | 為已存在的列表新增值 |
RPOPLPUSH source destination | 移除列表的最後一個元素,並將該元素新增到另一個列表並返回 |
BRPOPLPUSH source destination timeout | 從列表中彈出一個值,將彈出的元素插入到另外一個列表中並返回它; 如果列表沒有元素會阻塞列表直到等待超時或發現可彈出元素為止。 |
LINDEX key index | 通過索引獲取列表中的元素 |
LINSERT key BEFORE|AFTER pivot value | 在列表的元素前或者後插入元素 |
LLEN key | 獲取列表長度 |
LRANGE key start stop | 獲取列表指定範圍內的元素 |
LREM key count value | 移除列表元素 |
LSET key index value | 通過索引設定列表元素的值 |
LTRIM key start stop | 對一個列表進行修剪(trim),就是說,讓列表只保留指定區間內的元素,不在指定區間之內的元素都將被刪除。 |
Set
Set是string型別的無序集合。集合成員是唯一的,這就意味著集合中不能出現重複的資料。
命令 | 描述 |
---|---|
SADD key member1 [member2] | 向集合新增一個或多個成員 |
SCARD key | 獲取集合的成員數 |
SDIFF key1 [key2] | 返回給定所有集合 |
SDIFFSTORE destination key1 [key2] | 返回給定所有集合的差集並存儲在 destination 中 |
SINTER key1 [key2] | 返回給定所有集合的交集 |
SINTERSTORE destination key1 [key2] | 返回給定所有集合的交集並存儲在 destination 中 |
SISMEMBER key member | 判斷 member 元素是否是集合 key 的成員 |
SMEMBERS key | 返回集合中的所有成員 |
SMOVE source destination member | 將 member 元素從 source 集合移動到 destination 集合 |
SPOP key | 移除並返回集合中的一個隨機元素 |
SRANDMEMBER key [count] | 返回集合中一個或多個隨機數 |
SREM key member1 [member2] | 移除集合中一個或多個成員 |
SUNION key1 [key2] | 返回所有給定集合的並集 |
SUNIONSTORE destination key1 [key2] | 所有給定集合的並集儲存在 destination 集合中 |
SSCAN key cursor [MATCH pattern] [COUNT count] | 迭代集合中的元素 |
Sorted Set
有序集合和集合一樣也是string型別元素的集合,且不允許重複的成員。
命令 | 描述 |
---|---|
ZADD key score1 member1 [score2 member2] | 向有序集合新增一個或多個成員,或者更新已存在成員的分數 |
ZCARD key | 獲取有序集合的成員數 |
ZCOUNT key min max | 計算在有序集合中指定區間分數的成員數 |
ZINCRBY key increment member | 有序集合中對指定成員的分數加上增量 increment |
ZINTERSTORE destination numkeys key [key ...] | 計算給定的一個或多個有序集的交集並將結果集儲存在新的有序集合 key 中 |
ZLEXCOUNT key min max | 在有序集合中計算指定字典區間內成員數量 |
ZRANGE key start stop [WITHSCORES] | 通過索引區間返回有序集合成指定區間內的成員 |
ZRANGEBYLEX key min max [LIMIT offset count] | 通過字典區間返回有序集合的成員 |
ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT] | 通過分數返回有序集合指定區間內的成員 |
ZRANK key member | 返回有序集合中指定成員的索引 |
ZREM key member [member ...] | 移除有序集合中的一個或多個成員 |
ZREMRANGEBYLEX key min max | 移除有序集合中給定的字典區間的所有成員 |
ZREMRANGEBYRANK key start stop | 移除有序集合中給定的排名區間的所有成員 |
ZREMRANGEBYSCORE key min max | 移除有序集合中給定的分數區間的所有成員 |
ZREVRANGE key start stop [WITHSCORES] | 返回有序集中指定區間內的成員,通過索引,分數從高到底 |
ZREVRANGEBYSCORE key max min [WITH SCORES] | 返回有序集中指定分數區間內的成員,分數從高到低排序 |
ZREVRANK key member | 返回有序集合中指定成員的排名,有序整合員按分數值遞減(從大到小)排序 |
ZSCORE key member | 返回有序集中,成員的分數值 |
ZUNIONSTORE destination numkeys key [key ...] | 計算給定的一個或多個有序集的並集,並存儲在新的 key 中 |
ZSCAN key cursor [MATCH pattern] [COUNT count] | 迭代有序集合中的元素(包括元素成員和元素分值) |
Stream
主要用於訊息佇列(MQ,Message Queue),Redis 本身是有一個 Redis 釋出訂閱 (pub/sub) 來實現訊息佇列的功能,但它有個缺點就是訊息無法持久化。而 Redis Stream 提供了訊息的持久化和主備複製功能,可以讓任何客戶端訪問任何時刻的資料,並且能記住每一個客戶端的訪問位置,還能保證訊息不丟失。
命令 | 描述 |
---|---|
XADD | 新增訊息到末尾 |
XTRIM | 對流進行修剪,限制長度 |
XDEL | 刪除訊息 |
XLEN | 獲取流包含的元素數量,即訊息長度 |
XRANGE | 獲取訊息列表,會自動過濾已經刪除的訊息 |
XREVRANGE | 反向獲取訊息列表,ID 從大到小 |
XREAD | 以阻塞或非阻塞方式獲取訊息列表 |
XGROUP CREATE | 建立消費者組 |
XREADGROUP GROUP | 讀取消費者組中的訊息 |
XACK | 將訊息標記為"已處理" |
XGROUP SETID | 為消費者組設定新的最後遞送訊息ID |
XGROUP DELCONSUMER | 刪除消費者 |
XGROUP DESTROY | 刪除消費者組 |
XPENDING | 顯示待處理訊息的相關資訊 |
XCLAIM | 轉移訊息的歸屬權 |
XINFO | 檢視流和消費者組的相關資訊; |
XINFO GROUPS | 列印消費者組的資訊; |
XINFO STREAM | 列印流資訊 |
HyperLogLog
用來做基數統計的演算法
優點:在輸入元素的數量或者體積非常非常大時,計算基數所需的空間總是固定的,並且是很小的。
一般使用:
-
統計註冊 IP 數
-
統計每日訪問 IP 數
-
統計頁面實時 UV 數
-
統計線上使用者數
-
統計使用者每天搜尋不同詞條的個數
什麼是基數?
比如資料集 {1, 3, 5, 7, 5, 7, 8}, 那麼這個資料集的基數集為 {1, 3, 5 ,7, 8}, 基數(不重複元素)為5。 基數估計就是在誤差可接受的範圍內,快速計算基數。
命令 | 描述 |
---|---|
PFADD key element [element ...] | 新增指定元素到 HyperLogLog 中。 |
PFCOUNT key [key ...] | 返回給定 HyperLogLog 的基數估算值。 |
PFMERGE destkey sourcekey [sourcekey ...] | 將多個 HyperLogLog 合併為一個 HyperLogLog |
釋出訂閱
一種訊息通訊模式:傳送者(pub)傳送訊息,訂閱者(sub)接收訊息。
命令 | 描述 |
---|---|
PSUBSCRIBE pattern [pattern ...] | 訂閱一個或多個符合給定模式的頻道。 |
PUBSUB subcommand [argument [argument ...]] | 檢視訂閱與釋出系統狀態。 |
PUBLISH channel message | 將資訊傳送到指定的頻道。 |
PUNSUBSCRIBE [pattern [pattern ...]] | 退訂所有給定模式的頻道。 |
SUBSCRIBE channel [channel ...] | 訂閱給定的一個或多個頻道的資訊。(建立頻道) |
UNSUBSCRIBE [channel [channel ...]] | 指退訂給定的頻道。 |
事務
隔離操作:事務中的所有命令都會序列化、按順序地執行。事務在執行的過程中,不會被其他客戶端傳送來的命令請求所打斷。
原子操作:事務中的命令要麼全部被執行,要麼全部都不執行。
三個階段:
-
開始事務。MULTI
-
命令入隊。
-
執行事務。EXEC
命令 | 描述 |
---|---|
DISCARD | 取消事務,放棄執行事務塊內的所有命令。 |
EXEC | 執行所有事務塊內的命令。 |
MULTI | 標記一個事務塊的開始。 |
UNWATCH | 取消 WATCH 命令對所有 key 的監視。 |
WATCH key [key ...] | 監視一個(或多個) key ,如果在事務執行之前這個(或這些) key 被其他命令所改動,那麼事務將被打斷。 |
命令 | 描述 |
---|---|
BGREWRITEAOF | 非同步執行一個 AOF(AppendOnly File) 檔案重寫操作 |
SAVE | 非同步儲存資料到硬碟(備份,將rdb檔案移動到安裝目錄並重啟服務集合恢復) |
BGSAVE | 在後臺非同步儲存當前資料庫的資料到磁碟 |
CLIENT KILL [ip:port] [ID client-id] | 關閉客戶端連線 |
CLIENT LIST | 獲取連線到伺服器的客戶端連線列表 |
CLIENT GETNAME | 獲取連線的名稱 |
CLIENT PAUSE timeout | 在指定時間內終止執行來自客戶端的命令 |
CLIENT SETNAME connection-name | 設定當前連線的名稱 |
CLUSTER SLOTS | 獲取叢集節點的對映陣列 |
COMMAND | 獲取 Redis 命令詳情陣列 |
COMMAND COUNT | 獲取 Redis 命令總數 |
COMMAND GETKEYS | 獲取給定命令的所有鍵 |
TIME | 返回當前伺服器時間 |
COMMAND INFO command-name [command-name ...] | 獲取指定 Redis 命令描述的陣列 |
CONFIG GET parameter | 獲取指定配置引數的值 |
CONFIG REWRITE | 對啟動 Redis 伺服器時所指定的 redis.conf 配置檔案進行改寫 |
CONFIG SET parameter value | 修改 redis 配置引數,無需重啟 |
CONFIG RESETSTAT | 重置 INFO 命令中的某些統計資料 |
DBSIZE | 返回當前資料庫的 key 的數量 |
DEBUG OBJECT key | 獲取 key 的除錯資訊 |
DEBUG SEGFAULT | 讓 Redis 服務崩潰 |
FLUSHALL | 刪除所有資料庫的所有key |
FLUSHDB | 刪除當前資料庫的所有key |
INFO [section] | 獲取 Redis 伺服器的各種資訊和統計數值 |
LASTSAVE | 返回最近一次 Redis 成功將資料儲存到磁碟上的時間,以 UNIX 時間戳格式表示 |
MONITOR | 實時打印出 Redis 伺服器接收到的命令,除錯用 |
ROLE | 返回主從例項所屬的角色 |
SHUTDOWN [NOSAVE] [SAVE] | 非同步儲存資料到硬碟,並關閉伺服器 |
SLAVEOF host port | 將當前伺服器轉變為指定伺服器的從屬伺服器(slave server) |
SLOWLOG subcommand [argument] | 管理 redis 的慢日誌 |
SYNC | 用於複製功能(replication)的內部命令 |