2019年7月1日 星期一

NoSQL Redis intro

Redis是一個使用ANSI C編寫的開源、支援網路、基於記憶體、可選永續性的鍵值對儲存資料庫。

支援rdb 及aof 兩種儲存方式


Redis 目前擁有兩種資料持久化的格式: RDB、AOF
  • RDB:
    • 優點: 備份頻率較 AOF 低,但檔案小、適合作為災難還原的備份檔
    • 缺點: 當服務異常停止時,部分數據可能會遺失
當設定的條件被觸發時,Redis 會 fork() 出子進程 (child process) 在背景進行備份

  • AOF:
    • 優點: 紀錄所有寫入 (Write) 動作的,備份頻率、完整性較 RDB 高
    • 缺點: 檔案大,還原時間較長,不適合備份
在兩種持久化設定都打開的情況下,由於每次的寫入操作皆會被保存進 AOF ,使得它的資料完整度較高,因此 Redis 在重啟後會選擇讀取 AOF 檔案進行還原。若 AOF 設定為關閉的狀況,才會選用 RDB 進行還原。
RDB 在寫入檔案時,會開thread 去進行,較吃CPU資源
AOF 會依照檔案儲存大小吃掉對應的記憶體量


RDB vs AOF

安裝


1.Ubuntu
$sudo apt-get update
$sudo apt-get install redis-server
 
 
$ redis-server

2.Windows
下載binary
解壓或執行msi 安裝到任意目錄
cmd 進到安裝目錄後,執行 
redis-server.exe redis.windows.conf

3.Docker
看要哪個tag
$docker run -it --rm -p 6379:6379 library/redis:5-alpine

工具

1.redis-cli
指令工具,內部使用REST 發命令到redis-server 
可以查詢記憶體、新增移除資料、設置server 等等

2.redis-benchmark
協助測試調適redis 的工具

配置檔案

參考redis.conf 
#啟用/關閉 RDB
#300秒存一次RDB 或KEY 修改超過10次
#可以設多個閥值
save 300 10 
 
 
#關閉RDB
save ""
 
 
#儲存RDB 檔名為dump.rdb
dbfilename dump.rdb
 
 
#儲存RDB 及AOF的目錄
dir /usr/lib/mcm100/data
 
 
#同時可接受連線數
maxclients 10000
 
 
#REDIS 記憶體上限設置 單位byte
maxmemory 67108864
 
 
#當記憶體達上限時,要如何處理
# volatile-lru -> Evict using approximated LRU among the keys with an expire set.
# allkeys-lru -> Evict any key using approximated LRU.
# volatile-lfu -> Evict using approximated LFU among the keys with an expire set.
# allkeys-lfu -> Evict any key using approximated LFU.
# volatile-random -> Remove a random key among the ones with an expire set.
# allkeys-random -> Remove a random key, any key.
# volatile-ttl -> Remove the key with the nearest expire time (minor TTL)
# noeviction -> Don't evict anything, just return an error on write operations.
maxmemory-policy allkeys-lru
 
 
#啟用AOF,no 則關閉
appendonly yes
 
 
#AOF檔名
appendfilename "appendonly.aof"
 
#寫入AOF的頻率
# no: don't fsync, just let the OS flush the data when it wants. Faster.
# always: fsync after every write to the append only log. Slow, Safest.
# everysec: fsync only one time every second. Compromise.
appendfsync everysec
 
 
 
 
#當AOF 大小達64mb 自動壓縮
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb

License

  • Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
  • Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
  • Neither the name of Redis nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
Reference:Redis license

沒有留言:

張貼留言

NoSQL Redis intro

Redis是一個使用ANSI C編寫的開源、支援網路、基於記憶體、可選永續性的鍵值對儲存資料庫。 支援rdb 及aof 兩種儲存方式 From  https://zh.wikipedia.org/wiki/Redis Redis 目前擁有兩種資料...