Redis學習二(數據操做).

key 操做

  • 刪除 key:del key
  • 批量刪除key:redis-cli -a(密碼)keys 「QXJ_*」| xargs redis-cli -a(密碼)del
  • 查看全部的 key(一次性遍歷整個數據庫,生產上慎重使用):keys [pattern]
  • 利用 cursor 分頁查詢記錄(漸進的遍歷整個數據庫,生產上推薦):scan cursor [MATCH pattern] [COUNT count]redis

    scan 0 match '*order*' count 20
  • 序列化給定 key,並返回被序列化的值:dump key
  • 檢查給定 key 是否存在:exists key
  • 爲 key 設置過時時間(秒)/ (時間戳)/(毫秒):expire key seconds / expireat key timestamp / pexpire key milliseconds
  • 移除 key 的過時時間,key 將持久保存:persist key
  • 以毫秒爲單位返回 key 的剩餘過時時間:pttl key
  • 返回 key 所存儲的值得類型:type key
  • 返回從當前數據庫中隨機選擇的一個key:randomkey
  • 原子的重命名一個key :rename oldkey newkey數據庫

Redis 的超時處理機制?

  • 當 client 主動訪問 key 會先對 key 進行超時判斷,過期的 key 會馬上刪除。
  • master 的後臺,會每秒作 10 次以下操做 — 隨機選取 100 個key校驗是否過時,若是有25個以上的 key 過時了,馬上額外隨機選取下 100 個key(不計算在10次以內)。

Redis 的中文顯示問題?

在 redis-cli 中使用中文時,必須打開 --raw 選項,才能正常顯示中文。bash

/usr/bin/redis-cli --raw

string 操做

  • 保存 key 和 value(nx 表示 key 不存在的時候才賦值,xx 相反):set key value [ex 秒數] / [px 毫秒數] [nx] /[xx]
  • 僅當 key 不存在的時候才賦值(經常使用來作分佈式鎖):setnx key value
  • 原子的設置 key 的值,並返回 key 的舊值(配合 setnx 實現分佈式鎖):getset key value
  • 批量設置 key、value 的值:mset key1 value1 ... keyN valueN
  • 獲取/批量獲取 value 值:get key / mget key1....keyN
  • 對 key 的值作加1或減1操做:incr/decr key
  • 對 key 的值指定加/減某個數值:incrby/decrby key integer、incrbyfloat key floatnumber
  • 對 key 的 value 追加值:append key value
  • 返回截取過的 key 的字符串值,注意並不修改 key 的值:substr key start end
  • 位操做(位置相反,右邊表示低位,offset 過大,則會在中間填充0):setbit key offset value、getbit key offset

list 操做

  • 向列表左邊插入元素:lpush key value [value ...]
  • 從列表右邊移出元素:rpop key
  • 在 key 對應 list 的特定位置以前或以後添加字符串元素:linsert key before|after pivot value數據結構

    linsert mylist before "world" "there"
  • 返回 key 對應 list 的長度:llen key
  • 經過索引獲取列表中的元素:lindex key index
  • 獲取列表指定範圍內的元素(-1 表示最後一個元素):lrange key start end
  • 保留指定區間內元素:ltrim key start end
  • 設置list中指定下標的元素值:lset key index value
  • 從列表右邊移出元素的阻塞方式,採起先到先服務原則,timeout 未獲取到則返回 nil:brpop key [key ...] timeoutapp

set 操做

  • 添加元素:sadd key value
  • 移除元素,成功返回1:srem key
  • 移除集合中的一個隨機元素並返回:spop key
  • 返回集合中一個或多個隨機數:srandmember key count
  • 根據 key 得到集合中的全部成員:smembers key
  • 判斷 member 是否在 set 中:sismember key member
  • 獲取集合的成員數:scard key
  • 把 member 從 source 集合轉移到 des 集合:smove source des member
  • 返回給定集合的差集:sdiff key1 key2
  • 返回給定集合的並集:sunion key1 key2
  • 返回給定集合的交集:sinter key1 key2...keyN

zset 操做

  • 添加元素到集合:zadd key score member
  • 刪除元素:zrem key member
  • 返回集合中的元素數量:zcard key
  • 返回指定元素對應的 score:zscore key element
  • 增長對應 member 的 score 值,保持有序,返回更新後的 score 值:zincrby key incr member
  • 返回指定元素在集合中的排名,順序/逆序:zrank/zrevrank key member
  • 返回有序集合中,指定範圍內的元素:zrange key start end (zrange key 0 -1)
  • 返回有序集合中,指定分數區間內的元素(能夠指定 inf 爲無窮,withscores 表示須要返回分數):zrangebyscore key min max (zrangebyscore key -inf inf withscores)
  • 評分的聚合:zunionstore destination numkeys key [key ...] [weights weight] [aggregate sum | min | max]dom

    zunionstore award 2 visits votes weights 1 2 aggregate sum
    • destination:表示生成的目標集合
    • numkeys:須要聚合的集合數量,對應後面的 key [key ...] 數量和
    • weights:乘法因子,默認爲 1,每一個給定有序集的全部成員的 score 值在傳遞給聚合函數(aggregation function)以前都要先乘以該因子
    • aggregate:集合函數,有 sum、min、max

hash 操做

  • 存儲/批量存儲 hash 值:hset key field value / hmset key field1 value1 field2 value2
  • 獲取/批量獲取 hash 值:hget key field / hmget key filed1....fieldN
  • 獲得 hash 中的全部值:hgetall key
  • 測試指定 field 是否存在:hexists key field
  • 刪除一個或多個哈希字段:hdel key field1 [field2]
  • 返回 hash 的全部 field:hkeys key
  • 返回指定 hash 的 field 數量:hlen key

HyperLogLog 操做

HyperLogLog 主要解決大數據應用中的非精確計數(可能多也可能少,可是會在一個合理的範圍) 操做,它能夠接受多個元素做爲輸入,並給出輸入元素的基數估算值,基數指的是集合中不一樣元素的數量。分佈式

HyperLogLog 的優勢是,即便輸入元素的數量或者體積很是很是大,計算基數所需的空間老是固定的、而且是很小的。在 Redis 裏面,每一個 HyperLogLog 鍵只須要花費 12 KB 內存,就能夠計算接近 2^64 個不一樣元素的基數。關於數據偏差,在一個大小爲 12k 的 key 所存儲的 hyperloglog 集合基數計算的偏差約是 0.81%。函數

由於 HyperLogLog 只會根據輸入元素來計算基數,而不會儲存輸入元素自己,因此 HyperLogLog 不能像集合那樣,返回輸入的各個元素。測試

HyperLogLog 的這個數據結構能夠很是省內存的去統計各類計數,好比註冊 IP 數、每日訪問 IP 數、頁面實時UV 、在線用戶數等。大數據

  • 將元素添加至 HyperLogLog :pfadd key element [element ...]
  • 返回給定 HyperLogLog 的基數估算值(多個 HyperLogLog 會先對 HyperLogLog 做並集處理):pfcount key [key ...]
  • 合併多個 HyperLogLog:pfmerge destkey sourcekey [sourcekey ...]
相關文章
相關標籤/搜索