redis開發與運維讀書筆記 第二章

2021-09-27 04:03:36 字數 2754 閱讀 5742

keys *:查詢所有的key,遍歷所有的key,時間複雜度為o(n)。當資料量很大時,會非常慢,線上不建議使用;

dbsize:返回所擁有的key的數量。redis內部有乙個記錄當前key數量的值,因此時間複雜度為o(1)

exists:檢查key是否存在;

del:刪除指定的key,可批量操作;

expire:設定過期時間;

ttl:返回key的剩餘存貨時間,或者-1(key沒有設定過期時間),-2(key不存在)

type:返回key的型別

redis一共有五種資料結構:string, hash, set, sorted set, list

可以使用object encoding命令,來分別檢視key的內部編碼

由於redis是單執行緒架構,因此不會存在併發問題/

為什麼單執行緒還那麼快?

某個命令過長的情況:由於redis是單執行緒,當某個命令過長的時候,會讓其它命令等待時間很長,這種情況應該避免。

1. 常用命令

設定值

獲取值批量設定,獲取值

使用批量操作和非批量操作的時間消耗:

計數int, embstr, raw

快取:獲取使用者資訊時,我們可以將使用者資訊存放在redis中,這樣子就避免了下一次讀取使用者資訊時,還得從磁碟讀取。偽**如下:

public userinfo getuser

(long userid)

return

deserialize

(userinfo)

;}

計數
public

long

incrcount

(long userid)

限速:這個我們的生活中常常能碰到,例如,簡訊驗證碼一分鐘內最多只能傳送五次。
phonenum =

"138******xx"

; key =

"shortmsg:limit:"

+ phonenum;

// set key value ex 60 nx

i***ists = redis.

set(key,1,

"ex 60"

,"nx");

if(i***ists != null || redis.

incr

(key)

<=5)

else

2.3.1 命令

設定值:hset key field value獲取值:hget key field刪除field:hdel key field [field ... ]計算field個數:hlen key批量設定,獲取field:hmget key field [field ...]

mset key field value [field value ...]判斷key是否存在:hexists key field獲取所有的field:hkeys key獲取所有的value:hvals key獲取所有的key-value:hgetall key

2.3.2 內部編碼

ziplist

hashtable

2.3.3 應用場景

儲存使用者資訊:下面這張圖體現了資料庫和redis儲存使用者資訊時的差異,redis看起來更加清晰。而且,當資料庫表的字段增加一列的時候,所有的使用者都必須為這一列增加新的值,redis更為靈活。

使用redis新增使用者資訊的偽**:

public userinfo getuserinfo

(long userid)

else

}

2.4.1 命令

新增命令:

查詢:2.4.2 資料結構

ziplist

linkedlist

quicklist

2.4.3 應用場景

文章列表

2.5.1 命令

集合內操作

集合間的操作

2.5.2 內部編碼

intset:元素較少且均為整數

hashtable

2.5.3 應用場景

給使用者新增標籤

2.6.1 命令

集合內

2.6.2 內部編碼

ziplist

skiplist

2.6.3 應用場景

排行榜

《Redis開發與運維》慢查詢分析 讀書筆記

慢查詢日誌就是系統在命令執行前後計算每條命令的執行時間,當超過了設定的閥值,就將這條命令的資訊 發生時間 耗時 命令詳細資訊等 記錄下來。客戶端命令執行生命週期 redis的客戶端分為四個部分,如下圖所示 注意 慢查詢只統計命令執行時間,所以沒有慢查詢並不代表客戶端沒有超時問題。慢查詢引數配置 修改...

mysql運維 讀書筆記 Mysql 讀書筆記

mysql儲存時間有兩種型別 datetime和timestamp。分別說一下兩者的區別。datetime,以8位元組儲存時間,理論上可以從0000年儲存到9999年。並且沒有時區的概念,它儲存的就是乙個時間點的概念。timestamp和datetime最主要的不同就是,它是以4個位元組儲存,由19...

《Redis開發與運維》筆記 初識Redis

目錄 redis優點 redis特性 速度快基於鍵值對的資料結構伺服器 豐富的功能 簡單穩定 客戶端語言多 持久化主從複製 高可用和分布式 redis使用場景 redis可以做什麼 redis不可以做什麼 用好redis的建議 切勿當作黑盒使用,開發與運維同樣重要 閱讀原始碼 redis重大版本 r...