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 操做
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 ...]