一些廢話
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