Redis入門&&安裝與配置

一. Redis簡介

2008年,一個名爲Salvatore Sanfilippo的程序員爲他開發的LLOOGG項目定製了專屬的數據庫(因爲之前他無論怎樣優化MySQL,系統性能已經無法再提升了),這項工作的成果就是Redis的初始版本。後來他將Redis的代碼放到了全球最大的代碼託管平臺Github,從那以後,Redis引發了大量開發者的好評和關注,繼而有數百人蔘與了Redis的開發和維護,這使得Redis的功能越來越強大和性能越來越好。

Redis是 remote dictionary server 的縮寫,它是一個用 ANSI C 編寫的高性能的key-value存儲系統,與其他的key-value存儲系統相比,Redis有以下一些特點(也是優點):

  • Redis的讀寫性能極高,並且有豐富的特性(發佈/訂閱、事務、通知等)。
  • Redis支持數據的持久化(RDB和AOF兩種方式),可以將內存中的數據保存在磁盤中,重啓的時候可以再次加載進行使用。
  • Redis支持多種數據類型,包括:string、hash、list、set,zset、bitmap、hyperloglog等。
  • Redis支持主從複製(實現讀寫分離)以及哨兵模式(監控master是否宕機並自動調整配置)。
  • Redis支持分佈式集羣,可以很容易的通過水平擴展來提升系統的整體性能。
  • Redis基於TCP提供的可靠傳輸服務進行通信,很多編程語言都提供了Redis客戶端支持。

二. Redis的應用場景

1. 高速緩存

將不常變化但又經常被訪問的熱點數據放到Redis數據庫中,可以大大降低關係型數據庫的壓力,從而提升系統的響應性能。

2. 排行榜

很多網站都有排行榜功能,利用Redis中的列表和有序集合可以非常方便的構造各種排行榜系統。

3. 商品秒殺/投票點贊

Redis提供了對計數操作的支持,網站上常見的秒殺、點贊等功能都可以利用Redis的計數器通過+1或-1的操作來實現,從而避免了使用關係型數據的update操作。

4. 分佈式鎖

利用Redis可以跨多臺服務器實現分佈式鎖(類似於線程鎖,但是能夠被多臺機器上的多個線程或進程共享)的功能,用於實現一個阻塞式操作。

5. 消息隊列

消息隊列和高速緩存一樣,是一個大型網站不可缺少的基礎服務,可以實現業務解耦和非實時業務削峯等特性,這些我們都會在後面的項目中爲大家展示。

三. Redis的安裝

可以通過在Redis的 官方網站 下載 Redis 的源代碼,解壓縮解歸檔之後通過 make 工具對源代碼進行構建並安裝。

wget http://101.44.1.120/files/318700000890F623/download.redis.io/releases/redis-5.0.8.tar.gz
tar -zxvf redis-5.0.8.tar.gz
cd redis-5.0.8
sudo make && sudo make install

四.Redis 的配置

在 redis 源代碼目錄下有一個名爲redis.conf的配置文件,我們可以先查看一下該文件: vim redis.conf

  1. 配置將 Redis 服務綁定到指定的IP地址和端口。
bind 127.0.0.1
port 6379
  1. 設置後臺運行 (以守護進程方式運行)
daemonize yes
  1. 設置日誌級別, 可選值: (debug: 調試, verbose: 詳細, notice: 通知, warning: 警告)
 loglevel warning
  1. 配置數據庫的數量, 默認爲 16 個
databases 16
  1. 配置數據寫入規則
save 900 1     # 900 秒 (15 分鐘) 內修改過 1 個 key, , 寫入一次數據庫
save 300 10    # 300 秒 (5 分鐘) 內修改過 10 個 key, 寫入一次數據庫
save 60 10000  # 60 秒 (1 分鐘) 內修改過 10000 個 key, 寫入一次數據庫
  1. 配置Redis的持久化機制 - RDB。
rdbcompression yes   # 壓縮 RDB 文件
rdbchecksum yes      # 對 RDB 文件進行校驗
dbfilename dump.rdb  # RDB 數據庫文件的文件名
dir /var/local/redis               # RDB 文件保存的目錄
  1. 配置Redis的持久化機制 - AOF。
appendonly no
appendfilename "appendonly.aof"
  1. 配置Redis的主從複製,通過主從複製可以實現讀寫分離。
# Master-Replica replication. Use replicaof to make a Redis instance a copy of
# another Redis server. A few things to understand ASAP about Redis replication.
#
#   +------------------+      +---------------+
#   |      Master      | ---> |    Replica    |
#   | (receive writes) |      |  (exact copy) |
#   +------------------+      +---------------+
#
# 1) Redis replication is asynchronous, but you can configure a master to
#    stop accepting writes if it appears to be not connected with at least
#    a given number of replicas.
# 2) Redis replicas are able to perform a partial resynchronization with the
#    master if the replication link is lost for a relatively small amount of
#    time. You may want to configure the replication backlog size (see the next
#    sections of this file) with a sensible value depending on your needs.
# 3) Replication is automatic and does not need user intervention. After a
#    network partition replicas automatically try to reconnect to masters
#    and resynchronize with them.
#
replicaof 主機IP地址 主機端口
  1. 配置慢查詢
slowlog-log-slower-than 10000  # 一次操作超過 10000 毫秒被視作一次慢查詢
slowlog-max-len 128            # 最多紀錄 128 次滿查詢 

五. Redis的服務器和客戶端

1. redis服務器

接下來啓動 Redis 服務器,下面的方式將以指定的配置文件啓動 Redis 服務。

redis-server redis.conf

2.redis 客戶端

接下來用 Redis 客戶端去連接服務器

redis-cli -h localhost -p 6379

六.Redis持久化

Redis在運行時,所有的數據都保存在內存裏,進程結束以後,會將數據寫入到硬盤中。啓動時,會讀取硬盤裏的內容,並將內容全部加載到內存中(會大量的佔用內存)。

Redis的持久化有兩種形式:RDB和AOF

1.RDB

默認的持久化方式,是對內存中的數據進行鏡像,並以二進制的形式保存到dump.rdb文件中。會根據配置文件的時間節點對文件進行持久化。

save 900 1
save 300 10
save 60 10000

優點:速度快,直接鏡像內存裏的數據,文件小。

缺點:數據有可能會丟失,在兩次保存間隔內的數據,有可能會丟失。

2. AOF

AOF(Append only file)持久化,將修改的每一條指令記錄進appendonly.aof中,需要修改配置文件,來打開aof功能。

appendfsync always:每次有新命令追加到aof文件時就執行一個持久化,非常慢但是安全
appendfsync everysec:每秒執行一次持久化,足夠快(和使用rdb持久化差不多)並且在故障時只會丟失1秒鐘的數據
appendfsync no:從不持久化,將數據交給操作系統來處理。redis處理命令速度加快但是不安全。

優點:適合保存增量數據,數據不丟失。

缺點:文件體積大,恢復時間長
在這裏插入圖片描述

七.存儲條件注意事項

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章