官網(wǎng): https://redis.io/
參考: http://redisdoc.com/
Redis 介紹
Redis是一個(gè)開源項(xiàng)目(BSD許可證), 內(nèi)存數(shù)據(jù)庫, 用作數(shù)據(jù)庫、緩存和消息代理.
它支持的數(shù)據(jù)結(jié)構(gòu)包括:
字符串、散列、列表、集合、帶有范圍查詢的排序集、位圖、日志, 帶有半徑查詢的地理空間索引.
Redis具有內(nèi)置的復(fù)制、Lua腳本、LRU回收、事務(wù)和不同級(jí)別的磁盤持久化,并通過Redis Sentinel和Redis Cluster自動(dòng)分區(qū)來提供高可用性.
key:
任何二進(jìn)制序列都可以作為key, 像name簡單的字符串, 一個(gè)jpeg文件都可以, 空串也是可以的, 但是不要太長, 消耗內(nèi)存效率低, 也不要太短, 可讀性差.
value:
字符串, 列表, 散列, 集合, 有序集合, HyperLogLog字符串是基本的值類型, 圖片也行, 序列化后的對象也行, 但是最多能存512M字節(jié)內(nèi)容.
Redis命令
Redis安裝與卸載
#安裝
$sudo apt-get update
$sudo apt-get install redis-server
#卸載
apt-get purge --auto-remove redis-server
然后再刪除redis文件. rdb, aof, log文件
# 如果卸載的時(shí)候會(huì)出現(xiàn)unknown user 'redis' in statoverride file
# 解決方法
#1: open /var/lib/dpkg/statoverride
#2: should see root redis
#3: dpkg-statoverride --remove xxx
Redis客戶端
一般使用 Redis Desktop Manager
如何使局域網(wǎng)可以訪問
1: 修改 etc/redis/redis.conf
2: redis.windows.conf
3: 修改: protected-mode no, 他是為了禁止公網(wǎng)訪問redis cache,加強(qiáng)redis安全的, 它啟用的條件,有兩個(gè):
a: 沒有bind IP
b: 沒有設(shè)置訪問密碼
4: 增加 requirepass 111111
Redis 常見命令
| 命令 | 描述 | 例子 |
|---|---|---|
| redis-server | 啟動(dòng)服務(wù)端 | |
| redis-cli | 啟動(dòng)客戶端 | |
| service redis restart | 重啟服務(wù)端 | |
| v | 用服務(wù)端查看版本 | redis-server -v |
| info | 用客戶端查看版本 | redis-cli info |
| auth | 輸入密碼 | auth "yourpassword" |
| ss -tanl | 查看端口是否被使用, 這個(gè)是linux的命令 | |
| help | 查看幫助. | help @string, 關(guān)于string的全部會(huì)出來 |
| flushdb | 清掉所有數(shù)據(jù) | flushdb |
| keys | 查看鍵 | keys * 查看所有鍵 |
| get | 獲取設(shè)置的值 | get {key} |
Redis 持久化
1: 為什么要持久化
持久化是將數(shù)據(jù)從掉電易失的內(nèi)存存放到磁盤設(shè)備上(默認(rèn)名:dump.rdb), 因?yàn)镽edis默認(rèn)是基于內(nèi)存的, 不存到磁盤上.
持久化2種方式:
1: RDB Redis DB(保存二進(jìn)制數(shù)據(jù), 省空間, 默認(rèn)為dump.rdb)
2: AOF AppendOnlyFile(存的是命令), 默認(rèn)是不開啟的
2: 如何持久化
RDB, AOF可以同時(shí)執(zhí)行, 但是RDB很耗時(shí), 所以操作不能太頻繁, 否則性能不好. 備份文件一般存放到/var/lib/redis/dump.rdb中, 具體是在redis.conf中配置的.
1: SAVE: Redis服務(wù)器將被阻塞, 無法處理客戶端發(fā)送的命令
2: BGSAVE: 這個(gè)是后臺(tái)(Background)執(zhí)行的. 不阻塞
3: 滿足條件后自動(dòng)持久化, 默認(rèn)下面的任何一種成立, 則持久化, 實(shí)際使用的是BGSAVE
SAVE 900 1 #距離上次創(chuàng)建RDB文件900秒, 且發(fā)生了一次修改.
SAVE 300 10
SAVE 60 10000
說明: SAVE 300 10: 過去300秒, 且所有數(shù)據(jù)庫總共發(fā)生了不少于10次的修改.
AOF是寫入命令的, 每執(zhí)行一條修改的, 都會(huì)生成一個(gè)命令, 比RDB相對安全一些, 在遭遇停機(jī)的時(shí)候造成數(shù)據(jù)丟失, 取決于命令被寫到硬盤的時(shí)間, 他有3中策略(Always, Everysec, No)
appendonly yes
appendfilename "appendonly.aof"
appendfsync always
Always: 每寫一個(gè)命令, 就調(diào)用一次寫操作. 因此比較安全, 但是造成性能偏低,速度慢
Everysec: 每秒寫一次(默認(rèn)值)
No: 不主動(dòng)調(diào)用fdatasync.由服務(wù)器決定何時(shí)寫.
在conf中appendonly節(jié)點(diǎn)上.
隨著時(shí)間推移, 備份文件越來越大, 就需要壓縮, 如何壓縮, 2種方法:
1: 客戶端發(fā)送BGREWRITEAOF (只保留最后一次的)
2: conf中設(shè)置 auto-aof-rewrite-min-size
2: 如何還原備份的文件
對于備份RDB文件和AOF文件都可以采用拷貝的方式還原.
把RDB文件拷貝到conf文件設(shè)置的路徑, 重啟(service service redis restart)后即可.