redis學習筆記:

一、初始

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:查漏補缺

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章