目錄
1、概念
Redis 是完全開源免費的,遵守 BSD 協議,是一個高性能的 key-value 數據庫。C語言編寫。Redis 是單進程單線程的,Redis 利用隊列技術將併發訪問變爲串行訪問,消除了傳統數據庫串行控制的開銷。
2、數據結構
Redis 支持五種數據類型:string(字符串),hash(哈希),list(列表), set(集合)及 zsetsorted set:有序集合)。
我們實際項目中比較常用的是 string,hash。 如果你是 Redis 中高級用戶,還需要加上下面幾種數據結構 HyperLogLog、Geo、Pub/Sub。
如果你說還玩過 Redis Module,像 BloomFilter,RedisSearch,Redis-ML。
3、特點優勢
1.可持久化
Redis支持數據的持久化,可以將內存中的數據保存在磁盤中,重啓的時候可以再次加載進行使用
2. 支持數據類型多
Redis不僅僅支持簡單的 key-value 類型的數據,同時還提供 list,set,zset,hash 等數據結構的存儲
3. 性能極高
Redis 能讀的速度是 110000 次/s,寫的速度是 81000 次/s
4.原子性
Redis 的所有操作都是原子性的,意思就是要麼都成功執行,要麼都失敗不執行。 單個操作是原子性的,多個操作也支持事 務, 即原子性, 通過 MULTI 和 EXEC指令包起來
5.數據備份
Redis支持數據的備份,即 master-slave 模式的數據備份
6.特性豐富
Redis 還支持 publish/subscribe,通知,key 過期等等特性
4、使用場景
1.分佈式鎖
可以結合Redisson來使用分佈式鎖,實現併發控制。參考這篇文章:Redis分佈式鎖(Redisson)實現原理分析
2.會話緩存
比較常用的一種使用 Redis 的情景是會話緩存(session cache)。用 Redis 緩存會話比其他存儲(如 Memcached)的優勢在於:Redis 提供持久化。當維護一個不是嚴格要求一致性的緩存時,比如購物車。當然,可以緩存會話,也可以緩存其它類型數據了,緩存一些查詢頻繁且變動不頻繁的數據也很合適了,也是很常用的業務場景
3.排行榜/計數器
Redis 在內存中對數字進行遞增或遞減的操作實現的非常好。集合(Set)和有序集合(Sorted Set)也使得我們在執行這些操作的時候變的非常簡單,Redis 只是正好提供了這兩種數據結構
4.發佈/訂閱
發佈/訂閱的使用場景比較多,Redis也支持發佈/訂閱功能,但是相比RabbitMQ這些專業的MQ,Redis的發佈/訂閱可能會丟失消息,一般不推薦使用