1. 程式人生 > >Redis學習筆記(一)— 基本命令和資料型別

Redis學習筆記(一)— 基本命令和資料型別

MacOs環境

Redis基本命令

  • 啟動服務:redis-server
  • 連線服務:redis-cli
    • -h 指定主機/IP
    • -p 指定埠
    • -a 指定密碼
  • 關閉服務:先shutdown 儲存資料並關閉服務;再quit 退出服務
  • 獲取伺服器資訊
    • 啟動並連線服務之後,執行info
    • 或直接在shell中執行redis-cli info
    • 引數指定要獲取的某部分資訊,例如info memory用來獲取記憶體資訊
      • Server:關於Redis伺服器的基本資訊
      • Clients:客戶端連線的狀態和指標
      • Memory:大致的記憶體消耗指標
      • Persistence:資料持久化相關的狀態和指標
      • Stats:總體統計資料
      • Replication:主從複製相關的狀態和指標
      • CPU:CPU使用情況
      • Cluster:Redis Cluster的狀態
      • Keyspace:資料庫相關的統計資料

Redis資料型別

  • 字串
    • set 設定鍵值對,已存在則覆蓋,成功返回OK
      • SET <key> <value>
    • get 返回鍵對應的值,不存在則返回nil
    • strlen返回鍵對應的值的長度,不存在則返回0
    • append向鍵的字串值末尾追加字串,返回新串長度
    • setrange更新字串值,偏移從0開始,返回新串長度
      • setrange key 偏移值 newValue
    • setnx設定鍵值對,已存在則返回0不覆蓋;成功返回1
    • msetmget 一次性設定多個鍵值對
      • MSET key value [key value...]
    • object encoding <key>檢視字串編碼方式
      • int
      • embstr 長度小於等於44位元組的字串
      • raw 長度大於44位元組的字串
  • 列表
    • lpush左端插入 rpush右端插入
      -lrange <list> 0 -1獲取所有list的值
      • 列表索引可以按照從左到右指定為0 ~ N-1,也可以按照從右到左指定為-1 ~ -N
    • linsert <list> after v1 v2在list列表的v1元素後面插入v2
    • lindenx <list> 3
      獲取list中索引為3的元素(0開始)
    • lpushxrpushx列表存在時才將元素插入
    • lpoprpop左右兩端刪除,不存在返回nil
    • ltrim <list> index1 index2 刪除list中index1-index2之外的元素
    • lset <list> index value將list索引為index的值設定為value
    • blpop <list> timebrpop <list> time 若list中無資料,阻塞time秒,0表示持續阻塞
  • 雜湊
    • hmset <hashName> field name [field name...]設定雜湊表
    • hmget <hashName> field field...從一個雜湊表中獲取多個欄位對應的值
    • hget <hashName> field從一個雜湊表中獲取某個欄位對應的值
    • hexists <hashName> field測試一個雜湊中是否存在某個欄位
    • hgetall獲取一個hash的所有欄位值(過大的雜湊容易造成阻塞)
    • hscan key cursor [MATCH pattern] [COUNT number]增量地迭代遍歷元素
      • cursor表示遊標,迭代開始位置
      • MATCH匹配滿足制定Glob表示式的欄位
      • COUNT指定每次迭代的返回元素個數,預設是10
      • 返回的新遊標為0時表示遍歷完成
    • hset修改現有欄位的值或增加新的欄位
    • hdel刪除一個hash中的某個欄位
    • hsetnx欄位不存在時設定欄位
  • 集合
    • 唯一、無序
    • sadd set member [member...]給集合新增元素
    • sismember set member檢測member是否在set中
    • srem從集合中刪除元素
    • scard獲取集合中元素數量
    • 集合運算
      • 並集計算:sunionsunionstore
      • 交集計算:sintersinterstore
      • 差集計算:sdiffsdiffstore
      • 不帶store直接返回操作結果;反之將結果存到一個指定的鍵中
  • 有序集合
    • zadd 新增集合元素
    • zrevrange獲取集合排序
    • zincrby對集合中某個元素增加權重
    • zrevrank檢視元素排名
    • zscore檢視元素權重
    • zunionstore sumName 2 set1 set2 weights 1 2 合併兩個集合排名
      • 第一個2指合併的集合數目
      • weights後面的數字指集合權重的倍數,set1的權重值乘1,set2的權重值乘2
  • HyperLogLog
    • pfadd 增加數量
    • pfcount計算非重複總量
  • Geo
    • geoadd增加經緯度座標
    • geopos獲取指定成員座標
    • georadius獲取指定範圍內的座標,中心點由輸入的經緯度指定
    • georadiusbymember獲取指定範圍內的座標,中心點由Geo集合中的成員指定
    • geodist比較兩個座標點的距離
  • 鍵管理
    • dbsize獲取Redis中鍵的個數
    • keys *scan number獲取Redis中的所有鍵
    • delunlink刪除Redis中的鍵
    • exists判斷一個鍵是否存在
    • type獲取一個鍵的資料型別
    • rename重新命名一個鍵
      • 最佳實踐:如果目標鍵已存在,則先unlink再重新命名