Hiện nay có rất nhiều chương trình hỗ trợ việc lưu trữ dữ liệu: MySQL, MongoDB, Hbase, Memcached, Redis… - Nhưng để đáp ứng nhu cầu đặt ra thì Redis là một sự lựa chọn tốt.
Redis là hệ thống lưu trữ key-value với rất nhiều tính năng và được sử dụng rộng rãi. Redis nổi bật bởi việc hỗ trợ nhiều cấu trúc dữ liệu cơ bản (hash, list, set, sorted set, string), đồng thời cho phép scripting bằng ngôn ngữ lua. Bên cạnh lưu trữ key-value trên RAM với hiệu năng cao, redis còn hỗ trợ lưu trữ dữ liệu trên đĩa cứng (persistent redis) cho phép phục hồi dữ liệu khi gặp sự cố. Ngoài tính năng replicatation (sao chép giữa master-client), tính năng cluster (sao lưu master-master) cũng đang được phát triển . Để sử dụng một cách hiệu quả những tính năng redis hỗ trợ cũng như vận hành redis với hiệu suất cao nhất thì việc am hiểu hệ thống lưu trữ này là điều không thể thiếu.
I/ Tổng Quan
- Hiện nay có rất nhiều chương trình hỗ trợ việc lưu trữ dữ liệu: MySQL, MongoDB, Hbase, Memcached, Redis…
- Nhưng để đáp ứng nhu cầu đặt ra thì Redis là một sự lựa chọn tốt.
- Nhưng để đáp ứng nhu cầu đặt ra thì Redis là một sự lựa chọn tốt.
1. Redis là gì?
- Redis là một chương trình hỗ trợ lưu trữ dữ liệu dạng key/value. - Hỗ trợ các kiểu dữ liệu: Strings, Lists, Sets, Sortedsets(zsets), Hashes.
2. Vì sao lại chọn Redis
- Redis hỗ trợ thêm mới, cập nhật và loại bỏ dữ liệu nhanh chóng- Redis có những đặc điểm giống như Memcached như:
+ Lưu trữ dạng key /value.
+ Tất cả data được lưu trên Memory(RAM)
+ Key có thể hết hạn(expire) hoặc không
+ Nhanh(Fast), nhẹ nhàng(light-weight)
- Redis có thêm nhiều đặc điểm, chức năng khác mang lại lợi ích khi sử dụng và triển khai
+ Persistence
+ Hỗ trợ nhiều Databases
+ Truy vấn theo Key
+ Hỗ trợ counters dữ liệu kiểu integer
+ Cấu trúc dữ liệu cấp cao
+ Thao tác dữ liệu chuyên biệt
+ Tự động phân trang danh sách
+ Nhân rộng master-slave
+ Tất cả data được lưu trên Memory(RAM)
+ Key có thể hết hạn(expire) hoặc không
+ Nhanh(Fast), nhẹ nhàng(light-weight)
- Redis có thêm nhiều đặc điểm, chức năng khác mang lại lợi ích khi sử dụng và triển khai
+ Persistence
+ Hỗ trợ nhiều Databases
+ Truy vấn theo Key
+ Hỗ trợ counters dữ liệu kiểu integer
+ Cấu trúc dữ liệu cấp cao
+ Thao tác dữ liệu chuyên biệt
+ Tự động phân trang danh sách
+ Nhân rộng master-slave
- Redis lấy và nạp dữ liệu trên Memory(RAM), nhưng tại một thời điểm thì dữ liệu có thể được lưu trữ trên disk(Data in memory, but saved on disk).
- Điểm khác biệt dễ nhận thấy của Redis là: Key là một string nhưng value thì không giới hạn ở một string mà có thể là List, Sets, Sorted sets, ....
- Redis hỗ trợ “Multiple database” với nhiều commands để tự động remove key từ một database tới database khác.
- Mặc định thì DB 0 sẽ được lựa chọn cho mỗi lần kết nối(connection), nhưng khi sử dụng lệnh SELECT(SELECT command) thì nó có thể select/create một database khác. Thao tác MOVE(MOVE operation) có thể chuyển một item từ một DB tới DB khác một cách tự động.
- Redis rất nhanh trong các thao tác lấy và nạp dữ liệu do redis hỗ trợ nhiều lệnh mang tính chất chuyên biệt.
- Redis hỗ trợ mở rộng master-slave nếu chúng ta muốn sự an toàn hoặc mở rộng, co giãn trong việc lưu trữ data
II/ Thao Tác
1. Cài đặt Redis
- Tải bộ cài đặt Redis chạy theo cơ chế service tại https://github.com/rgl/redis (cài đặt bình thường)- Bộ thư viện làm việc với Redis https://github.com/nrk/predis
require 'Predis/Autoloader.php';
Predis\Autoloader::register();$redis = new Predis\Client(); //default 127.0.0.1:6379
Hoặc Nó có thể xác định các thông số kết nối khác nhau bằng cách sử dụng chuỗi URI hoặc mảng có tên là:
$redis = new Predis\Client('tcp://10.0.0.1:6379');
$redis = new Predis\Client(array( 'scheme' => 'tcp', 'host' => '10.0.0.1', 'port' => 6379, ));
$redis = new Predis\Client('tcp://10.0.0.1:6379');
$redis = new Predis\Client(array( 'scheme' => 'tcp', 'host' => '10.0.0.1', 'port' => 6379, ));
- set(key, value): thiết lập giá trị cho key
- get(key): lấy giá trị của key- incr(key): tăng giá trị key lên 1 đối với kiểu integer
- decr(key): tăng giá trị key lên 1 đối với kiểu integer
- rpush($list, “value”): thêm vào bên phải danh sách $list
- lpush($list, “value”): thêm vào bên trái danh sách $list
-….
(xem thêm http://redis.io/commands)
4. Tài liệu tham khảo
http://www.mediafire.com/?rxobd55kdlek5o3