Redis支持的數據類型:
String字符串:
格式:set key value
string類型是二進制安全的,string可以包含任何數據,比如jpg圖片或序列化對象。
string類型是redis最基本的數據類型,一個鍵最大能存儲512MB。
Hash哈希:
格式:hmset name key1 value1 key2 value2
Redis hash是一個鍵值對(key=>value)集合。
Redis hash是一個string類型的映射表,hash特別適合用於存儲對象。
List列表:
格式:lpush name value頭部添加字符串元素
rpush name value尾部添加字符串元素
llen name返回對於list的長度
Set無序集合:
格式:sadd name value
集合是通過哈希表實現的,所有添加、刪除、查找的複雜度都是O(1)。
Zset有序集合:
格式:zadd name score value
集合中不允許重複的成員,不同的每個元素都會關聯一個double類型的分數。redis正是通過集合中的成員進行從大到小的排序。
zset成員是唯一的,但分數score可以重複。
什麼是Redis持久化?Redis有哪幾種持久化方式?優缺點是什麼?
持久化就是把內存的數據寫到磁盤中去,防止服務宕機,內存數據丟失。
Redis提供了兩種持久化方式:默認RDB 和 AOF
RDB:
rdb是Redis DataBase縮寫
功能核心函數rdbSave(生成RDB文件)和rdbLoad(從文件加載內存)兩個函數。
AOF:
aof是Append-only file縮寫
每當執行服務器定時任何或者函數時flushAppendOnlyFile函數被調用,該函數執行以下兩個工作:
aof寫入保存:
write:根據條件,將aof_buf中的緩存寫入到AOF文件
save:根據條件,調用fsync或fdatasync函數,將AOF文件保存到磁盤中。
rdb 和 aof 的兩個方式比較:
- aof文件比rdb更新頻率高,優先使用aof還原數據。
- aof比rdb更安全也更大
- rdb性能比aof好
- 如果兩個都配了優先加載AOF