Redis必知必會之API

一些廢話

1.Redis是一個開源、基於鍵值的存儲系統、多種數據結構、功能豐富。
2.Redis支持持久化,斷電不丟數據,對數據的更新異步保存到磁盤上。
3.Redis支持字符串、哈希、列表、集合、有序集合、位圖、超小內存惟一計數、地理信息定位。
4.Redis支持多語言客戶端,支持發佈訂閱,Lua腳本,事物,不依賴外部庫,單線程模型,支持主從複製,高可用,分佈式。
5.Redis典型使用場景有緩存系統、計數器,消息隊列系統、排行榜、社交網絡、實時系統。
6.啓動方式分爲redis

  • 最簡啓動 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.通用命令app

  • 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.集合類型lua

  • 無序 無重複 支持集合間操做
  • 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.有序集合類型spa

  • 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

相關文章
相關標籤/搜索