Redis là kho lưu trữ dữ liệu khóa-giá trị trong bộ nhớ phổ biến, là một loại cơ sở dữ liệu NoSQL. Redis chủ yếu được sử dụng làm cơ sở dữ liệu bộ đệm, nhưng ứng dụng của nó không kết thúc ở đó. Bạn có thể tìm thấy nhiều bài viết giải thích cách Redis có thể trở thành cơ sở dữ liệu tất cả trong một cho tất cả các loại ứng dụng. Trong bài viết này, chúng ta sẽ hiểu cách kết nối và sử dụng Redis trong python
Cài đặt Redis trên Windows
Redis không được hỗ trợ chính thức trên Windows. Tuy nhiên, bạn có thể cài đặt Redis bằng cách thiết lập Windows Subsystem cho Linux 2 và cấu hình nó. Ngoài ra, bạn có thể chạy Redis trên một container bằng Docker mà tôi sẽ trình bày trong bài viết này. Bước đầu tiên là cài đặt Docker trên máy Windows của bạn. Bạn có thể tải xuống Docker Desktop từ đây. Quá trình cài đặt khá đơn giản và trực tiếp. Bây giờ chúng ta đã có Docker trên máy của mình, hãy nhập lệnh sau trên dấu nhắc lệnh để tìm nạp hình ảnh Redis từ Docker Hub, có thể được sử dụng để xây dựng và chạy vùng chứa
docker pull redis
Khi điều này được thực hiện, bước thứ ba là bắt đầu vùng chứa bằng hình ảnh Redis mà chúng tôi đã tải xuống trước đó
Tại đây, nhấp vào nút 'CHẠY'
Xin vui lòng tham khảo hình ảnh dưới đây để tham khảo
Xin chúc mừng, bạn đã khởi động thành công máy chủ Redis trên máy của mình
Cài đặt Redis-py
Để kết nối và sử dụng Redis trong python, chúng tôi sẽ sử dụng mô-đun python có tên là redis-py. Nó có thể được cài đặt bằng cách chạy lệnh sau trong dấu nhắc lệnh
pip install redis
Bây giờ chúng ta đã sẵn sàng mọi thứ, hãy bắt tay vào phần lập trình
Sử dụng Redis-py
Trước khi thực hiện bất kỳ hoạt động CRUD nào, trước tiên chúng ta cần kết nối với máy chủ Redis, điều này rất trực tiếp trong redis-py. Chúng ta cần đặt tham số decode_responses là true để không nhận được phản hồi ở định dạng byte
import redis r = redis.Redis[decode_responses=True] r.ping[]
True
Bây giờ chúng ta đã kết nối với máy chủ Redis, hãy bắt đầu thực hiện các thao tác CRUD đơn giản
Để đặt một cặp khóa-giá trị, chúng tôi sử dụng chức năng “đặt” chấp nhận khóa và giá trị làm tham số. Xin lưu ý rằng khóa phải luôn là kiểu dữ liệu chuỗi hoặc byte
r.set['hello', 'world']
Để lấy giá trị cho một khóa cụ thể, chúng tôi sử dụng hàm “get” chấp nhận khóa mà chúng tôi muốn giá trị được trả về
r.get['hello']
world
Để đặt nhiều cặp khóa-giá trị, chúng tôi sử dụng hàm “mset” viết tắt của multiple-set và chấp nhận nhiều cặp khóa-giá trị làm tham số
data = { 'hello': 'world', 'lorem': 'ipsum' } r.mset[data] r.get['lorem']
ipsum
Để đặt một cặp khóa-giá trị trong đó giá trị thuộc loại dữ liệu đã đặt, chúng tôi sử dụng hàm “sadd”. Kiểu dữ liệu tập hợp chỉ chứa các phần tử duy nhất, không giống như kiểu dữ liệu danh sách. Bây giờ chúng ta hãy lưu trữ một tập hợp các loại trái cây mà không lặp lại các loại trái cây
fruits = ["avocado", "strawberry", "strawberry", "mango", "orange"] r.sadd['fruits', *fruits]
Để lấy tất cả các giá trị của trái cây mà chúng ta vừa lưu trữ, chúng ta có thể sử dụng hàm “smembers”
pip install redis0
Vì chúng ta đã thấy cách lưu trữ các giá trị kiểu dữ liệu đã đặt trong Redis, bây giờ chúng ta hãy tìm hiểu cách lưu trữ kiểu dữ liệu danh sách. Nó có thể được thực hiện bằng chức năng “lpush”. Hãy để chúng tôi lưu trữ một danh sách các ngôn ngữ lập trình sử dụng chức năng này
pip install redis1
Để lấy tất cả các phần tử trong danh sách, chúng ta sử dụng hàm “lrange” giúp duyệt qua các phần tử trong danh sách. “-1” biểu thị rằng hàm dự kiến sẽ trả về tất cả các phần tử, nhưng nếu bạn chỉ muốn trả về 3 phần tử đầu tiên của danh sách, bạn có thể làm như vậy bằng cách thay thế “-1” bằng “2”. Lưu ý rằng nó không phải là "3" vì nó sẽ đi qua cho đến khi chỉ mục là ba và trả về tổng cộng bốn phần tử
pip install redis2____13
Bây giờ, chúng ta hãy thử lưu một đối tượng lồng nhau trong Redis. Để lưu trữ các đối tượng lồng nhau, chúng ta có thể sử dụng hàm “hset” nhưng nó chỉ cho phép một cấp độ lồng nhau
pip install redis4
Nếu bạn muốn lưu trữ các đối tượng được lồng sâu với các loại dữ liệu khác nhau, có thể sử dụng các kỹ thuật tuần tự hóa như sử dụng json hoặc pickle. Hãy xem thực tế này để hiểu rõ hơn
pip install redis5
Để trích xuất thông tin được lưu trữ, chúng ta có thể trực tiếp sử dụng hàm “get” và sau đó hoàn tác quá trình xâu chuỗi được thực hiện bởi json
pip install redis6
pip install redis7
Vì đây là kho lưu trữ dữ liệu trong bộ nhớ nên điều quan trọng là các cặp khóa-giá trị cũ sẽ bị xóa hoặc đúng hơn là hết hạn để nhường chỗ cho việc lưu trữ dữ liệu mới. Đối với điều này, Redis có sẵn tùy chọn hết hạn chính. Bây giờ chúng ta hãy thử lưu trữ một cặp khóa-giá trị với thời gian hết hạn. Chúng ta có thể sử dụng chức năng “setex” để đặt thời hạn sử dụng cho một cặp khóa-giá trị. Nó chấp nhận TTL trong vài giây. Nếu bạn muốn đặt TTL theo mili giây, bạn có thể sử dụng chức năng “psetex”
pip install redis8
Để biết thời gian còn lại của một khóa là bao nhiêu, chúng ta có thể sử dụng hàm “ttl”, hàm này sẽ trả về thời gian còn lại tính bằng giây. Tương tự, hàm “pttl” sẽ trả về kết quả tương tự nhưng tính bằng mili giây. Nếu khóa đã hết hạn, giá trị trả về sẽ là số âm
pip install redis9
import redis r = redis.Redis[decode_responses=True] r.ping[]0
Giả sử chúng ta muốn kiểm tra xem một khóa đã hết hạn hay chưa, chúng ta có thể sử dụng hàm “exists” sẽ trả về 1 nếu còn và 0 nếu đã hết hạn
import redis r = redis.Redis[decode_responses=True] r.ping[]1
import redis r = redis.Redis[decode_responses=True] r.ping[]2
Để xóa một cặp key-value trong Redis, chúng ta có thể sử dụng chức năng “delete”. Nó chấp nhận chìa khóa mà bạn muốn xóa
import redis r = redis.Redis[decode_responses=True] r.ping[]3
Sự kết luận
Trong bài viết này, chúng tôi đã thảo luận và đề cập đến những điều sau đây
- Redis là gì?
- Cài đặt docker trên windows
- Chạy nó trên một container docker
- Kết nối bằng redis-py
- Thực hiện các thao tác CRUD đơn giản bằng redis-py
Các chức năng được thảo luận trong bài viết này là cần thiết để hiểu và thực hiện các hoạt động CRUD cơ bản trong Redis, nhưng có rất nhiều chức năng khác nhau có sẵn. Để tìm hiểu thêm về các chức năng này, hãy tham khảo tài liệu chính thức của Redis. Trang web chính thức có một trang riêng bao gồm tất cả các lệnh có sẵn trong Redis. Bạn có thể truy cập trang đó bằng cách nhấp vào liên kết này. Như đã đề cập trước đó, Redis có thể là cơ sở dữ liệu tất cả trong một với sự ra đời của Ngăn xếp. Nếu quan tâm, bạn có thể tìm hiểu thêm về Stack tại đây. Tôi sẽ cố gắng trình bày về Redis Stack trong một bài viết khác
Đó là nó cho bài viết này. Hy vọng bạn thích đọc bài viết này và học được điều gì đó mới. Cảm ơn đã đọc và học tập vui vẻ
Phương tiện hiển thị trong bài viết này không thuộc sở hữu của Analytics Vidhya và được sử dụng theo quyết định của Tác giả