- vừa được xem lúc

[Redis] - Redis list

0 0 10

Người đăng: TheLight

Theo Viblo Asia

Tạo list (danh sách)

Một key chỉ có thể chứa một danh sách, mặc dù bất kỳ danh sách nào cũng có thể chứa trên bốn tỷ phần tử. Redis đọc danh sách từ trái sang phải và chúng ta có thể thêm các phần tử mới vào phần đầu của danh sách (phần cuối "bên trái") bằng lệnh lpush hoặc phần đuôi (phần cuối "bên phải") bằng rpush . Chúng ta cũng có thể sử dụng lpush hoặc rpush để tạo danh sách mới:

> lpush key value 

Cả hai lệnh sẽ trả về một số nguyên cho biết có bao nhiêu phần tử trong danh sách. Để minh họa, hãy chạy các lệnh sau để tạo một danh sách có chứa câu chính tả Tôi là Nguyễn Văn A:

> rpush key_philosophy1 "Tôi" > rpush key_philosophy1 "là" > rpush key_philosophy1 "Nguyên" > rpush key_philosophy1 "Văn" > rpush key_philosophy1 "A" 

Đầu ra từ lệnh cuối cùng sẽ đọc:

Output
(integer) 5 

Lưu ý chúng ta có thể thêm nhiều phần tử trong một lệnh lpush hoặc rpush:

> rpush key_philosophy1 "-" "B" "C" 

Lệnh lpushxrpushx cũng được sử dụng để thêm phần tử vào danh sách, nhưng sẽ chỉ hoạt động nếu danh sách đã cho đã tồn tại. Nếu danh sách chưa tồn tại nó sẽ trả về (integer) 0 :

> rpushx key_philosophy2 "Happiness" "is" "the" "highest" "good" "–" "Aristotle" Output
(integer) 0

Để thay đổi phần tử hiện có trong danh sách ta chạy lệnh lset theo sau là tên key, index của phần tử chúng ta muốn thay đổi và giá trị mới:

> lset key_philosophy1 5 "D" 

Nếu chúng ta thử thêm một phần tử vào một key hiện có không phải là danh sách, nó sẽ dẫn đến xung đột về kiểu dữ liệu và trả về lỗi. Ví dụ thêm phần tử vào key không phải là danh sách bằng lpush sẽ không thành công:

> set key_philosophy3 "What is love?" > lpush key_philosophy3 "Baby don't hurt me" Output
(error) WRONGTYPE Operation against a key holding the wrong kind of value 

Không thể chuyển đổi các key Redis từ kiểu dữ liệu này sang kiểu dữ liệu khác, vì vậy, để biến key_philosophy3 thành một danh sách, chúng ta cần xóa key và bắt đầu lại bằng lệnh lpush hoặc rpush.

Lấy các phần tử từ một list (danh sách)

Để lấy một loạt các phần tử trong một danh sách, sử dụng lrange lệnh tiếp theo là khoảng muốn lấy. Vị trí 0 đại diện cho phần tử đầu tiên trong danh sách, 1 đại diện cho phần tiếp theo, v.v.

Lệnh sau sẽ trả về tất cả các phần tử từ danh sách ví dụ đã tạo trong phần trước:

> lrange key_philosophy1 0 7 Output
1) "Tôi" 2) "là" 3) "Nguyễn" 4) "Văn" 5) "A" 6) "D" 7) "C"

Vị trí cũng có thể là số âm, -1 đại diện cho phần tử cuối cùng trong danh sách, -2 đại diện cho phần tử đứng thứ hai đến cuối cùng trong danh sách, v.v. Ví dụ sau trả về ba phần tử cuối cùng của danh sách được giữ trong key_philosophy1 :

> lrange key_philosophy1 -3 -1 Output
1) "A" 2) "D" 3) "C" 

