
Những kỹ thuật và công nghệ được sử dụng trong sản
phẩm Ming

Team Ming
2
Công nghệ
Memcached(Đã được sử dụng rộng rãi trong các dự án công ty)
Redis(Phần I)
Kỹ thuật
Open Authentication(Phần II)
SSO(Single Sign On)
Big4(Facebook, Yahoo, Twitter, Google)
I. Redis
Redis là một cách lưu trữ dữ liệu kiểu key/value, nó thực thi trên server ANSI
C, redis cung cấp nhiều cách làm việc khác nhau để thực hiện một việc đơn giản :
lưu trữ value(“aaa”) tới key(“redis”), trong đó với các keys chỉ hỗ trợ kiểu string thì
với values sẽ hỗ trợ nhiều kiểu định dạng khác nhau như : Strings, Lists, Sets,
Sortedsets(zsets), Hashes. Và mỗi một loại kiểu định dạng khác nhau sẽ có một tập
hợp các command làm việc với nó như: Thêm mới, loại bỏ một phần tử trong
values... khác nhau.
Có thể xem Redis như là một cấu trúc dữ liệu (data structures) cấp cao trên
máy server, khi một người dùng redis chỉ cần cung cấp một interface để “Abstract
Data Types(kiểu dữ liệu trừu tượng)”, từ đó người dùng không phải chạy các data
structures hay các thuật toán trên data structures đó mà có thể thực thi các command
của data type đó.
Redis is free software released under the very liberal BSD license. Written in
C(C99 standard).
Redis có những đặc điểm giống như Memcached như:
Lưu Key – value (Key – value store).
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)
Nhưng Redis có nhiều đặc điểm, chức năng khác mạng lại lợi ích khi sử dụng
và triển khai. Bao gồm:
Persistence
Multiple databases

Team Ming
3
Queryable keyspace
Support for interger counters
Higher level data structures
Atomic operations
Ability to paginate lists without mutating them
Master-slave replication
Optional VM feature
I.1 So sánh Redis, Memcached, Tokyo Tyrant and MySQL
Redis
Memcached
Tokyo Tyrant / Tokyo Cabinet
MySQL 5.1.40 (MyISAM)
MySQL 5.1.40 (with Innodb Plugin 1.0.4), compiled into source of
MySQL
2 client boxes
All clients connecting to the server using Python
Used Python's threads to create concurrency
Each thread made 10,000 open-close connections to the server
The server was
o Intel(R) Pentium(R) D CPU 3.00GHz
o Fedora 10 32bit
o Intel(R) Pentium(R) D CPU 3.00GHz
o 2.6.27.38-170.2.113.fc10.i686 #1 SMP
o 1GB RAM
Used a md5 as key and a value that was saved
Created an index on the key column of the table
Each server had SET and GET requests as a different test at same
concurrency

Team Ming
4

Team Ming
5
I.2. Đăc điểm của Redis
I.2.1. Persistence, higher level data structures
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).
Có 2 kiểu persistence được supported:
Semi persistent mode (Snapshotting):
Thời gian lưu trữ data trên Memory và Disk là không đồng bộ