一些廢話
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: 當前資料庫的 key 的數量
- 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
本作品採用《CC 協議》,轉載必須註明作者和本文連結