Redis 必知必會之 API

蕭瀟發表於2020-01-07

一些廢話

1.Redis是一個開源、基於鍵值的儲存系統、多種資料結構、功能豐富。

2.Redis支援持久化,斷電不丟資料,對資料的更新非同步儲存到磁碟上。

3.Redis支援字串、雜湊、列表、集合、有序集合、點陣圖、超小記憶體唯一計數、地理資訊定位。

4.Redis支援多語言客戶端,支援釋出訂閱,Lua指令碼,事物,不依賴外部庫,單執行緒模型,支援主從複製,高可用,分散式。

5.Redis典型使用場景有快取系統、計數器,訊息佇列系統、排行榜、社交網路、實時系統。

6.啟動方式分為

  • 最簡啟動 redis-server
  • 動態引數 redis-server --port 6380
  • 配置檔案 redis-server configPath

7.驗證是否啟動

  • ps -ef | grep redis
  • netstat -antpl | grep redis
  • redis-cli -h ip -p port ping

8.Redis客戶端返回值有狀態回覆、錯誤回覆、整數回覆、字串回覆、多行字串回覆。
9.常用配置

  • daemonize 是否是守護程式
  • port 對外埠
  • logfile 日誌
  • dir 工作目錄

10.一次只執行一條命令,拒絕長慢命令,不要輕易執行 keys、flushdb、flushall、show lua script等。

11.其實redis不是單執行緒 例如如下API fysnc file descriptor、close file descriptor

Redis API

1.通用命令

  • keys: 計算所有的鍵 O(n)
  • dbsize: 資料庫大小
  • exists keys: key是否存在
  • del:刪除key
  • expire key seconds: 設定過期時間
  • type key: 獲取key的資料型別
  • ttl key: 檢視key的剩餘過期時間
  • persist key: 去掉key的過期時間

2.列表型別

  • rpush key value1 value2 valueN O(1-n)
  • lpush key value1 value2 valueN O(1-n)
  • linsert key before|after value newValue O(n)
  • lpop key
  • rpop key
  • lrem key count value (刪除count個value元素) 0(n)
  • ltrim key start end (按照索引範圍修剪列表) o(n)
  • lrange key start end (包含end) (獲取列表制定索引範圍)
  • lindex key index o(n)
  • llen key
  • lset key index newValue
  • blpop key timeout (lpop的阻塞版本)
  • brpop key timeout (rpop的阻塞版本)
  • lpush + lpop = stack
  • lpush + rpop = queue
  • lpush + ltrim = Capped Collection
  • lpush + brpop = Message Queue

3.字串型別

  • 場景:快取、計數器、分散式鎖
  • get key
  • set key value
  • incr key
  • decr key
  • incrby key k
  • decrby key k
  • setnx key value 值不存在才設定
  • set key value xx 存在才設定
  • mget 批量獲取 O(n)
  • mset 批量設定 O(n)
  • getset key newvalue 設定新值返回舊值
  • append key value 將新值追加到舊值
  • strlen 獲取值的長度
  • incrbyfloat key 3.5 增加對應key 3.5
  • getrange key start end
  • setrange key start value

4.集合型別

  • 無序 無重複 支援集合間操作
  • sadd key element (新增)
  • srem key element (刪除)
  • scard key
  • sismember key element
  • srandmember key count (隨機選出count個元素)
  • spop key (隨機彈出一個元素)
  • smembers key (取出所有元素 小心使用)
  • sscan (遍歷集合)
  • sdiff 差集
  • sinter 交集
  • sunion 並集
  • sadd = 打標籤
  • spop/srandmember = 隨機
  • sadd + sinter = Social Graph

5.有序集合型別

  • zadd key score element O(logN)
  • zrem key element (刪除)
  • zscore key element
  • zincrby key increScore element (增加分數)
  • zcard key (返回個數)
  • zrange key start end withscores (獲取元素) (O(logN + m))
  • zrangebyscore key minScore maxScore
  • zcount key minScore maxScore (O(logN + m))
  • zremrangebyrank key start end (刪除指定排名內的升序元素)
  • zremrangebyscore key start end (刪除指定分數內的升序元素)
  • zrevrank
  • zrevrange
  • zrevrangebyscore
  • zinterstore
  • zunionstore

6.雜湊型別

  • hget key filed
  • hset key field value
  • hdel key field
  • hgetall key O(n)
  • hexists key field
  • hlen key 獲取欄位數量
  • hmget key field1 field2 O(n)
  • hmset key field1 value1 field2 value2 O(n)
  • hincrby key field value
  • hvals key 返回hash key對應所有field的value O(n)
  • hkeys key 返回hash key對應的所有field O(n)
  • hsetnx key field value
  • hincrby key field intCounter
  • hincrbyfloat key field floatCounter

image.png

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章