Computer >> Máy Tính >  >> Lập trình >> Ruby

Cách sử dụng cơ sở dữ liệu Redis trong Ruby

Redis là gì?

Redis là một loại cơ sở dữ liệu trong bộ nhớ có các loại cấu trúc dữ liệu khác nhau mà bạn có thể sử dụng.

Thích :

  • Kho lưu trữ khóa / giá trị
  • Danh sách
  • Bộ

Nó không liên quan gì đến cơ sở dữ liệu SQL điển hình của bạn, như Postgres.

Sử dụng cho Redis bao gồm :

  • Bộ nhớ đệm
  • Bảng xếp hạng
  • Đếm số lượng khách truy cập
  • Đề xuất tự động hoàn thành nhanh
  • Theo dõi các phiên hoạt động của người dùng
  • Hàng đợi công việc và tin nhắn

Hãy xem cách bạn có thể sử dụng Redis trong các ứng dụng Ruby của mình!

Cài đặt Redis cục bộ

Đầu tiên:

Bạn cần cài đặt máy chủ Redis.

Giống như bạn cài đặt bất kỳ cơ sở dữ liệu nào khác.

Nếu đang chạy Ubuntu, bạn có thể sử dụng apt install redis-server , trên Mac, bạn có thể sử dụng brew install redis &trên Windows 10, bạn sẽ cần “Hệ thống con của Windows dành cho Linux” (nhấp để xem hướng dẫn).

Sau khi máy chủ khởi động và chạy, bạn sẽ có thể sử dụng redis-cli để kết nối với máy chủ.

Lưu ý :Bạn có thể phải chạy redis-server trên một thiết bị đầu cuối khác để khởi động máy chủ trước khi bạn có thể kết nối với nó.

Bây giờ, bạn đã sẵn sàng để bắt đầu sử dụng Redis!

Sử dụng Đá quý Redis

Bạn có thể tương tác trực tiếp với Redis bằng cách sử dụng redis-cli , nhưng nếu bạn muốn làm việc với Redis từ Ruby, bạn nên sử dụng một viên đá quý.

Có một số đá quý có sẵn :

  • oxblood
  • redic
  • redis-rb

Nhưng chỉ một cách được các nhà phát triển Redis chính thức đề xuất, redis-rb .

Cài đặt nó :

gem install redis

Sau khi cài đặt gem, bạn có thể kết nối với máy chủ Redis của mình và bắt đầu làm việc với nó.

Hãy bắt đầu bằng cách thêm một khóa, a , với giá trị 1 .

Đây là mã :

require 'redis'

redis = Redis.new(host: "localhost")

redis.set("a", 1)
# "OK"

redis.get("a")
# "1"

Đá quý này thực hiện tốt công việc ánh xạ các phương thức Ruby với các lệnh Redis, vì vậy nếu bạn muốn biết những lệnh nào có sẵn, bạn có thể kiểm tra tài liệu Redis hoặc bạn có thể kiểm tra tài liệu đá quý.

Làm việc với Tài liệu

Bạn có thể nhập tên của một lệnh cụ thể hoặc tìm kiếm theo cấu trúc dữ liệu .

Nhấp vào “Lọc theo nhóm” và chọn “Chuỗi”, sau đó chọn một trong các lệnh để kiểm tra.

Ví dụ:bạn có thể sử dụng incr lệnh:

redis.incr("a")
# "2"

Hoặc bạn có thể đặt khóa tự động hết hạn bằng setex :

redis.setex("bacon", 10, 100)

Trong đó đối số thứ 2 là giây trước khi khóa này hết hạn và đối số cuối cùng là giá trị của khóa này.

Ví dụ :

redis.get("bacon")
# "100"

Sau 10 giây…

redis.get("bacon")
# nil

Chúc bạn vui vẻ khi khám phá và thử các lệnh khác!

Cách sử dụng các bộ được sắp xếp trong Redis

Redis không giới hạn ở việc lưu trữ khóa / giá trị đơn giản.

Nó cung cấp một số cấu trúc dữ liệu mạnh mẽ.

Giống như tập hợp đã sắp xếp.

Điều này cho phép bạn tạo danh sách các mục duy nhất được sắp xếp theo một giá trị nhất định . Giá trị được gọi là "điểm" trong tài liệu Redis.

Bạn có thể truy vấn để lấy N mục hàng đầu trong tập hợp này.

Vì vậy, điều này là hoàn hảo cho một bảng xếp hạng!

Ví dụ :

redis.zadd("popular_fruit", 10, "apple")
# true
redis.zadd("popular_fruit", 20, "banana")
# true
redis.zadd("popular_fruit", 30, "orange")
# true

Bây giờ chúng ta đã có bộ của mình, chúng ta có thể truy vấn mục hàng đầu:

r.zrevrange("popular_fruit", 0, 0)
# ["orange"]

Lệnh này đang nói :

“Bắt đầu từ thứ hạng cao nhất (0), hãy cho tôi món hàng đầu.”

Nếu bạn muốn mọi thứ, theo thứ tự :

