redis學習筆記(三)--Redis的功能

慢查詢

基本概念

慢查詢日誌記錄命令執行先後的超時的執行時間。(只記錄命令執行時間)git

慢查詢的兩個配置

Redis提供了slowlog-log-slower-thanslowlog-max-len兩個配置。redis

slowlog-log-slower-than

slowlog-log-slower-than是預設閥值,默認值10000微秒。若是執行的時間超過了這個閥值,那麼這個命令就會被記錄在慢查詢日誌中。算法

運維提示

設置slowlog-log-slower-than=0 ==> 記錄全部命令
設置slowlog-log-slower-than<0 ==> 對於任何命令都不會記錄vim

slowlog-max-len

slowlog-max-len說明慢查詢日誌最多存儲多少條。數組

修改方式

方式一

修改配置文件:併發

$ vim redis.conf
...
slowlog-log-slower-than 10000
slowlog-max-len 5
方式二

使用config set命令:運維

> config set slowlog-log-slower-than 20000
> config set slowlog-max-len 1000
> config rewrite  # 配置持久化到本地配置文件

命令

獲取慢查詢日誌
> slowlog get [n]

慢查詢日誌由日誌標識id、發生時間戳、命令耗時、執行命令和參數組成。性能

獲取慢查詢日誌
> slowlog len
慢查詢日誌重置
> slowlog reset

Redis Shell

redis-cli

命令執行屢次

-r可讓命令執行屢次。
例如執行三次ping命令:測試

$ redis-cli -r 3 ping

間隔時間執行命令

-i表示間隔多少秒執行一次命令。
例如每一個1秒執行一次ping命令,一共執行5次:this

$ redis-cli -r 5 -i 1 ping

從標準輸入讀取數據

-r表明從標準輸入讀取數據做爲redis-cli的最後一個參數。
例如:

$ echo "hello" | redis-cli -x set key

鏈接Redis Cluster節點

-c用於鏈接Redis Cluster節點時使用。

密碼登陸

若是Redis配置了密碼,使用-a輸入密碼。

掃描指定模式

--scan--pattern用於掃描指定模式的鍵。

模擬當前Redis節點的從節點

--slave是把當前Redis節點的從節點,用來獲取當前Redis節點的更新操做。

生成併發送RDB持久化文件

--rdb會請求Redis示例生成併發送RDB持久化文件,保存在本地。

查看Redis的重要統計信息

--stat能夠實時獲取Redis的重要統計信息。

$ redis-cli --stat

redis-server

測試內存容量

--test-memory可用於測試系統內存是否夠Redis使用。
例如檢測當前系統是否能提供1G內存給Redis:

$ redis-server --test-memory 1024

測試完成輸入passed this test。

redis-benchmark

redis-benchmark用於爲Redis作基準性能測試。

命令

設置併發數量

-c設置客戶端的併發數量,默認爲50。

設置請求總量

-n表明客戶端的請求總量,默認爲100000。

Pipeline(流水線)

基本概念

對一組Redis命令進行組裝,經過一次RTT(往返命令時間)傳輸給Redis。pipeline每次只能做用一個Redis節點上。

使用

從開發層面來控制。
鏈接:https://blog.csdn.net/weixin_...

事務和Lua

基本概念

Redis提供了簡單的事務功能以及集成Lua腳原本解決問題。

事務

Redis提供簡單的事務功能,將一組須要一塊兒執行的命令放到multiexec兩個命令之間。

> multi
> set key hello
QUEUED # 表示命令並無真正執行
> exec

可使用discard命令來中止事務的執行

> discard

watch命令能夠監控一個或多個鍵,若是有鍵在事務修改期間被別的方式修改,則以後的事務不會執行。

> watch key

Lua

在Redis中執行Lua腳本有兩種方法:evalevalsha

eval
> eval 腳本內容 key個數 key列表 參數列表

能夠經過redis-cli--eval執行Lua腳本。

evalsha

經過獲得腳本的SHA1校驗和來直接執行對應的Lua腳本。可使Lua腳本常駐在服務端。

加載腳本

將腳本內容加載到Redis的內存中:

$ redis-cli script load "$(cat lua_get.lua)"

獲得Lua腳本的SHA1。

執行腳本
> evalsha 腳本SHA1值 key個數 key列表 參數列表
管理Lua腳本
加載腳本到Redis內存中
> script load script
檢測腳本是否存在
> scripts exists sha1 [sha1 ...]
清除內存中已經加載的全部腳本
> script flush
終止正在執行的腳本
> script kill

Bitmap位圖

基本概念

以二進制來表示數據。

命令

設置值

> setbit key offset value

設置鍵的第offset各位的值

獲取值

> gitbit key offset

獲取Bitmaps指定範圍值爲1的個數

> bitcount start end

Bitmaps間的運算

> bitop op destkey key[key ....]

bitop包括了:and交集、or並集、not非、xor異或。將結果保存在destkey中。

HyperLogLog

基本概念

一種基準算法。

命令

添加

> pfadd key element [element ...]

添加成功返回1。

計算獨立用戶數

> pfcount key [key ...]

合併

> pfmerge destkey sourcekey [siyrcekey ..]

發佈訂閱

基本概念

在"發佈/訂閱"的模式下,消息發送者和訂閱者不進行直接通訊,發佈者客戶端向指定的頻道(channel)發佈消息,訂閱該頻道的每一個客戶端均可以收到該消息。

命令

發佈消息

> publish channel message

訂閱消息

> subscribe channel [channel ...]

取消訂閱

> unsubscribe [channel [channel ...]]

按照模式訂閱和取消訂閱

> psubscribe pattern [pattern ...]
> punsubscribe [pattern [pattern ...]]

查閱訂閱

查看活躍的頻道
> pubsub channels [pattern]
查看頻道訂閱數
> pubsub numsub [channel ...]
查看模式訂閱數
> pubsub numpat

GEO

基本概念

Redis3.2版本提供了GEO(定理信息定位)功能。

命令

增長地理位置信息

> geoadd key longitude latitude member [longitude latitude member ...]
longitude:經度
latitude:維度
member:成員

獲取地理位置信息

> geopos key member [member ...]

獲取兩個地理位置的距離

> geodist key member1 member2 [unit]

unit表明返回的結果的單位:

m(meters):米
km(kilometers):千米
mi(miles):英里
ft(feet):表明尺

獲取指定位置範圍內的地理信息位置集合

> georadius key longitude latitude raniusm|km|ft|mi 
> georadiusbymember key member raniusm|km|ft|mi

獲取geohash

> geohash key member [member ...]

刪除地理位置信息

> zrem key member

GEO的底層實現是zset,因此借用zrem命令實現對地理位置信息的刪除。

相關文章
相關標籤/搜索