Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Redis

Làm chủ bộ nhớ đệm trong bộ nhớ với Redis:Truy xuất dữ liệu nhanh chóng, đáng tin cậy

Làm chủ bộ nhớ đệm trong bộ nhớ với Redis:Truy xuất dữ liệu nhanh chóng, đáng tin cậy

Khi bạn đang xây dựng một ứng dụng web hoặc API cần phản hồi nhanh chóng, bộ nhớ đệm thường là giải pháp bí mật.

Nếu không có nó, máy chủ của bạn có thể lãng phí thời gian để tìm nạp đi tìm lại cùng một dữ liệu – từ cơ sở dữ liệu, API của bên thứ ba hoặc hệ thống lưu trữ chậm.

Nhưng khi bạn lưu trữ dữ liệu đó vào bộ nhớ, thông tin tương tự có thể được cung cấp trong một phần nghìn giây. Đó là lúc Redis xuất hiện.

Redis là một công cụ nhanh chóng, linh hoạt, lưu trữ dữ liệu của bạn trong RAM và cho phép bạn truy xuất dữ liệu đó ngay lập tức. Cho dù bạn đang xây dựng trang tổng quan, tự động hóa bài đăng trên mạng xã hội hay quản lý phiên của người dùng, Redis đều có thể giúp hệ thống của bạn nhanh hơn, hiệu quả hơn và dễ dàng mở rộng quy mô hơn.

Trong bài viết này, bạn sẽ tìm hiểu cách hoạt động của bộ nhớ đệm trong bộ nhớ và lý do Redis là lựa chọn hàng đầu của nhiều nhà phát triển.

Mục lục

  • Bộ nhớ đệm trong bộ nhớ là gì?

  • Redis là gì?

  • Cách làm việc với Redis

    • Cài đặt Redis

    • Các kiểu dữ liệu Redis

    • Làm lại bằng Python

  • Các trường hợp sử dụng trong đời thực

  • Kết luận

Bộ nhớ đệm trong bộ nhớ là gì?

Bộ nhớ đệm trong bộ nhớ là một cách lưu trữ dữ liệu trong RAM của hệ thống thay vì tìm nạp dữ liệu từ cơ sở dữ liệu hoặc nguồn bên ngoài mỗi khi cần.

Vì RAM cực kỳ nhanh so với bộ lưu trữ trên đĩa nên bạn có thể truy cập dữ liệu được lưu trong bộ nhớ đệm gần như ngay lập tức. Cách tiếp cận này hoàn hảo cho những thông tin không thay đổi thường xuyên, như phản hồi API, hồ sơ người dùng hoặc trang HTML được hiển thị.

Thay vì liên tục chạy cùng một truy vấn hoặc lệnh gọi API, ứng dụng của bạn sẽ kiểm tra bộ đệm trước. Nếu có dữ liệu, nó sẽ được sử dụng ngay lập tức. Nếu không, bạn tìm nạp nó từ nguồn, lưu vào bộ nhớ đệm rồi trả lại.

Kỹ thuật này giúp giảm tải cho phần phụ trợ của bạn, cải thiện thời gian phản hồi và có thể cải thiện đáng kể hiệu suất ứng dụng của bạn khi có lưu lượng truy cập lớn.

Redis là gì?

Redis là kho lưu trữ dữ liệu trong bộ nhớ, mã nguồn mở mà các nhà phát triển sử dụng để lưu vào bộ nhớ đệm và quản lý dữ liệu theo thời gian thực.

Không giống như cơ sở dữ liệu truyền thống, Redis lưu trữ mọi thứ trong bộ nhớ, giúp việc truy xuất dữ liệu cực kỳ nhanh chóng. Nhưng Redis không chỉ là một kho lưu trữ khóa-giá trị đơn giản. Nó cung cấp nhiều loại dữ liệu, từ chuỗi và danh sách đến tập hợp, hàm băm và tập hợp được sắp xếp.

Redis cũng có khả năng xử lý các tác vụ nâng cao hơn như nhắn tin pub/sub, luồng và truy vấn không gian địa lý. Mặc dù có sức mạnh lớn nhưng Redis rất nhẹ và dễ bắt đầu.

