一、初始
1.redis特性
1.1:速度快(使用內存條內存、代碼簡潔而且是C語言、單線程【避免線程切換和靜態資源消耗】)
1.2:持久化
1.3:多種數據結構(String、List、Set、Zset、Hash)
1.4:支持多種編輯語言
1.5:功能豐富(發佈訂閱、Lua腳本實現自定義功能、支持簡單事務、pipeline提高客戶端的併發效率)
1.6:簡單(代碼簡潔、使用簡單)
1.7:主從複製
1.8:分佈式、集羣高可用
2.使用場景
2.1:緩存功能
2.2:計數器
2.3:消息隊列模式
2.4:排行榜
2.5:社交網絡
2.6:實時系統(垃圾郵件)
3.啓動方式
3.1:默認直接啓動
3.2:帶參數啓動
3.3:指定配置文件啓動
4.常用配置
4.1:端口(port)
4.2:是否設置爲守護進程(建設設置爲:yes)
4.3:日誌文件(logdir)
4.4:文件存放地址(dir)
二、API的理解和使用
1.通用命令
1.1:keys *(羅列所有的keys、不建議使用【可在從節點使用】)、keys h*【羅列h開頭的key】
1.2:dbsize(統計存在的key數量、有統計數據機制)
1.3:del key(刪除指定的key,可刪除多個)
1.4:exists key(判斷key是否存在,不存在返回0,存在返回1)
1.5:expire key(設置key過期時間)、ttl(查看還有多長時間過期。-2表示已經過期不存在。-1表示key存在而且沒有過期時間)、persist(去掉key的過期時間)
1.6:type key(判斷key值的類型。String、List、Hash、Set、Zset、None【不存在key時返回】)
2.數據結構和內部編碼
使用空間換時間方式:
string=》(raw、int、embstr)、hash=》(hashtable、ziplist)、list=》(linkedList、ziplist)、set=》(hashtable、intset)、zset=》(skiplist、ziplist)
redisObject存在兩種數據(數據類型:type【string、list、hash、set、zset】、編碼方式:encoding【raw、int、ziplist、hashtable、linkedlist、hashmap、intset】)
3.單線程
redis屬於單線程模式【拒絕長命令(keys、flushall、slow lua script....)】,會出現阻塞現象
3.1:redis單線程快=》純內存【主要原因】、非阻塞IO、避免線程切換和靜態資源消耗
4.字符串(緩存、計數器、分佈式鎖)
4.1:命令
get key(獲取key對應的值)
mget key1 key2 key3...(批量獲取值,時間複雜度O(n))
mset key1 value1 key2 value2...(批量設置值,時間複雜度O(1))
set key value(設置key的值爲value、不管key是否存在、都設置)
set key value nx(設置key的值爲value、key不存在、才設置)
set key value xx(設置key的值爲value、key存在、才設置)
incr key(#key自增1、如果key不存在、自增後get(key)=1)
decr key(#key自減1、如果key不存在、自減後get(key)=-1)
incrby key k(#key自增1、如果key不存在、自增後get(key)=k)
decrby key(#key自減k、如果key不存在、自減後get(key)=-k)
getset key newvalue(#set key newvalue並返回舊的value)
append key value(#將value追加到舊的value)
strlen key(返回字符串長度【注意中文】)
incrbyfloat key 4.5(增加key對應的值3.5)
getrange key start end(獲取字符串指定下標所有的值)
setrange key index value(設置指定下標所對應值)
4.1:結構和命令
4.2:快速實戰
4.3:內部編碼
4.4:查漏補缺