Thứ ba, 08/10/2019 | 00:00 GMT+7

Cách hết hạn khóa trong Redis

Redis là một repodata key-value open-souce trong bộ nhớ. Các khóa Redis vẫn tồn tại theo mặc định, nghĩa là server Redis sẽ tiếp tục lưu trữ chúng trừ khi chúng bị xóa theo cách thủ công. Tuy nhiên, có thể có những trường hợp bạn đã đặt khóa nhưng bạn biết rằng bạn cần xóa nó sau một khoảng thời gian nhất định đã trôi qua; nói cách khác, bạn muốn key phải biến động . Hướng dẫn này giải thích cách đặt khóa hết hạn, kiểm tra thời gian còn lại cho đến khi khóa hết hạn và hủy cài đặt hết hạn của khóa.

Cách sử dụng Hướng dẫn này

Hướng dẫn này được viết như một bảng lừa đảo với các ví dụ riêng. Ta khuyến khích bạn chuyển đến bất kỳ phần nào có liên quan đến nhiệm vụ bạn đang cố gắng hoàn thành.

Các lệnh hiển thị trong hướng dẫn này đã được thử nghiệm trên server Ubuntu 18.04 chạy Redis version 4.0.9 . Để cài đặt một môi trường tương tự, bạn có thể làm theo Bước 1 trong hướng dẫn của ta về Cách cài đặt và bảo mật Redis trên Ubuntu 18.04 . Ta sẽ chứng minh các lệnh này hoạt động như thế nào bằng cách chạy chúng với redis-cli , giao diện dòng lệnh Redis. Lưu ý nếu bạn đang sử dụng một giao diện Redis khác - ví dụ như Redli - kết quả kết quả chính xác của một số lệnh nhất định có thể khác nhau.

Ngoài ra, bạn có thể cung cấp một version database Redis được quản lý để kiểm tra các lệnh này, nhưng lưu ý tùy thuộc vào mức độ kiểm soát được nhà cung cấp database của bạn cho phép, một số lệnh trong hướng dẫn này có thể không hoạt động như được mô tả. Để cung cấp Dịch vụ database DigitalOcean, hãy làm theo tài liệu sản phẩm Dịch vụ database của ta . Sau đó, bạn phải cài đặt Redli hoặc cài đặt tunnel TLS để kết nối với Dịch vụ database qua TLS.

Đặt khóa để hết hạn

Bạn có thể đặt thời gian hết hạn cho một khóa hiện có bằng lệnh expire , lấy tên của khóa và số giây cho đến khi hết hạn làm đối số. Để chứng minh điều này, hãy chạy hai lệnh sau. Đầu tiên tạo một khóa chuỗi có tên key_melon với giá trị là "cantaloupe" và khóa thứ hai đặt nó hết hạn sau 450 giây:

  • set key_melon "cantaloupe"
  • expire key_melon 450

Nếu thời gian chờ được đặt thành công, lệnh expire sẽ trả về (integer) 1 . Nếu không đặt được thời gian chờ, thay vào đó nó sẽ trả về (integer) 0 .

Ngoài ra, bạn có thể đặt khóa hết hạn tại một thời điểm cụ thể bằng lệnh expireat . Thay vì số giây trước khi hết hạn, nó lấy dấu thời gian Unix làm đối số. Dấu thời gian Unix là số giây kể từ kỷ nguyên Unix , hoặc 00:00:00 UTC vào ngày 1 tháng 1 năm 1970. Có một số công cụ trực tuyến mà bạn có thể sử dụng để tìm dấu thời gian Unix của một ngày và giờ cụ thể, chẳng hạn như EpochConverter hoặc UnixTimestamp.com .

Ví dụ: để đặt key_melon ra hết hạn lúc 8:30 tối GMT ngày 1 tháng 5 năm 2025 (được biểu thị bằng dấu thời gian Unix 1746131400 ), bạn có thể sử dụng lệnh sau:

  • expireat key_melon 1746131400

Lưu ý nếu dấu thời gian bạn vượt qua để expireat đã xảy ra, nó sẽ xóa khóa ngay lập tức.

Kiểm tra bao lâu cho đến khi một khóa hết hạn

Bất kỳ lúc nào bạn đặt khóa hết hạn, bạn có thể kiểm tra thời gian còn lại cho đến khi hết hạn (tính bằng giây) bằng ttl , viết tắt của “ t ime t o l ive”:

  • ttl key_melon
Output
(integer) 433

Để biết thêm thông tin chi tiết, bạn có thể chạy pttl , thay vào đó sẽ trả về lượng thời gian cho đến khi khóa hết hạn tính bằng mili giây:

  • pttl key_melon
Output
(integer) 431506

Cả ttlpttl sẽ trả về (integer) -1 nếu khóa chưa được đặt thành hết hạn và (integer) -2 nếu khóa không tồn tại.

Các phím cố định

Nếu một khóa đã được đặt thành hết hạn, bất kỳ lệnh nào overrides lên nội dung của khóa - như set hoặc getset - sẽ xóa giá trị thời gian chờ của khóa. Để xóa thủ công thời gian chờ của khóa, hãy sử dụng lệnh persist :

  • persist key_melon

Lệnh persist sẽ trả về (integer) 1 nếu nó hoàn thành , cho biết rằng khóa sẽ không còn hết hạn.

Kết luận

Hướng dẫn này trình bày chi tiết một số lệnh được sử dụng để thao tác và kiểm tra độ bền của phím trong Redis. Nếu có các lệnh, đối số hoặc quy trình liên quan khác mà bạn muốn xem được nêu trong hướng dẫn này, vui lòng hỏi hoặc đưa ra đề xuất trong phần comment bên dưới.

Để biết thêm thông tin về các lệnh Redis, hãy xem loạt bài hướng dẫn của ta về Cách quản lý database Redis .


Tags:

Các tin liên quan

Cách quản lý bản sao và khách hàng trong Redis
2019-10-08
Cách thực hiện giao dịch trong Redis
2019-10-01
Cách phân tích thống kê database Redis được quản lý bằng cách sử dụng elastic trên Ubuntu 18.04
2019-09-27
Cách quản lý bộ trong Redis
2019-09-26
Cách quản lý database và khóa Redis
2019-09-20
Cách quản lý danh sách trong Redis
2019-09-20
Cách quản lý hàm băm trong Redis
2019-09-20
Cách khắc phục sự cố trong Redis
2019-09-20
Cách quản lý chuỗi trong Redis
2019-09-20
Cách quản lý danh sách trong Redis
2019-09-20