Bạn có thể chạy nó trên máy cục bộ của mình, triển khai nó trên máy chủ hoặc thậm chí sử dụng các dịch vụ Redis được quản lý do nhà cung cấp đám mây cung cấp. Nó được các công ty lớn tin cậy và sử dụng trong mọi loại ứng dụng, từ bộ nhớ đệm và lưu trữ phiên đến phân tích thời gian thực và hàng đợi công việc.

Cách làm việc với Redis

Cài đặt Redis

Thiết lập và chạy Redis đơn giản đến mức đáng ngạc nhiên. Bạn có thể tìm thấy hướng dẫn cài đặt dựa trên hệ điều hành của mình trong tài liệu.

Để đảm bảo Redis đang hoạt động, hãy chạy:

redis-cli ping
# Should respond with "PONG"

Các kiểu dữ liệu Redis

Redis cung cấp cho bạn một số loại tích hợp cho phép bạn lưu trữ và quản lý dữ liệu theo những cách linh hoạt.

Chuỗi :Cặp khóa ↔ giá trị đơn giản.

SET username "Emily"
GET username

Danh sách :Bộ sưu tập được đặt hàng rất phù hợp cho hàng đợi và dòng thời gian.

LPUSH tasks "task1"
RPUSH tasks "task2"
LRANGE tasks 0 -1

Băm :Giống như các đối tượng JSON, rất tốt cho hồ sơ người dùng.

HSET user:1 name "Alice"
HSET user:1 email "alice@example.com"
HGETALL user:1

Bộ :Bộ sưu tập không có thứ tự, lý tưởng cho thẻ hoặc vật phẩm độc đáo.

SADD tags "python"
SADD tags "redis"
SMEMBERS tags

Bộ đã sắp xếp :Bộ có điểm số – hữu ích cho bảng xếp hạng.

ZADD leaderboard 100 "Bob"
ZADD leaderboard 200 "Carol"
ZRANGE leaderboard 0 -1 WITHSCORES

Redis cũng hỗ trợ Bitmap, hyperloglog, luồng, chỉ mục không gian địa lý và không ngừng mở rộng hỗ trợ cho cấu trúc dữ liệu.

Redis bằng Python

Nếu bạn đang làm việc bằng Python, việc sử dụng Redis cũng dễ dàng như vậy. Sau khi cài đặt redis Thư viện Python sử dụng pip install redis , bạn có thể kết nối với máy chủ Redis của mình và bắt đầu cài đặt cũng như nhận khóa ngay lập tức.

Đây là một số mã Python đơn giản để làm việc với Redis:

import redis
# Connect to the local Redis server on default port 6379 and use database 0
r = redis.Redis(host='localhost', port=6379, db=0)
# --- Basic String Example ---
# Set a key called 'welcome' with a string value
r.set('welcome', 'Hello, Redis!')
# Get the value of the key 'welcome'
# Output will be a byte string: b'Hello, Redis!'
print(r.get('welcome'))
# --- Hash Example (like a Python dict) ---
# Create a Redis hash under the key 'user:1'
# This hash stores fields 'name' and 'email' for a user
r.hset('user:1', mapping={
 'name': 'Alice',
 'email': 'alice@example.com'
})
# Get all fields and values in the hash as a dictionary of byte strings
# Output: {b'name': b'Alice', b'email': b'alice@example.com'}
print(r.hgetall('user:1'))
# --- List Example (acts like a queue or stack) ---
# Push 'Task A' to the left of the list 'tasks'
r.lpush('tasks', 'Task A')
# Push 'Task B' to the left of the list 'tasks' (it becomes the first item)
r.lpush('tasks', 'Task B')
# Retrieve all elements from the list 'tasks' (from index 0 to -1, meaning the full list)
# Output: [b'Task B', b'Task A']
print(r.lrange('tasks', 0, -1))

Bạn có thể lưu trữ dữ liệu phiên của người dùng, xếp hàng các tác vụ nền hoặc thậm chí lưu trữ các trang HTML được hiển thị trong bộ nhớ đệm. Các lệnh Redis rất nhanh và nguyên tử, nghĩa là bạn không phải lo lắng về xung đột dữ liệu hoặc sự không nhất quán trong môi trường có lưu lượng truy cập cao.

