# Bài 2: Cài đặt Redis

#### **Hướng dẫn cài đặt Redis trên các hệ điều hành khác nhau:**

**Cài đặt trên Linux (Ubuntu/CentOS):**

* **Cài đặt Redis trên Ubuntu:**
    
    * **Bước 1: Cập nhật danh sách các gói phần mềm:**
        
        ```bash
        sudo apt update
        ```
        
    * **Bước 2: Cài đặt Redis:**
        
        ```bash
        sudo apt install redis-server
        ```
        
    * **Bước 3: Khởi động Redis:**
        
        ```bash
        sudo systemctl start redis
        ```
        
    * **Bước 4: Đảm bảo Redis khởi động cùng hệ thống:**
        
        ```bash
        sudo systemctl enable redis
        ```
        
    * **Bước 5: Kiểm tra trạng thái Redis:**
        
        ```bash
        sudo systemctl status redis
        ```
        
* **Cài đặt Redis trên CentOS:**
    
    * **Bước 1: Cài đặt EPEL repository:**
        
        ```bash
        sudo yum install epel-release
        ```
        
    * **Bước 2: Cài đặt Redis:**
        
        ```bash
        sudo yum install redis
        ```
        
    * **Bước 3: Khởi động Redis:**
        
        ```bash
        sudo systemctl start redis
        ```
        
    * **Bước 4: Đảm bảo Redis khởi động cùng hệ thống:**
        
        ```bash
        sudo systemctl enable redis
        ```
        
    * **Bước 5: Kiểm tra trạng thái Redis:**
        
        ```bash
        sudo systemctl status redis
        ```
        

**Cài đặt trên macOS với Homebrew:**

* **Bước 1: Cập nhật Homebrew:**
    
    ```bash
    brew update
    ```
    
* **Bước 2: Cài đặt Redis:**
    
    ```bash
    brew install redis
    ```
    
* **Bước 3: Khởi động Redis:**
    
    ```bash
    redis-server /usr/local/etc/redis.conf
    ```
    
* **Bước 4: Để Redis khởi động cùng hệ thống, thêm Redis vào launchctl:**
    
    ```bash
    brew services start redis
    ```
    

**Cài đặt trên Windows:**

* Redis không có bản chính thức cho Windows, nhưng bạn có thể sử dụng bản không chính thức từ Microsoft:
    
    * **Bước 1: Tải Redis từ** [**Microsoft Archive**](https://github.com/MicrosoftArchive/redis/releases)**.**
        
    * **Bước 2: Giải nén và chạy tệp** `redis-server.exe`.
        
    * **Bước 3: Kiểm tra trạng thái Redis:**
        
        ```plaintext
        redis-cli.exe ping
        ```
        

#### **Cấu hình cơ bản:**

**redis.conf và các thiết lập cơ bản:**

* **File cấu hình chính của Redis:**
    
    * File cấu hình chính của Redis là `redis.conf`. Bạn có thể chỉnh sửa file này để cấu hình Redis theo nhu cầu của mình. File `redis.conf` chứa nhiều thiết lập quan trọng giúp điều chỉnh hoạt động của Redis.
        
* **Các thiết lập quan trọng trong redis.conf:**
    
    * **bind:** Địa chỉ IP mà Redis sẽ lắng nghe. Mặc định là `127.0.0.1`, chỉ cho phép kết nối từ [localhost](http://localhost). Để cho phép kết nối từ xa, bạn cần thay đổi giá trị này.
        
        ```plaintext
        bind 127.0.0.1
        ```
        
    * **port:** Cổng mà Redis sẽ sử dụng để lắng nghe các kết nối. Mặc định là `6379`.
        
        ```plaintext
        port 6379
        ```
        
    * **daemonize:** Chạy Redis như một tiến trình nền (daemon). Để chạy Redis dưới dạng daemon, đặt giá trị này là `yes`.
        
        ```plaintext
        daemonize yes
        ```
        
    * **dir:** Thư mục nơi Redis sẽ lưu trữ dữ liệu. Mặc định là `/var/lib/redis`.
        
        ```plaintext
        dir /var/lib/redis
        ```
        
    * **dbfilename:** Tên file mà Redis sẽ sử dụng để lưu trữ dữ liệu. Mặc định là `dump.rdb`.
        
        ```plaintext
        dbfilename dump.rdb
        ```
        
    * **appendonly:** Bật chế độ AOF (Append-Only File) để ghi lại mọi thay đổi lên dữ liệu, giúp tăng cường tính bền vững.
        
        ```plaintext
        appendonly yes
        ```
        
    * **appendfilename:** Tên file AOF. Mặc định là `appendonly.aof`.
        
        ```plaintext
        appendfilename appendonly.aof
        ```
        
    * **save:** Thiết lập thời gian và số lượng thay đổi để Redis tạo snapshot (ảnh chụp nhanh) dữ liệu. Ví dụ, dòng `save 900 1` có nghĩa là cứ sau 900 giây (15 phút) nếu có ít nhất 1 thay đổi, Redis sẽ tạo một snapshot.
        
        ```plaintext
        save 900 1
        save 300 10
        save 60 10000
        ```
        

**Kiểm tra và khởi động Redis:**

* **Kiểm tra trạng thái của Redis:**
    
    * Để kiểm tra xem Redis có đang chạy hay không, bạn có thể sử dụng lệnh:
        
        ```bash
        sudo systemctl status redis
        ```
        
    * Nếu Redis đang chạy bình thường, bạn sẽ thấy trạng thái `active (running)`.
        
* **Khởi động lại Redis sau khi thay đổi cấu hình:**
    
    * Nếu bạn đã thay đổi cấu hình trong file `redis.conf`, bạn cần khởi động lại Redis để áp dụng các thay đổi:
        
        ```bash
        sudo systemctl restart redis
        ```
        
* **Kiểm tra kết nối tới Redis bằng lệnh** `redis-cli`:
    
    * Bạn có thể sử dụng lệnh `redis-cli` để kiểm tra kết nối tới Redis:
        
        ```bash
        redis-cli ping
        ```
        
    * Nếu nhận được phản hồi `PONG`, điều đó có nghĩa là Redis đang hoạt động bình thường.
        

#### **Câu hỏi củng cố kiến thức:**

1. **Lệnh nào được sử dụng để cài đặt Redis trên Ubuntu?**
    
    * `sudo apt install redis-server`.
        
2. **Làm thế nào để khởi động Redis trên CentOS?**
    
    * `sudo systemctl start redis`.
        
3. **File cấu hình chính của Redis tên là gì?**
    
    * `redis.conf`.
        
4. **Lệnh nào kiểm tra kết nối tới Redis và phản hồi gì được mong đợi?**
    
    * `redis-cli ping`, phản hồi `PONG`.
        
5. **Thiết lập nào trong redis.conf để chạy Redis dưới dạng daemon?**
    
    * `daemonize yes`.
