1、什么是Redis
Redis是一款內存高速緩存數據庫。Redis全稱為:Remote Dictionary Server (遠程數據服務),使用C語言編寫,Redis是一個key-value存儲系統(鍵值存儲系統),支持豐富的數據類型,如:String、list、set、zset、hash。
Redis是一種支持key-value等多種數據結構的存儲系統。可用於緩存,事件發布或訂閱,高速隊列等場景。使用C語言編寫,支持網絡,提供字符串,哈希,列表,隊列,集合結構直接存取,基於內存,可持久化。
2、Redis特點
Redis以內存作為數據存儲介質,讀寫數據的效率極高。
Redis跟memcache不同的是,儲存在Redis中的數據是持久化的,斷電或重啟,數據也不會丟失。
Redis的存儲分為內存存儲、磁盤存儲和log文件。
Redis可以從磁盤重新將數據加載到內存中,也可以通過配置文件對其進行配置,因此,redis才能實現持久化。
Redis支持主從模式,可以配置集群,更利於支撐大型的項目。
3、Redis應用場景,能做什么
眾多語言都支持Redis,因為Redis交換數據快,在服務器中常用來存儲一些需要頻繁調取的數據,節省內存開銷,也極大的提升了速度。
將一些熱點數據存儲到Redis中,要用的時候,直接從內存取,極大的提高了速度和節約了服務器的開銷。
1、會話緩存(最常用)
2、消息隊列(支付)
3、活動排行榜或計數
4、發布,訂閱消息(消息通知)
5、商品列表,評論列表
4、Redis數據類型
Redis一共支持五種數據類型:String(字符串)、hash(哈希)、list(列表)、set(集合)和zset(sorted set有序集合)
String(字符串):Redis最基本的數據類型,一個鍵對應一個值,一個鍵值最大存儲512MB
Hash(哈希):hash是一個鍵值對的集合,是一個String類型的field和value的映射表,適合用於存儲對象
List(列表):是redis的簡單的字符串列表,按插入順序排序
Set(集合):是String字符串類型的無序集合,也不可重復
ZSet(sorted set 有序集合)是String類型的有序集合,也不可重復。有序集合中的每個元素都需要指定一個分數,根據分數對元素進行升序排序。
5、redis的服務相關命令
slect#選擇數據庫(數據庫編號0-15)
退出 # 退出連接
信息 # 獲得服務的信息與統計
monitor # 實時監控
config get # 獲得服務配置
flushdb # 刪除當前選擇的數據庫中的key
flushall # 刪除所有數據庫中的鍵
6、Redis的發布與訂閱
Redis的發布與訂閱(發布、訂閱)是它的一種消息通信模式,一方發送信息,一方接收信息
下圖是有新消息發送給頻道1時,就會將消息發送給訂閱它的三個客戶端
7、Redis的持久化
Redis持久有兩種方式:快照(RDB),僅附加文件(AOF)
快照(RDB):1、將存儲在內存的數據以快照的方式寫入二進制文件中,默認dump.rdb中
2、保存900 1 # 900秒內如果超過1個key被修改,則啟動快照保存
3、保存300 10 # 300秒內如果超過10個key被修改,則啟動快照保存
4、保存60 1000 # 60秒內如果超過10000個重點被修改,則啟動快照保存
僅附加文件(AOF):1、使用AOF持久時,服務會將每個收到的寫命令通過寫函數追加到文件中(appendonly.aof)
2、AOF持久化存儲方式參數說明
appendonly yes #開啟AOF持久化存儲方式
appendfsync always #收到寫命令后就立即寫入磁盤,效率最差,效果最好
appendfsync everysec #每秒寫入磁盤一次 效率與效果居中
appendfsync no #完全依賴操作系統,效率最佳,效果沒法保證
8、Redis自帶相關測試工具
redis-benchmark --help
redis-benchmark -n 10000 -q