r.zrevrange("popular_fruit", 0, -1)
# ["orange", "banana", "apple"]

Lưu ý phần “rev” trong “zrevrange”, có nghĩa là đảo ngược và nó sẽ cung cấp cho bạn các mục theo thứ tự giảm dần .

Nếu bạn sử dụng "zrange", bạn sẽ nhận được các mặt hàng theo thứ tự tăng dần .

Các nhóm được sắp xếp vượt ra ngoài bảng xếp hạng!

Một điều khác bạn có thể làm là xây dựng công cụ tự động hoàn tất nhanh với ZRANGEBYLEX lệnh.

Vui lòng đọc tài liệu để biết thêm các thao tác thiết lập.

Hiểu Khóa, Giá trị &Đặt tên

Không có cột, không có bảng, mọi thứ đều là một không gian tên thuần túy.

Sau đó, bạn có thể tổ chức dữ liệu của mình như thế nào?

Bạn có thể sử dụng chính tên khóa.

Một quy ước chung là sử dụng dấu hai chấm (: ) để tách biệt tên chung và phần cụ thể của tên đó.

Đây là một ví dụ :

redis.set("fruit:1", "apple")
# OK
redis.set("fruit:2", "banana")
# OK

Không có gì đặc biệt về quy ước này, đối với Redis (phần mềm) một khóa có dấu hai chấm không khác gì một chiếc chìa khóa không có nó , nhưng đối với bạn (một nhà phát triển Ruby thân thiện), nó giúp bạn tổ chức dữ liệu của mình.

Độ bền dữ liệu trong Redis

Theo mặc định, Redis không lưu mọi thao tác bạn thực hiện giống như một cơ sở dữ liệu thông thường.

Nó chỉ lưu dữ liệu vào đĩa khi bạn dừng máy chủ.

Hoặc trong các điều kiện này :

  • sau 15 phút, nếu 1 hoặc nhiều khóa được thay đổi
  • sau 5 phút, nếu 10 khóa trở lên đã thay đổi
  • sau 1 phút, nếu 10.000 khóa trở lên đã thay đổi

Điều này tạo ra một dump.rdb tệp trên thư mục hiện tại.

Nếu bạn muốn Redis kiên trì hoạt động giống cơ sở dữ liệu SQL hơn, bạn có thể bật “Chế độ chỉ nối”, chế độ này sẽ lưu các thay đổi sau mỗi giây.

Bật chế độ này bằng cách thêm (hoặc bỏ ghi chú) dòng này trên cấu hình redis:

appendonly yes

Sử dụng Redis làm bộ nhớ đệm Rails

Kể từ Rails 5.2, bạn có thể sử dụng Redis làm nơi lưu trữ bộ nhớ cache của mình.

Bạn chỉ cần redis đá quý &máy chủ.

Để bật điều này :

# config/environments/production.rb

Rails.application.configure do
  config.cache_store = :redis_cache_store, { url: "redis://localhost:6379/0" }
end

Sau đó, Rails sẽ sử dụng Redis cho tất cả các nhu cầu về bộ nhớ đệm của nó.

Bạn cũng có thể lưu trữ thứ gì đó trong bộ nhớ cache :

Rails.cache.write("a", 1)
# "OK"

Rails.cache.read("a")
# 1

Rails lưu trữ các giá trị trông giống như thế này :

"\u0004\bo: ActiveSupport::Cache::Entry\t:\v@valuei\u0006:\r@version0:\u0010@created_atf\u00171555005228.7954454:\u0010@expires_in0"

Điều này có nghĩa là bạn có thể lưu trữ bất kỳ đối tượng Ruby có thể tuần tự hóa nào, chẳng hạn như kết quả của một ActiveRecord truy vấn.

Redis F.A.Q

“Tôi có thể liệt kê tất cả các khóa trong máy chủ Redis của mình không?”

Có, bằng cách sử dụng các phím keys hoặc scan nhưng nó không được khuyến nghị vì nó rất chậm, đặc biệt khi cơ sở dữ liệu của bạn phát triển.

“Khi nào tôi nên sử dụng Redis?”

Chỉ khi nó có ý nghĩa đối với trường hợp sử dụng của bạn. Điều đó có nghĩa là bạn có thể tận dụng các cấu trúc dữ liệu của Redis để làm cho mã của bạn dễ suy luận hơn.

Bạn không muốn sử dụng Redis chỉ vì nó thú vị hoặc phổ biến.

Sử dụng nó khi nó giải quyết vấn đề tốt hơn các giải pháp khác.

“Làm cách nào tôi có thể làm cho Redis nhanh hơn?”

Cài đặt hiredis đá quý trên đầu redis-rb để có hiệu suất tối đa.

Tóm tắt

Bạn đã tìm hiểu về Redis, một cơ sở dữ liệu nhanh trong bộ nhớ có thể rất hữu ích trong các tình huống thích hợp, như bộ nhớ đệm, đếm và hàng đợi.

Nếu bạn thấy bài viết này thú vị, hãy chia sẻ nó để nhiều người cùng thưởng thức.

Cảm ơn vì đã đọc!