Tốc độ và tính linh hoạt của Redis khiến nó trở thành một công cụ cực kỳ mạnh mẽ cho các nhà phát triển và nó có thể được sử dụng theo nhiều cách khác nhau. Mặc dù Redis thường được coi là nơi lưu trữ khóa-giá trị, nó được mô tả tốt hơn nhiều như là Máy chủ cấu trúc dữ liệu, vì nó cũng hỗ trợ 5 kiểu cấu trúc dữ liệu khác nhau, đó là:
- Chuỗi
- Hàm băm
- Danh sách
- Bộ
- Tập hợp được sắp xếp
Mỗi kiểu cấu trúc có các lệnh dùng chung cũng như một số lệnh dành riêng cho một kiểu cấu trúc cụ thể.
Phần giới thiệu này sẽ trình bày những kiến thức cơ bản về cách sử dụng Redis và tổng quan về các cấu trúc dữ liệu khác nhau. Chúng tôi sẽ đề cập đến một số lệnh cơ bản hơn, mặc dù hãy nhớ rằng Redis có hơn 160 lệnh tại thời điểm viết bài và bạn có thể tìm thấy tài liệu tuyệt vời tại redis.io/commands.
Đang bắt đầu Redis
Sử dụng phiên bản do ObjectRocket cung cấp cho Redis hoặc cài đặt Redis cục bộ.
Để cài đặt cục bộ, hãy tải xuống, giải nén và biên dịch mã:
$ wget https://download.redis.io/releases/redis-2.8.17.tar.gz$ tar xzf redis-2.8.17.tar.gz $ cd redis-2.8.17 $ make
Bắt đầu phiên bản cục bộ:
$ src / redis-server
Sử dụng Redis
Bây giờ bạn đã sẵn sàng tương tác với Redis bằng ứng dụng khách tích hợp sẵn. Đối với phiên bản ObjectRocket for Redis, hãy bắt đầu redis-cli bằng tên máy chủ, cổng và mật khẩu:
$ redis-cli -h my-host -p 1234 -a mypassword
Nếu bạn đang sử dụng phiên bản cục bộ, máy chủ lưu trữ là localhost, cổng mặc định là 6379 và không có mật khẩu theo mặc định.
$ redis-cli
NHẬN và ĐẶT
Ở cấp độ đơn giản nhất, Redis có thể được mô tả như một kho khóa-giá trị. Bằng cách ra lệnh SET foo bar, bạn đặt giá trị của foo thành bar. Ví dụ:đưa ra lệnh sau từ redis-cli bạn vừa bắt đầu:
redis> SET foo barOK
Bây giờ hãy đọc giá trị của foo bằng lệnh GET.
redis> NHẬN foo "bar"
EXPIRE và TTL
Bạn có thể đặt các khóa hết hạn trong một khoảng thời gian nhất định bằng cách sử dụng lệnh EXPIRE. TTL báo cáo thời gian còn lại trước khi khóa hết hạn.
redis> SET foo barOKredis> EXPIRE foo 120 (số nguyên) 1redis> TTL foo (số nguyên) 113
Danh sách
Một trong những đặc điểm nổi bật của Redis là các giá trị của khóa có thể là cấu trúc dữ liệu, thay vì chỉ là giá trị.
Để tạo danh sách, hãy sử dụng LPUSH hoặc RPUSH. Nếu danh sách đã tồn tại, LPUSH sẽ thêm giá trị đã cho vào đầu danh sách và RPUSH sẽ thêm giá trị đó vào cuối danh sách.
redis> Các thành phố LPUSH "San Francisco" (số nguyên) 1redis> Các thành phố RPUSH "Austin" (số nguyên) 2redis> Các thành phố LRANGE 0-11. "San Francisco" 2. "Austin" redis> SẮP XẾP các thành phố alpha1. "Austin" 2. "San Francisco" redis> Các thành phố LPOP "San Francisco" redis> LRANGE thành phố 0 -11. "Austin"
Lệnh SORT sắp xếp danh sách theo từ điển theo thứ tự tăng dần với đối số ALPHA. Để sắp xếp theo thứ tự giảm dần, hãy nối đối số DESC vào lệnh SORT.
Lệnh RPOP bật một phần tử từ cuối danh sách. LPOP bật một phần tử từ đầu danh sách.
Bộ
Tập hợp tương tự như danh sách, ngoại trừ mỗi phần tử chỉ có thể xuất hiện một lần. Trong ví dụ dưới đây, chúng tôi tạo một nhóm nhỏ các Quốc gia Hoa Kỳ. Lệnh SADD thêm một mục vào tập hợp, trừ khi mục đó đã tồn tại trong tập hợp. Nếu mục không tồn tại, nó được thêm vào và 1 được trả lại; nếu không, 0 được trả về. SMEMBERS trả lại tất cả các mục trong tập hợp. SCARD trả về số phần tử của tập hợp. SREM xóa một mục khỏi danh sách.
redis> SADD cho biết "Vermont" (số nguyên) 1redis> SMEMBERS trạng thái1. "Vermont" redis> SADD tiểu bang "Texas" (số nguyên) 1redis> tiểu bang SCARD (số nguyên) 2redis> SADD tiểu bang "Vermont" (số nguyên) 0redis> tiểu bang SMEMBERS1. "Vermont" 2. "Texas" redis> SADD tiểu bang "California" (số nguyên) 1redis> SMEMBERS tiểu bang1. "Vermont" 2. "Texas" 3. "California" redis> SREM tiểu bang "California" (số nguyên) 1redis> SMEMBERS tiểu bang1. "Vermont" 2. "Texas"
Hàm băm
Sử dụng hàm băm, bạn có thể gán và ánh xạ các giá trị chuỗi cho các trường trong mỗi khóa. Một hàm băm với một vài trường được lưu trữ theo cách chiếm rất ít dung lượng, vì vậy bạn có thể lưu trữ hàng triệu đối tượng trong một phiên bản Redis nhỏ Trong ví dụ dưới đây, tên của người dùng:1 được đặt thành “john racker” bằng HSET yêu cầu. Lệnh HGET được sử dụng để lấy giá trị tên của người dùng. HGETALL trả về tất cả các khóa và giá trị liên quan đến khóa được chỉ định.
redis> Người dùng HSET:1 tên "john racker" (số nguyên) 1redis> Người dùng HGET:1 tên "joe racker" redis> Người dùng HSET:1 công ty "objectrocket" (số nguyên) 1redis> Người dùng HGET:1 công ty "ObjectRocket" redis> Người dùng HSET:1 thành phố "austin" (số nguyên) 1redis> Người dùng HGET:1 thành phố "austin" redis> Người dùng HGETALL:11. "tên" 2. "john racker" 3. "công ty" 4. "objectrocket" 5. "thành phố" 6. "austin"
CÀI ĐẶT ĐÃ SẮP XẾP
Tập hợp đã sắp xếp tương tự như tập hợp ở chỗ chúng là tập hợp chuỗi không lặp lại, mặc dù mọi thành viên đều được liên kết với một điểm số. Các tập hợp đã sắp xếp được sắp xếp theo điểm của chúng theo cách tăng dần. Phần tử giống nhau chỉ tồn tại một lần duy nhất, không cho phép phần tử lặp lại, mặc dù điểm số có thể được lặp lại.
Trong ví dụ này, chúng tôi sẽ thêm tổng số điểm của 5 đội hàng đầu tại giải Ngoại hạng Anh tính đến ngày 23/10/2014:
redis> ZADD EPL 22 "chelsea" (integer) 1redis> ZADD EPL 17 "man city" (integer) 1redis> ZADD EPL 16 "southhampton" (integer) 1redis> ZADD EPL 13 "liverpool" (số nguyên ) 1redis> ZADD EPL 13 "tây ham" (số nguyên) 1redis> ZRANK EPL "chelsea" (số nguyên) 3redis> ZRANK EPL "liverpool" (số nguyên) 0redis> ZRANK EPL "kho vũ khí" (nil)
Tiếp theo, chúng tôi sẽ xếp hạng các đội dựa trên tổng điểm bằng cách sử dụng ZRANGE:
0 ) "man city"Hãy nhớ rằng, các nhóm được sắp xếp theo thứ tự tăng dần, vì vậy để xem thứ hạng của các đội dựa trên tổng điểm của họ, chúng ta cần sử dụng ZREVRANGE
redis> ZREVRANGE EPL 0 -11) "chelsea" 2) "man city" 3) "southhampton" 4) "west ham" 5) "liverpool" redis> ZREVRANGE EPL 0 -1 WITHSCORES1) "chelsea "2)" 22 "3)" man city "4)" 17 "5)" southhampton "6)" 16 "7)" tây ham "8)" 13 "9)" Liverpool "10)" 13 "
Tiếp đó, Southampton chơi một trận và giành chiến thắng, giành được 3 điểm. Chúng tôi sử dụng ZINCRBY để tăng điểm số và ZREVRANGE để xem Southampton đã vươn lên vị trí thứ hai trong giải đấu như thế nào. Chúng ta cũng có thể sử dụng ZREVRANK để xem thứ hạng của Southampton. Lưu ý:Thứ hạng dựa trên 0, có nghĩa là thành viên có điểm cao nhất (Chelsea) có thứ hạng 0.
redis> ZINCRBY EPL 3 "southhampton" "19" redis> ZREVRANGE EPL 0 -1 VỚI KỲ TÀI 1) "chelsea" 2) "22" 3) "southhampton" 4) "19" 5) "man city" 6) "17" 7) "tây ham" 8) "13" 9) "Liverpool" 10) "13" redis> ZREVRANK EPL "southhampton" (số nguyên) 1redis> ZREVRANGEBYSCORE EPL 25 (151) "chelsea" 2) " Southampton "3)" man city "
Trong những tuần tới, chúng tôi sẽ tìm hiểu sâu hơn về Redis và một số trường hợp sử dụng cho công cụ dành cho nhà phát triển đa năng tuyệt vời này. Vui lòng gửi cho chúng tôi một dòng nếu bạn có bất kỳ câu hỏi nào về việc chạy Redis hoặc muốn cho chúng tôi biết về cách bạn đang sử dụng Redis trong ngăn xếp ứng dụng của mình.