Để lấy một phần tử duy nhất từ danh sách, chúng ta có thể sử dụng lệnh lindex . Tuy nhiên, lệnh này yêu cầu chúng ta cung cấp index của phần tử làm đối số. Như với lrange , index dựa trên 0, nghĩa là phần tử đầu tiên ở index 0 , phần tử thứ hai ở index 1 , v.v.

> lindex key_philosophy1 4 Output
"A"

Để biết có bao nhiêu phần tử trong một danh sách nhất định, hãy sử dụng lệnh llen , viết tắt của list length:

> llen key_philosophy1 Output
(integer) 5

Xóa các phần tử khỏi danh sách

Lệnh lrem loại bỏ lần xuất hiện đầu tiên trong số các lần xuất hiện đã xác định trùng với một giá trị nhất định. Để thử nghiệm điều này, hãy tạo danh sách sau:

> rpush key_Bond "Never" "Say" "Never" "Again" "You" "Only" "Live" "Twice" "Live" "and" "Let" "Die" "Tomorrow" "Never" "Dies" 

Ví dụ lrem sau sẽ xóa lần xuất hiện đầu tiên của giá trị "Live" :

> lrem key_Bond 1 "Live" 

Lệnh này sẽ xuất ra số phần tử bị xóa khỏi danh sách:

Output
(integer) 1 

Số được truyền trong lệnh lrem cũng có thể là số âm. Ví dụ sau sẽ xóa hai lần xuất hiện cuối cùng của giá trị "Never" :

> lrem key_Bond -2 "Never" Output
(integer) 2 

Lệnh lpop xóa và trả về phần tử đầu tiên hoặc phần tử ngoài cùng bên trái khỏi danh sách:

> lpop key_Bond Output
"Never" 

Tương tự như vậy, để xóa và trả lại phần tử cuối cùng hoặc phần tử ngoài cùng bên phải từ danh sách, hãy sử dụng rpop :

> rpop key_Bond Output
"Dies" 

Redis cũng bao gồm lệnh rpoplpush , lệnh này xóa phần tử cuối cùng khỏi danh sách và đẩy nó lên đầu danh sách khác:

> rpoplpush key_Bond key_AfterToday Output
"Tomorrow" 

Nếu key nguồn và key đích được truyền cho lệnh rpoplpush giống nhau, về cơ bản nó sẽ xoay các phần tử trong danh sách.

Nguồn:

Bình luận

Bài viết tương tự

- vừa được xem lúc

Caching đại pháp 2: Cache thế nào cho hợp lý?

Caching rất dễ. Mình không nói đùa đâu, caching rất là dễ. Ai cũng có thể làm được chỉ sau 10 phút đọc tutorial. Nó cũng giống như việc đứa trẻ lên 3 đã có thể cầm bút để vẽ vậy.

0 0 114

- vừa được xem lúc

Caching đại pháp 1: Nấc thang lên level của developer

Bí quyết thành công trong việc đáp ứng hệ thống triệu user của những công ty lớn (và cả công ty nhỏ). Tại sao caching lại là kỹ thuật tối quan trọng để phù phép ứng dụng rùa bò của chúng ta thành siêu phẩm vạn người mê.

0 0 67

- vừa được xem lúc

Cache dữ liệu Nodejs với Redis

Một tí gọi là lý thuyết để anh em tham khảo. Cache là gì. Lợi ích của việc cache data. .

0 0 96

- vừa được xem lúc

Nguyên tắc hoạt động của redis server

Sự ra đời của Redis. . Câu chuyện bắt đầu khi tác giả của Redis, Salvatore Sanfilippo. (nickname: antirez), cố gắng làm những công việc gần như là không.

0 0 75

- vừa được xem lúc

Viết ứng dụng chat realtime với Laravel, VueJS, Redis và Socket.IO, Laravel Echo

Xin chào tất cả các bạn, đây là một trong những bài post đầu tiên của mình. Sau bao năm toàn đi đọc các blog tích luỹ được chút kiến thức của các cao nhân trên mạng.

0 0 904

- vừa được xem lúc

Tìm hiểu tổng quan về Redis

1. Lời mở đầu.

0 0 351