Redis-通用指令篇

上一篇:Redis-數據類型篇

Redis-通用指令篇

Redis簡介

Redis是C語言開發的一個高性能鍵值對(key -value) 內存數據庫,可以用作數據庫,緩存和消息中間件等。

特點

  1. 作爲內存數據庫,它的性能非常優秀,數據存儲在內存當中,讀寫速度非常快,支持併發10W QPS(每秒查詢次數),單進程單線程,是線程安全的,採用IO多路複用機制。

  2. 豐富的數據類型,支持字符串,散列,列表,集合,有序集合等,支持數據持久化。可以將內存中數據保存在磁盤中,重啓時加載。

  3. 主從複製,哨兵,高可用,可用作分佈式鎖。可以作爲消息中間件使用,支持發佈訂閱。


Redis——通用命令操作

key是什麼?

不同於上一篇所說的數據類型都是指Redis中value值的類型
value常用數據結構類型:string、list、hash、set、sorted_set

key 是一個字符串,在Redis中可以通過 key 來獲取 Redis 中保存的數據
Redis是key-value型數據庫

redis 中的 key 是二進制安全的,這意味着可以用任何二進制值作爲key,包括空字符串

key 值取值一般不要過長,在數據中查找這類 key 的計算成本較高,消耗內存。但是也不能過短,最好做到知名見意

針對key的一些常用操作?

1. 對於key的自身狀態控制的相關操作:

刪除指定key

del key // 成功 1  失敗 0

獲取key是否存在

exists key // 存在 1  不存在 0

獲取key類型

type key  // 獲取顯示的是key對應value對應的數據結構的類型

2. 對於key的時效性相關操作:

時效性問題:

緩存雪崩:指某個時間段緩存中的key集體失效,造成了大流量直接訪問到數據庫,從而使數據庫壓力過大被壓垮,expire key seconds

解決:緩存時間隨機,使得它儘可能分散,避免它們同時失效,一般來說大熱門的數據緩存時間設置長一些,沒那麼熱門的設置短一些

緩存擊穿:指一個非常熱點的數據,不停的被高併發訪問,當這個key在時效的瞬間,大流量直接穿透緩存打到了數據庫上,就會造成數據庫被壓垮

解決:這些非常熱點的key設置爲永不過期 如:persist key,其他方法如(互斥鎖:集羣下的SETNX 布隆過濾器等)以後再討論。

緩存穿透:查一個數據庫不存在的數據,如用戶ID爲 -1

解決:緩存空值,數據庫查詢爲空的也放到緩存,然後設置一個較短的過期時間expire key seconds 如 60s


爲指定key設定有效期

expire key seconds // 以秒計  成功 1  失敗 0

pexpire key milliseconds // 以毫秒計...

expireat key timestamp // EXPIREAT 的作用和 EXPIRE 類似,都用於爲 key 設置過期時間。 不同在於 EXPIREAT 命令接受的時間參數是 UNIX 時間戳。

pexpireat key milliseconds-timestamp // 設置 key 過期時間的 UNIX 時間戳 以毫秒計

獲取key的有效時間

查看某個key的剩餘過期時間,返回值:

爲 -2 表示這個key已經過期,刪除掉

爲 -1 表示沒有設置過期時間

其它 表示剩餘的生存時間,單位爲秒

ttl key  // 以秒爲單位

pttl key // 以毫秒爲單位

切換key的時效性爲永久

persist key //  成功 1  失敗 0

3. 對於key的查詢檢索相關操作:

獲取所有key

keys pattern  // 模糊查找

pattern匹配規則

* 匹配任意數量的任意符號

? 配合一個任意符號

[] 匹配一個指定符號

命令 介紹
keys * 查詢所有,爲空則(empty list or set)
keys it* 查詢所有以it開頭的
keys *ame 查詢所有以ame結尾
keys ??me 查詢所有前面兩個字符任意,後面以me結尾
keys nam? 查詢所有以nam開頭,最後一個字符任意
keys n[nm]e 查詢所有以n開頭,以e結尾,中間包含一個字母,n或m

4. 對於key的其他操作:

爲 key 改名

 rename key newkey   // 直接修改,當 key 和 newkey 相同,或者 key 不存在時,返回一個錯誤。
 
 renamenx key newkey  // 僅當 newkey 不存在時,將 key 改名爲 newkey 。

對所有 key 排序

sort key  // 只是取出來排序返回結果,不會影響原來數據結構數據順序

在Redis中隨機返回一個 key

RANDOMKEY
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章