Một trong những tính năng hữu ích nhất trong Redis là hết hạn khóa. Bạn có thể yêu cầu Redis tự động xóa khóa sau một khoảng thời gian nhất định, điều này đặc biệt hữu ích đối với dữ liệu phiên hoặc bộ đệm tạm thời.

Bạn có thể đặt thời gian tồn tại (TTL) trên các phím để Redis tự động xóa chúng

SET session:1234 "some data" EX 3600 # Expires in 1 hour

Redis cũng hỗ trợ tính bền vững nên mặc dù là kho lưu trữ trong bộ nhớ nhưng dữ liệu của bạn vẫn có thể tồn tại sau khi khởi động lại.

Redis không giới hạn ở các ứng dụng nhỏ. Nó dễ dàng mở rộng quy mô thông qua sao chép, phân cụm và Sentinel.

Bản sao cho phép bạn tạo các bản sao chỉ đọc cho dữ liệu của mình, giúp phân phối tải. Phân cụm chia dữ liệu của bạn thành nhiều phần và phân tán chúng trên nhiều máy chủ. Và Sentinel xử lý việc chuyển đổi dự phòng tự động để giữ cho hệ thống của bạn tiếp tục hoạt động ngay cả khi một máy chủ gặp sự cố.

Các trường hợp sử dụng trong đời thực

Một trong những cách sử dụng phổ biến nhất của Redis là phản hồi API vào bộ nhớ đệm.

Giả sử bạn có một ứng dụng hiển thị dữ liệu thời tiết. Thay vì gọi API thời tiết mỗi khi người dùng tải trang, bạn có thể lưu vào bộ nhớ đệm phản hồi cho từng thành phố trong Redis trong 5 hoặc 10 phút. Bằng cách đó, thỉnh thoảng bạn chỉ tìm nạp dữ liệu mới và ứng dụng của bạn sẽ chạy nhanh hơn và rẻ hơn nhiều.

Một trường hợp sử dụng mạnh mẽ khác là quản lý phiên. Trong các ứng dụng web, mỗi người dùng đăng nhập đều có một phiên theo dõi họ là ai và họ đang làm gì. Redis là nơi tuyệt vời để lưu trữ dữ liệu phiên này vì nó nhanh và tạm thời.

Bạn có thể lưu trữ ID phiên làm khóa, với thông tin của người dùng ở dạng băm. Thêm thời gian hết hạn và bạn đã tích hợp sẵn thời gian chờ phiên tự động. Vì Redis rất nhanh và hỗ trợ truy cập đồng thời cao nên nó rất phù hợp cho các ứng dụng có hàng nghìn người dùng đăng nhập cùng lúc.

Kết luận

Bộ nhớ đệm trong bộ nhớ là một trong những cách đơn giản và hiệu quả nhất để tăng tốc ứng dụng của bạn và Redis khiến việc thực hiện trở nên vô cùng dễ dàng. Nó không chỉ là bộ đệm mà còn là bộ công cụ để xây dựng các hệ thống thời gian thực nhanh, có thể mở rộng. Bạn có thể bắt đầu từ việc nhỏ bằng cách lưu vào bộ nhớ đệm một vài trang hoặc phản hồi API và khi nhu cầu của bạn tăng lên, Redis sẽ phát triển cùng với bạn.

Nếu bạn mới bắt đầu, hãy thử chạy Redis cục bộ và thử nghiệm các loại dữ liệu khác nhau. Lưu trữ một số chuỗi, xây dựng hàng đợi nhiệm vụ đơn giản với các danh sách hoặc theo dõi điểm số của người dùng bằng một tập hợp được sắp xếp. Càng khám phá, bạn sẽ càng thấy Redis có thể giúp ứng dụng của bạn chạy nhanh hơn, thông minh hơn và hiệu quả hơn như thế nào.

Bạn thích bài viết này? Kết nối với tôi trên Linkedin. Hẹn gặp lại các bạn ở chủ đề khác.

Học cách viết mã miễn phí. Chương trình giảng dạy mã nguồn mở của freeCodeCamp đã giúp hơn 40.000 người có được việc làm với tư cách là nhà phát triển. Bắt đầu