IE103 Quản lý thông tin
Trang 1
MỤC LC
MC LC ..................................................................................................................... 1
DANH CH BNG BIU, HÌNH V .................................................................... 2
CHƯƠNG 1 TNG QUAN V REDIS .................................................................. 3
1.1 Hquản tr cơ s d liệu redis ........................................................................ 3
1.5 Ưu và nhưc đim ca Redis ........................................................................ 11
1.6 ng dng ca Redis ........................................................................................ 13
Chương 2 Redis vs Microsoft SQL Server ........................................................... 14
Tài liu tham kho ..................................................................................................... 20
IE103 Quản lý thông tin
Trang 2
DANH SÁCH BNG BIU, HÌNH V
Hình 1.1 Logo ca h quản tr CSDL Redis………………………………. 3
Hình 1.2 Kiến trúc ca Redis………………………………………………. 5
Hình 1.3 Cơ chế sao chép cơ s d liu…………………………………………... 9
Hình 1.4 Cơ chế sentinel……………………………………….. 10
Hình 1.5 Cơ chế cluster………………………………………………………… 11
Hình 2.1 Logo ca h quản tr CSDL Microsoft SQL Server………………….. 14
Bảng 1 Thi gian thc hin truy vn Select…………………………………….. 16
Bảng 2 Thi gian thc hin truy vn Insert…………………….. 17
Bảng 3 Thi gian thc hin truy vn Delete…………………………………. 17
Bảng 4 Thi gian thc hin truy vn Update…………………………………... 18
IE103 Quản lý thông tin
Trang 3
CHƯƠNG 1 TNG QUAN V REDIS
1.1 Hquản tr cơ s d liệu redis
1.1.1 Redis là gì?
Redis là CSDL dng khóa - giá tr (key-value) , đưc cung cấp dưi
dạng mã ngun m. D liu ca Redis đưc lưu dưi dạng cp khóa - giá tr.
Giá tr đưc truy xut thông qua khóa. Có th s dng như mt database, b
nh cache hay mt message broker.
Ưu đim ca dng khóa - giá tr là truy xuất, tìm kiếm rất nhanh. Nhưc
đim là lưu d liu không theo mẫu (schema) nht đnh. Thưng dùng làm b
nh đm cho ni dung giúp truy xut nhanh hơn. D liu có th lưu tr dưi
các dạng: Strings, Lists, Hashes, Sets, Sorted Sets, đưc lưu tr d liu trên
RAM đ ti ưu hóa thi gian truy xut, h tr lưu xung đĩa cng, h tr phân
tán.
1.1.2 Lch s ra đi
Hình 1.1 Logo redis
Tên Redis có nghĩa là Máy ch T đin T xa. D án Redis bắt
đầu khi Salvatore Sanfilippo, nhà phát trin ban đầu ca Redis. Sau khi
IE103 Quản lý thông tin
Trang 4
gặp phải các vn đ đáng k trong vic m rng mt s loại khi lưng
công vic bằng cách s dng các h thng cơ s d liu truyn thng,
Sanfilippo bt đu to mẫu th nghim phiên bản khái nim đầu tiên
ca Redis trong TCL . Sau đó, Sanfilippo đã dch nguyên mẫu đó sang
ngôn ng C và trin khai kiu d liu đầu tiên, danh sách. Sau mt vài
tuần s dng d án trong ni b vi thành công, Sanfilippo đã quyết
đnh m mã ngun ca nó, thông báo v d án trên Hacker News. D
án bắt đầu nhn đưc sc hút, đặc bit là trong cng đng Ruby,
vi GitHub và Instagram là mt trong nhng công ty đu tiên áp dng
nó.
1.1.2 Đnh nghĩa In-memory database
Không như các DBMS khác lưu tr d liu trên đĩa cng, Redis
lưu tr d liu trên RAM và thao tác đc/ghi trên RAM nhanh
hơn nhiu so vi trên cng.
Tuy nhiên, khi lưu tr trên RAM thì nhanh thật nhưng lại gặp 1
vấn đ là b mất đin thì d liu cũng mất tiêu. Đ ngăn chặn vic
mất d liu xy ra, có mt mô-đun đưc tích hp sn đ ghi trạng
thái trong b nh vào file trên đĩa trong nhng trưng hp nhất
đnh. Các file này đưc ti lại khi khi đng lại redis. Vì vậy, d
liu s không b mt. Ngoài ra, đ tăng tính sẵn sàng và khnăng
chu li ca h thng. Redis có th cấu hình theo dạng Cluster vi
k thut Master-Slave giúp h thng redis luôn sẵn sàng đáp ng
sao lưu d liu trên đĩa cng và phc hi d liu khi gặp s c.
IE103 Quản lý thông tin
Trang 5
1.2 Kiến trúc ca Redis
Kiến trúc Redis cha hai tiến trình chính: Redis client và Redis
Server.
Hình 1.2 Kiến trúc ca redis
Máy khách và máy ch Redis có th nm trong cùng mt máy tính
hoặc trong hai máy tính khác nhau.
Máy ch Redis có nhim v lưu tr d liu trong b nh. Nó x lý
tất ccác loại qun lý và tạo thành phần chính ca kiến trúc. Máy
khách Redis có th là máy khách bng điu khin Redis hoặc API
Redis ca bt k ngôn ng lập trình nào khác.
1.3 Toàn vẹn d liu
1.3.1 Khái nim toàn vẹn d liệu
Toàn vn d liu hay data persistence liên quan đến vic đảm bảo
d liu vẫn có th tn tại k ckhi ng dng ngưng hot đng và
IE103 Quản lý thông tin
Trang 6
có th tải lên đ x lý tiếp khi h thng hoạt đng tr li sau s
c.
Vấn đ này có ý nghĩa quan trng đi vi Redis vì như đã nêu
trên, Redis lưu tr d liu trên RAM thay vì b nh ngoài nên khi
xảy ra d c chng hạn như server b tt ngun thì toàn b d
liu hin RAM s biến mất. Do đó, đ đm bảo d liu không
hoàn toàn b mt đi, Redis đã áp dng thêm nhng cơ chế đ lưu
tr d liu trên b nh ph.
Nhng li ích ca vic lưu tr d liu b nh ph:
Đảm bảo toàn vn d liu khi có s c xy ra cũng như tái
tạo lại dataset khi khi đng lại server.
Gi d liu đến các slave server, phc v cho tính năng
replication.
1.3.2 Nhng cơ chế Redis s dng đ sao chép d liệu t b nh chính
sang b nh ph
Snapshotting (RDB)
- Cách thc làm vic
RDB (Redis Database Backup File) là đnh dạng tp nh
phân đưc s dng đ chp và lưu tr nhng snapshots ca
tập d liu.
Snapshotting (RDB) đưc mô tlà vic lưu tập d liu trên
đĩa trong tp nh phân dump.rdb (RDB). Điu này bao gm
IE103 Quản lý thông tin
Trang 7
vic s dng snapshots đ lưu cấu hình, cấu trúc và d liu đ
phc hi h thng b li.
- Ưu đim
o Sử dng RDB nh gn và do đó cho phép lưu tr nhiu
d liu hơn. Do đó, đây là mt la chn tuyt vi khi
bạn cần lưu tr b d liu ca mình.
o D dàng thc hin các bin pháp khôi phc bằng cách s
dng tp RDB.
o So vi các phương pháp khác như AOF, RDB nhanh hơn
khi tải các tập d liu ln.
- Nhưc đim
o Redis thưng to các snapshots trong nhng khoảng
thi gian nht đnh như sau mi năm phút, mưi phút,
hay ba mươi phút. Nên trong trưng hp Redis ngng
hoạt đng thì s b mất d liu sau lần snapshot gn
nhất.
o RDB cần fork () thưng xuyên đ snapshot trên đĩa bằng
quy trình con. fork () có th tn thi gian nếu tập d liu
ln và có th dn đến vic Redis ngng phc v client
trong vài phn nghìn giây hoặc thm chí trong mt giây
nếu tập d liu rt ln và hiu sut CPU không ln.
AOF (Append Only File)
- Cách thc làm vic
IE103 Quản lý thông tin
Trang 8
Redis server ghi li mi thao tác ghi mà nó nhận đưc vào
file AOF trên đĩa. Các thao tác này s đưc thc thi khi khi
đng lại máy ch, to lại tập d liu ban đầu.
- Ưu đim
o Nó phù hp hơn nhiu cho RDB trong trưng hp sao
lưu khẩn cấp. AOF s tiếp tc thc hin sao lưu nhật ký
trong nn khi nó quá ln.
o Vì phương pháp AOF ch b sung các thao tác mi đưc
thc hin nên có rt ít khnăng b hng d liu hoặc
mất mác d liu.
o Tp AOF d hiu và d xut vì nó ch ghi lại các thao tác
đưc thc thi trên máy ch mt cách tuần t.
- Nhưc đim
o File AOF thưng ln hơn file RDB vi cùng 1 dataset.
o AOF có th chậm hơn RDB tùy theo cách thc thiết lp
khoảng thi gian cho vic sao lưu vào cng. Tuy nhiên,
nếu thiết lập log 1 giây 1 ln có th đạt hiu năng tương
đương vi RDB.
1.4 Khnăng đáp ng cao và mở rng
1.4.1 Sao chép cơ s d liệu
Redis dùng cơ chế sao chép master/slave đ sao chép cơ s d liu
nhằm cải thin hiu suất và kh năng d phòng.
IE103 Quản lý thông tin
Trang 9
H thng có mt cơ s d liu tng th hoạt đng như mt giao
din vi thế gii bên ngoài, x lý tất ccác yêu cầu đc và ghi bên
ngoài.
Hình 1.3 Cơ chế sao chép cơ s d liu
Li ích:
o Cải thin hiu suất bằng cách m rng khi lưng công vic
sang nhiu cơ s d liu ph.
o Tạo bản sao lưu t cơ s d liu ph mà không làm gián
đoạn cơ s d liu chính.
1.4.2 Cơ chế sentinel
Redis Sentinel dùng đ giám sát các node trong cm Redis.
Khi master không th phc v, Sentinel đảm nhim nhim v
giám sát s t la chn mt master mi trong các slaves. Cơ chế
IE103 Quản lý thông tin
Trang 10
này rất hu ích khi không phi login vào server, khc phc th
công bằng tay bằng cách nâng 1 slave bất k lên làm master.
Hình 1.4 Cơ chế sentinel
1.4.2 Cơ chế cluster
Redis Cluster giúp Redis hoạt đng theo mô hình phân tán,
chia mt instance thành nhiu cluster.
IE103 Quản lý thông tin
Trang 11
Hình 1.5 Cơ chế cluster
1.5 Ưu và nhưc đim ca Redis
Ưu đim
Hiệu qu Tất cd liu Redis đưc lưu tr trong b nh, cho phép
truy cập d liu có đ tr thấp và thông lưng cao. Không ging như
cơ s d liu truyn thng, lưu tr d liu trong b nh không yêu
cầu quyn truy cp vào đĩa, giảm đ tr ca đng cơ xung micro
giây. Do đó, vic lưu tr d liu trong b nh có th h tr các hoạt
đng quy mô ln hơn vi thi gian phản hi nhanh hơn. Ưu đim
này mang lại hiu suất cc nhanh vi thi gian hoạt đng đc và ghi
IE103 Quản lý thông tin
Trang 12
trung bình dưi mt phần nghìn giây và h tr hàng triu thao tác
mi giây.
Cấu trúc d liu linh hoạt: Trong khi các kho d liu khóa-giá tr
khác cung cp cu trúc d liu hn chế, Redis cung cấp nhiu cu
trúc d liu khác nhau đ đáp ng nhu cầu ng dng như String,
List ,Bitmap, Hash,...
Đơn giản đ s dng Redis cho phép bn viết mã phc tạp truyn
thng vi ít dòng đơn giản hơn. Vi Redis, bạn có th lưu tr, truy
cập và s dng d liu ng dng ca mình ch vi mt vài dòng mã.
Sự khác bit là các nhà phát trin s dng Redis s dng cấu trúc
lnh đơn giản hơn là ngôn ng truy vn ca cơ s d liu truyn
thng.
Nhân rng và bn b Redis s dng kiến trúc bản sao chính và h
tr sao chép không đng b, có th sao chép d liu sang nhiu máy
ch bản sao. Điu này không ch ci thin hiu suất đc (vì các yêu
cầu có th đưc phân chia trên nhiu máy ch) mà còn cho phép
khôi phc nhanh chóng trong trưng hp máy ch chính b li. V
tính bn b, Redis h tr sao lưu đim trong thi gian (sao chép b
d liu Redis vào đĩa).
Tính khdng và khnăng mở rng cao Redis cung cp kiến trúc
bản sao chính trong cấu trúc liên kết chính hoặc cm mt nút. Điu
này cho phép bn xây dng các giải pháp có tính khdng cao mang
lại hiu suất và đ tin cậy nhất quán.
ngun mở Redis là mt d án mã ngun m đưc h tr bi mt
cng đng sôi đng.
IE103 Quản lý thông tin
Trang 13
Nhưc đim
Vì Redis s dng RAM làm b nh cho mình nên khi lưng file
cache ln thì s dn đến trưng hp thiếu RAM cho Server.
Không th truy vn trc tiếp các object.
1.6 ng dng ca Redis
Caching: Đưc s dng đ làm b nh đm và tạo ra đưc tc đ ghi
nhanh có th chia s đưc nhiu d liu nằm gia các ng dng hoặc
làm database trong khoảng thi gian tạm thi. ngoài ra, Redis còn có
th s dng đ có th làm Full Page Cache dành cho website. Nh
tính nhất quán bên dù bạn có restart Redis thì ngưi s dng s
không cảm nhn đưc vic chậm khi ti trang.
Counter: Đưc ng dng đ làm b đếm. Nh vào nhng thuc tính
tăng giảm thông s nhanh chóng nên các d liu đưc lưu tr trên
RAM, sets và sorted sets đu đưc s dng ph biến đ có th thc
hin đếm lưt view cho mt website và các bảng xếp hạng trong
game. Redis còn h tr thread safe nên có th thc hin đưc quá
trình đng b d liu gia các request.
Publish/Suscribe (Pub/Sub): Có th thc hin tạo kênh, chia s các
d liu. Redis s hu tính năng có th h tr tạo ra các channel đ
ngưi s dng có th trao đi d liu gia publisher và subscriber
tương t như mt channel trong Socket Cluster hoặc các topic trong
Apache Kafka. Ví d: Pub/Sub thưng đưc dùng đ có th theo dõi
đưc các kết ni bên trong mạng xã hi cũng như các h thng chat
khác.
IE103 Quản lý thông tin
Trang 14
Queues: Tạo đưc hàng đi đ có th x lý ln lưt đưc các request.
Redis thưng cho phép bạn có th lưu tr theo list cũng như cung
cấp nhiu thao tác vi hầu hết các phần t bên trong list. Chính vì
vậy, nó còn đưc s dng và xem như mt message queue.
Chương 2 Redis vs Microsoft SQL Server
2.1 Sơ lưc v h quản tr cơ s d liu Microsoft SQL Server
Hình 2.1 Logo Microsoft SQL Server
2.1.1 SQL Server là gì?
SQL Server hay còn gi là Microsoft SQL Server, viết tắt là MS SQL
Server. Đây là mt phần mm đưc phát trin bi Microsoft dùng đ
lưu tr d liu da trên chun RDBMS, và nó cũng là mt h quản tr cơ
s d liu quan h đi tưng (ORDBMS).
SQL Server cung cp đầy đ công c đ quản lý, t giao din GUI cho
đến vic s dng ngôn ng truy vấn SQL. Ngoài ra đim mạnh ca nó
IE103 Quản lý thông tin
Trang 15
là Microsoft có khá nhin nn tảng kết hp hoàn hảo vi SQL Server
như ASP.NET, C# xây dng Winform, bi vì nó hot đng hoàn toàn
đc lập.
2.1.2 Ưu và nhưc điểm ca SQL Server
Ưu đim:
Có th cài nhiu phiên bản MS SQL khác nhau trên cùng mt máy tính.
Duy trì riêng bit các môi trưng sn xuất, phát trin, th nghim.
Giảm thiu các vn đ tạm thi trên cơ s d liu.
Tách bit các đc quyn bảo mt.
Duy trì máy ch d phòng.
Nhưc đim:
Cần thanh toán phí license đ chạy nhiu CSDL (database).
2.2 So sánh Redis vi Microsoft SQL Server
2.2.1 Hthng
IE103 Quản lý thông tin
Trang 16
Microsoft SQL Server Redis
t H quản tr CSDL quan
h đưc phát trin bi
tập đoàn Microsoft
H quản tr CSDL in-
memory đưc phát
trin và quản lí bi đi
ngũ ca redis
hình chính Mô hình quan h Mô hình khóa-giá tr
hình ph Tài liu, đ th Tài liu, đ th, chui
thi gian
Hđiều hành h tr Linux, Windows BSD, Linux, OS X,
Windows
Ngôn ng lập trình h
tr
C#, C++, Java, R, Ruby,
Go, Delphi,
C, C#, Crystal, Haskell,
Javascript, Lua, Java,
Nơi lưu tr d liu
chính
Bô nh ph B nh chinh
Ngôn ng truy vn Ngôn ng truy vấn có
cấu trúc SQL
Tất cyêu cầu đưc
thc hin thông qua
lnh
2.2.2 Thi gian thc hiện các câu truy vn
Xây dng d liu mẫu
CSDL gm bng customer (khóa chính: CustomerID)
IE103 Quản lý thông tin
Trang 17
Hình 2.2 Lưc đ cơ s d liu
Phần mm và cu hình máy tính s dng
- Phần mm:
+ Ngôn ng lp trình: Javascript và Nodejs phiên bản 16.14.2
+ CSDL SQL Server 2019 Express
+ CSDL Redis phiên bản 7.0
- Cấu hình máy tính: CPU Intel Core i5-1035G1, tc đ 1.00GHz,
RAM 8GB, HDD 312GB, h điu hành Windows 10-64bit.
Thi gian thc hin truy vấn ca cơ s d liu
+ Truy vấn Select: Kết quđưc th hin như bảng 1
IE103 Quản lý thông tin
Trang 18
Bảng 1. Kết qu thi gian truy vấn
(đơn vị: giây)
Bản ghi
(1k=1000)
SQL Server Redis
10K 0,55 0,8 x10-6
100K 1,32 0,85 x10-6
200K 15,5 3,4 x10-6
500K 20,2 18 x10-6
1000K 52.39 86 x10-6
Bảng 1 cho thấy d liu càng ln thì thi gian thc hin câu truy vn
Select ca CSDL SQL Server ln hơn nhiu lần so vi CSDL Redis.
+ Truy vấn Insert: Kết quđưc hin th như bảng 2
Bảng 2. Kết qu thi gian truy vấn
(đơn vị: giây)
Bản ghi
(1k=1000)
SQL Server Redis
10K 39,9 0,87 x10-6
100K 87,1 8,7 x10-6
200K 180,4 21,5 x10-6
500K 2210 47,3 x10-6
1000K 3622 91,8 x10-6
Bảng 2 cho thy đưc thi gian thc hin câu truy vấn Insert ca CSDL
SQL Server ln hơn nhiu ln so vi CSDL Redis.
+ Truy vấn Delete: Kết quđưc hin th như bng 3
0
10
20
30
40
50
60
10K 100K 200K 500K 1000K
Biểu đtruy vấn Select
SQL Server Redis
0
500
1000
1500
2000
2500
3000
3500
4000
10K 100K 200K 500K 1000K
Biểu đtruy vấn Insert
SQL Server Redis
IE103 Quản lý thông tin
Trang 19
Bảng 3. Kết qu thi gian truy vấn
(đơn vị: giây)
Bản ghi
(1k=1000)
SQL
Server
Redis
10K 11,76 0,9 x10-6
100K 129,4 7,9 x10-6
200K 187,3 8,9 x10-6
500K 254,1 12,7 x10-6
1000K 415,23 15,7 x10-6
Bảng 3 cho ta thấy đưc thi gian thc hin câu truy vn Delete ca
CSDL SQL Server ln hơn nhiu lần so vi CSDL Redis khi d liu bản
ghi càng nhiu.
+ Truy vấn Update: Kết quđưc hin th như bng 4
Bảng 4. Kết qu thi gian truy vấn
(đơn vị: giây)
Bản ghi
(1k=1000)
SQL Server Redis
10K
13 0,8 x10-6
100K
207,65 8,3 x10-6
200K
700,8 28,3 x10-6
500K
2105,7 68,3 x10-6
10K
3605,1 83,3 x10-6
Bảng 4 cho ta thấy đưc vic thc hin câu truy vn Update ca CSDL
SQL Server cũng mt thi gian hơn so vi CSDL Redis.
0
50
100
150
200
250
300
350
400
450
10K 100K 200K 500K
Biểu đtruy vấn Delete
SQL Server Redis
0
1000
2000
3000
4000
10K 100K 200K 500K
Biểu đtruy vấn
Update
SQL Server Redis
IE103 Quản lý thông tin
Trang 20
Tóm lại, thi gian truy vấn ca CSDL SQL Server t ra khá chm so vi
CSDL Redis khi d liu ngày càng ln. Vi xu hưng hin nay, đòi hi tc đ
truy vấn d liu phải nhanh chóng thì Redis là mt giải pháp tt cho các nhà
phát trin phn mm.

Preview text:

IE103 Quản lý thông tin MỤC LỤC
MỤC LỤC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
DANH SÁCH BẢNG BIỂU, HÌNH VẼ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
CHƯƠNG 1 – TỔNG QUAN VỀ REDIS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1 Hệ quản trị cơ sở dữ liệu redis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 Kiến trúc của Redis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.3 Toàn vẹn dữ liệu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.4 Khả năng đáp ứng cao và mở rộng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.5 Ưu và nhược điểm của Redis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.6 Ứng dụng của Redis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Chương 2 – Redis vs Microsoft SQL Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.1 Sơ lược về hệ quản trị cơ sở dữ liệu Microsoft SQL Server . . . . . . . . . . 14
2.2 So sánh Redis với Microsoft SQL Server . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Tài liệu tham khảo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 Trang 1
IE103 Quản lý thông tin
DANH SÁCH BẢNG BIỂU, HÌNH VẼ
Hình 1.1 Logo của hệ quản trị CSDL Redis………………………………………. 3
Hình 1.2 Kiến trúc của Redis………………………………………………………. 5
Hình 1.3 Cơ chế sao chép cơ sở dữ liệu………………………………………….. 9
Hình 1.4 Cơ chế sentinel………………………………………………………….. 10
Hình 1.5 Cơ chế cluster…………………………………………………………… 11
Hình 2.1 Logo của hệ quản trị CSDL Microsoft SQL Server…………………. 14
Bảng 1 Thời gian thực hiện truy vấn Select…………………………………….. 16
Bảng 2 Thời gian thực hiện truy vấn Insert…………………………………….. 17
Bảng 3 Thời gian thực hiện truy vấn Delete……………………………………. 17
Bảng 4 Thời gian thực hiện truy vấn Update…………………………………. . 18 Trang 2
IE103 Quản lý thông tin
CHƯƠNG 1 – TỔNG QUAN VỀ REDIS
1.1 Hệ quản trị cơ sở dữ liệu redis 1.1.1 Redis là gì?
Redis là CSDL dạng khóa - giá trị (key-value) , được cung cấp dưới
dạng mã nguồn mở. Dữ liệu của Redis được lưu dưới dạng cặp khóa - giá trị.
Giá trị được truy xuất thông qua khóa. Có thể sử dụng như một database, bộ
nhớ cache hay một message broker.
Ưu điểm của dạng khóa - giá trị là truy xuất, tìm kiếm rất nhanh. Nhược
điểm là lưu dữ liệu không theo mẫu (schema) nhất định. Thường dùng làm bộ
nhớ đệm cho nội dung giúp truy xuất nhanh hơn. Dữ liệu có thể lưu trữ dưới
các dạng: Strings, Lists, Hashes, Sets, Sorted Sets, được lưu trữ dữ liệu trên
RAM để tối ưu hóa thời gian truy xuất, hỗ trợ lưu xuống đĩa cứng, hỗ trợ phân tán.
1.1.2 Lịch sử ra đời
Hình 1.1 Logo redis
Tên Redis có nghĩa là Máy chủ Từ điển Từ xa. Dự án Redis bắt
đầu khi Salvatore Sanfilippo, nhà phát triển ban đầu của Redis. Sau khi Trang 3
IE103 Quản lý thông tin
gặp phải các vấn đề đáng kể trong việc mở rộng một số loại khối lượng
công việc bằng cách sử dụng các hệ thống cơ sở dữ liệu truyền thống,
Sanfilippo bắt đầu tạo mẫu thử nghiệm phiên bản khái niệm đầu tiên
của Redis trong TCL . Sau đó, Sanfilippo đã dịch nguyên mẫu đó sang
ngôn ngữ C và triển khai kiểu dữ liệu đầu tiên, danh sách. Sau một vài
tuần sử dụng dự án trong nội bộ với thành công, Sanfilippo đã quyết
định mở mã nguồn của nó, thông báo về dự án trên Hacker News. Dự
án bắt đầu nhận được sức hút, đặc biệt là trong cộng đồng Ruby,
với GitHub và Instagram là một trong những công ty đầu tiên áp dụng nó.
1.1.2 Định nghĩa In-memory database
 Không như các DBMS khác lưu trữ dữ liệu trên đĩa cứng, Redis
lưu trữ dữ liệu trên RAM và thao tác đọc/ghi trên RAM nhanh
hơn nhiều so với trên ổ cứng.
 Tuy nhiên, khi lưu trữ trên RAM thì nhanh thật nhưng lại gặp 1
vấn đề là bị mất điện thì dữ liệu cũng mất tiêu. Để ngăn chặn việc
mất dữ liệu xảy ra, có một mô-đun được tích hợp sẵn để ghi trạng
thái trong bộ nhớ vào file trên đĩa trong những trường hợp nhất
định. Các file này được tải lại khi khởi động lại redis. Vì vậy, dữ
liệu sẽ không bị mất. Ngoài ra, để tăng tính sẵn sàng và khả năng
chịu lỗi của hệ thống. Redis có thể cấu hình theo dạng Cluster với
kỹ thuật Master-Slave giúp hệ thống redis luôn sẵn sàng đáp ứng
sao lưu dữ liệu trên đĩa cứng và phục hồi dữ liệu khi gặp sự cố. Trang 4
IE103 Quản lý thông tin
1.2 Kiến trúc của Redis
 Kiến trúc Redis chứa hai tiến trình chính: Redis client và Redis Server.
Hình 1.2 Kiến trúc của redis
 Máy khách và máy chủ Redis có thể nằm trong cùng một máy tính
hoặc trong hai máy tính khác nhau.
 Máy chủ Redis có nhiệm vụ lưu trữ dữ liệu trong bộ nhớ. Nó xử lý
tất cả các loại quản lý và tạo thành phần chính của kiến trúc. Máy
khách Redis có thể là máy khách bảng điều khiển Redis hoặc API
Redis của bất kỳ ngôn ngữ lập trình nào khác.
1.3 Toàn vẹn dữ liệu
1.3.1 Khái niệm toàn vẹn dữ liệu
 Toàn vẹn dữ liệu hay data persistence liên quan đến việc đảm bảo
dữ liệu vẫn có thể tồn tại kể cả khi ứng dụng ngưng hoạt động và Trang 5
IE103 Quản lý thông tin
có thể tải lên để xử lý tiếp khi hệ thống hoạt động trở lại sau sự cố.
 Vấn đề này có ý nghĩa quan trọng đối với Redis vì như đã nêu ở
trên, Redis lưu trữ dữ liệu trên RAM thay vì bộ nhớ ngoài nên khi
xảy ra dữ cố chẳng hạn như server bị tắt nguồn thì toàn bộ dữ
liệu hiện RAM sẽ biến mất. Do đó, để đảm bảo dữ liệu không
hoàn toàn bị mất đi, Redis đã áp dụng thêm những cơ chế để lưu
trữ dữ liệu trên bộ nhớ phụ.
 Những lợi ích của việc lưu trữ dữ liệu ở bộ nhớ phụ:
 Đảm bảo toàn vẹn dữ liệu khi có sự cố xảy ra cũng như tái
tạo lại dataset khi khởi động lại server.
 Gửi dữ liệu đến các slave server, phục vụ cho tính năng replication.
1.3.2 Những cơ chế Redis sử dụng để sao chép dữ liệu từ bộ nhớ chính sang bộ nhớ phụ  Snapshotting (RDB) - Cách thức làm việc
RDB (Redis Database Backup File) là định dạng tệp nhị
phân được sử dụng để chụp và lưu trữ những snapshots của tập dữ liệu.
Snapshotting (RDB) được mô tả là việc lưu tập dữ liệu trên
đĩa trong tệp nhị phân dump.rdb (RDB). Điều này bao gồm Trang 6
IE103 Quản lý thông tin
việc sử dụng snapshots để lưu cấu hình, cấu trúc và dữ liệu để
phục hồi hệ thống bị lỗi. - Ưu điểm
o Sử dụng RDB nhỏ gọn và do đó cho phép lưu trữ nhiều
dữ liệu hơn. Do đó, đây là một lựa chọn tuyệt vời khi
bạn cần lưu trữ bộ dữ liệu của mình.
o Dễ dàng thực hiện các biện pháp khôi phục bằng cách sử dụng tệp RDB.
o So với các phương pháp khác như AOF, RDB nhanh hơn
khi tải các tập dữ liệu lớn. - Nhược điểm
o Redis thường tạo các snapshots trong những khoảng
thời gian nhất định như sau mỗi năm phút, mười phút,
hay ba mươi phút. Nên trong trường hợp Redis ngừng
hoạt động thì sẽ bị mất dữ liệu sau lần snapshot gần nhất.
o RDB cần fork () thường xuyên để snapshot trên đĩa bằng
quy trình con. fork () có thể tốn thời gian nếu tập dữ liệu
lớn và có thể dẫn đến việc Redis ngừng phục vụ client
trong vài phần nghìn giây hoặc thậm chí trong một giây
nếu tập dữ liệu rất lớn và hiệu suất CPU không lớn.  AOF (Append Only File) - Cách thức làm việc Trang 7
IE103 Quản lý thông tin
Redis server ghi lại mọi thao tác ghi mà nó nhận được vào
file AOF trên ổ đĩa. Các thao tác này sẽ được thực thi khi khởi
động lại máy chủ, tạo lại tập dữ liệu ban đầu. - Ưu điểm
o Nó phù hợp hơn nhiều cho RDB trong trường hợp sao
lưu khẩn cấp. AOF sẽ tiếp tục thực hiện sao lưu nhật ký
trong nền khi nó quá lớn.
o Vì phương pháp AOF chỉ bổ sung các thao tác mới được
thực hiện nên có rất ít khả năng bị hỏng dữ liệu hoặc mất mác dữ liệu.
o Tệp AOF dễ hiểu và dễ xuất vì nó chỉ ghi lại các thao tác
được thực thi trên máy chủ một cách tuần tự. - Nhược điểm
o File AOF thường lớn hơn file RDB với cùng 1 dataset.
o AOF có thể chậm hơn RDB tùy theo cách thức thiết lập
khoảng thời gian cho việc sao lưu vào ổ cứng. Tuy nhiên,
nếu thiết lập log 1 giây 1 lần có thể đạt hiệu năng tương đương với RDB.
1.4 Khả năng đáp ứng cao và mở rộng
1.4.1 Sao chép cơ sở dữ liệu
 Redis dùng cơ chế sao chép master/slave để sao chép cơ sở dữ liệu
nhằm cải thiện hiệu suất và khả năng dự phòng. Trang 8
IE103 Quản lý thông tin
 Hệ thống có một cơ sở dữ liệu tổng thể hoạt động như một giao
diện với thế giới bên ngoài, xử lý tất cả các yêu cầu đọc và ghi bên ngoài.
Hình 1.3 Cơ chế sao chép cơ sở dữ liệu  Lợi ích:
o Cải thiện hiệu suất bằng cách mở rộng khối lượng công việc
sang nhiều cơ sở dữ liệu phụ.
o Tạo bản sao lưu từ cơ sở dữ liệu phụ mà không làm gián
đoạn cơ sở dữ liệu chính.
1.4.2 Cơ chế sentinel
Redis Sentinel dùng để giám sát các node trong cụm Redis.
Khi master không thể phục vụ, Sentinel đảm nhiệm nhiệm vụ
giám sát sẽ tự lựa chọn một master mới trong các slaves. Cơ chế Trang 9
IE103 Quản lý thông tin
này rất hữu ích khi không phải login vào server, khắc phục thủ
công bằng tay bằng cách nâng 1 slave bất kỳ lên làm master.
Hình 1.4 Cơ chế sentinel
1.4.2 Cơ chế cluster
Redis Cluster giúp Redis hoạt động theo mô hình phân tán,
chia một instance thành nhiều cluster. Trang 10
IE103 Quản lý thông tin
Hình 1.5 Cơ chế cluster
1.5 Ưu và nhược điểm của Redis Ưu điểm
Hiệu quả Tất cả dữ liệu Redis được lưu trữ trong bộ nhớ, cho phép
truy cập dữ liệu có độ trễ thấp và thông lượng cao. Không giống như
cơ sở dữ liệu truyền thống, lưu trữ dữ liệu trong bộ nhớ không yêu
cầu quyền truy cập vào đĩa, giảm độ trễ của động cơ xuống micro
giây. Do đó, việc lưu trữ dữ liệu trong bộ nhớ có thể hỗ trợ các hoạt
động quy mô lớn hơn với thời gian phản hồi nhanh hơn. Ưu điểm
này mang lại hiệu suất cực nhanh với thời gian hoạt động đọc và ghi Trang 11
IE103 Quản lý thông tin
trung bình dưới một phần nghìn giây và hỗ trợ hàng triệu thao tác mỗi giây.
Cấu trúc dữ liệu linh hoạt: Trong khi các kho dữ liệu khóa-giá trị
khác cung cấp cấu trúc dữ liệu hạn chế, Redis cung cấp nhiều cấu
trúc dữ liệu khác nhau để đáp ứng nhu cầu ứng dụng như String, List ,Bitmap, Hash,. .
Đơn giản để sử dụng Redis cho phép bạn viết mã phức tạp truyền
thống với ít dòng đơn giản hơn. Với Redis, bạn có thể lưu trữ, truy
cập và sử dụng dữ liệu ứng dụng của mình chỉ với một vài dòng mã.
Sự khác biệt là các nhà phát triển sử dụng Redis sử dụng cấu trúc
lệnh đơn giản hơn là ngôn ngữ truy vấn của cơ sở dữ liệu truyền thống.
Nhân rộng và bền bỉ Redis sử dụng kiến trúc bản sao chính và hỗ
trợ sao chép không đồng bộ, có thể sao chép dữ liệu sang nhiều máy
chủ bản sao. Điều này không chỉ cải thiện hiệu suất đọc (vì các yêu
cầu có thể được phân chia trên nhiều máy chủ) mà còn cho phép
khôi phục nhanh chóng trong trường hợp máy chủ chính bị lỗi. Về
tính bền bỉ, Redis hỗ trợ sao lưu điểm trong thời gian (sao chép bộ
dữ liệu Redis vào đĩa).
Tính khả dụng và khả năng mở rộng cao Redis cung cấp kiến trúc
bản sao chính trong cấu trúc liên kết chính hoặc cụm một nút. Điều
này cho phép bạn xây dựng các giải pháp có tính khả dụng cao mang
lại hiệu suất và độ tin cậy nhất quán.
Mã nguồn mở Redis là một dự án mã nguồn mở được hỗ trợ bởi một cộng đồng sôi động. Trang 12
IE103 Quản lý thông tin Nhược điểm 
Vì Redis sử dụng RAM làm bộ nhớ cho mình nên khi lượng file
cache lớn thì sẽ dẫn đến trường hợp thiếu RAM cho Server. 
Không thể truy vấn trực tiếp các object.
1.6 Ứng dụng của Redis
Caching: Được sử dụng để làm bộ nhớ đệm và tạo ra được tốc độ ghi
nhanh có thể chia sẻ được nhiều dữ liệu nằm giữa các ứng dụng hoặc
làm database trong khoảng thời gian tạm thời. ngoài ra, Redis còn có
thể sử dụng để có thể làm Full Page Cache dành cho website. Nhờ
tính nhất quán bên dù bạn có restart Redis thì người sử dụng sẽ
không cảm nhận được việc chậm khi tải trang.
Counter: Được ứng dụng để làm bộ đếm. Nhờ vào những thuộc tính
tăng giảm thông số nhanh chóng nên các dữ liệu được lưu trữ trên
RAM, sets và sorted sets đều được sử dụng phổ biến để có thể thực
hiện đếm lượt view cho một website và các bảng xếp hạng ở trong
game. Redis còn hỗ trợ thread safe nên có thể thực hiện được quá
trình đồng bộ dữ liệu giữa các request.
Publish/Suscribe (Pub/Sub): Có thể thực hiện tạo kênh, chia sẻ các
dữ liệu. Redis sở hữu tính năng có thể hỗ trợ tạo ra các channel để
người sử dụng có thể trao đổi dữ liệu giữa publisher và subscriber
tương tự như một channel trong Socket Cluster hoặc các topic trong
Apache Kafka. Ví dụ: Pub/Sub thường được dùng để có thể theo dõi
được các kết nối bên trong mạng xã hội cũng như các hệ thống chat khác. Trang 13
IE103 Quản lý thông tin
Queues: Tạo được hàng đợi để có thể xử lý lần lượt được các request.
Redis thường cho phép bạn có thể lưu trữ theo list cũng như cung
cấp nhiều thao tác với hầu hết các phần tử bên trong list. Chính vì
vậy, nó còn được sử dụng và xem như một message queue.
Chương 2 – Redis vs Microsoft SQL Server
2.1 Sơ lược về hệ quản trị cơ sở dữ liệu Microsoft SQL Server
Hình 2.1 Logo Microsoft SQL Server
2.1.1 SQL Server là gì?
 SQL Server hay còn gọi là Microsoft SQL Server, viết tắt là MS SQL
Server. Đây là một phần mềm được phát triển bởi Microsoft dùng để
lưu trữ dữ liệu dựa trên chuẩn RDBMS, và nó cũng là một hệ quản trị cơ
sở dữ liệu quan hệ đối tượng (ORDBMS).
 SQL Server cung cấp đầy đủ công cụ để quản lý, từ giao diện GUI cho
đến việc sử dụng ngôn ngữ truy vấn SQL. Ngoài ra điểm mạnh của nó Trang 14
IE103 Quản lý thông tin
là Microsoft có khá nhiền nền tảng kết hợp hoàn hảo với SQL Server
như ASP.NET, C# xây dựng Winform, bởi vì nó hoạt động hoàn toàn độc lập.
2.1.2 Ưu và nhược điểm của SQL Server Ưu điểm:
 Có thể cài nhiều phiên bản MS SQL khác nhau trên cùng một máy tính.
 Duy trì riêng biệt các môi trường sản xuất, phát triển, thử nghiệm.
 Giảm thiểu các vấn đề tạm thời trên cơ sở dữ liệu.
 Tách biệt các đặc quyền bảo mật.
 Duy trì máy chủ dự phòng. Nhược điểm:
 Cần thanh toán phí license để chạy nhiều CSDL (database).
2.2 So sánh Redis với Microsoft SQL Server 2.2.1 Hệ thống Trang 15
IE103 Quản lý thông tin Microsoft SQL Server Redis Mô tả
Hệ quản trị CSDL quan Hệ quản trị CSDL in-
hệ được phát triển bởi memory được phát tập đoàn Microsoft
triển và quản lí bởi đội ngũ của redis Mô hình chính Mô hình quan hệ Mô hình khóa-giá trị Mô hình phụ Tài liệu, đồ thị
Tài liệu, đồ thị, chuỗi thời gian
Hệ điều hành hỗ trợ Linux, Windows BSD, Linux, OS X, Windows
Ngôn ngữ lập trình hỗ C#, C++, Java, R, Ruby, C, C#, Crystal, Haskell, trợ Go, Delphi, … Javascript, Lua, Java, …
Nơi lưu trữ dữ liệu Bô nhớ phụ Bộ nhớ chinh chính Ngôn ngữ truy vấn Ngôn ngữ truy vấn có
Tất cả yêu cầu được cấu trúc SQL thực hiện thông qua lệnh
2.2.2 Thời gian thực hiện các câu truy vấn
 Xây dựng dữ liệu mẫu
CSDL gồm bảng customer (khóa chính: CustomerID) Trang 16
IE103 Quản lý thông tin
Hình 2.2 Lược đồ cơ sở dữ liệu
 Phần mềm và cấu hình máy tính sử dụng - Phần mềm:
+ Ngôn ngữ lập trình: Javascript và Nodejs phiên bản 16.14.2
+ CSDL SQL Server 2019 Express + CSDL Redis phiên bản 7.0
- Cấu hình máy tính: CPU Intel Core i5-1035G1, tốc độ 1.00GHz,
RAM 8GB, HDD 312GB, hệ điều hành Windows 10-64bit.
 Thời gian thực hiện truy vấn của cơ sở dữ liệu
+ Truy vấn Select: Kết quả được thể hiện như bảng 1 Trang 17
IE103 Quản lý thông tin
Bảng 1. Kết quả thời gian truy vấn
Biểu đồ truy vấn Select (đơn vị: giây) 60 Bản ghi SQL Server Redis 50 (1k=1000) 40 10K 0,55 0,8 x10-6 30 100K 1,32 0,85 x10-6 20 200K 15,5 3,4 x10-6 10 500K 20,2 18 x10-6 0 10K 100K 200K 500K 1000K 1000K 52.39 86 x10-6 SQL Server Redis
Bảng 1 cho thấy dữ liệu càng lớn thì thời gian thực hiện câu truy vấn
Select của CSDL SQL Server lớn hơn nhiều lần so với CSDL Redis.
+ Truy vấn Insert: Kết quả được hiển thị như bảng 2
Bảng 2. Kết quả thời gian truy vấn
Biểu đồ truy vấn Insert (đơn vị: giây) 4000 Bản ghi SQL Server Redis 3500 (1k=1000) 3000 2500 10K 39,9 0,87 x10-6 2000 100K 87,1 8,7 x10-6 1500 1000 200K 180,4 21,5 x10-6 500 500K 2210 47,3 x10-6 0 10K 100K 200K 500K 1000K 1000K 3622 91,8 x10-6 SQL Server Redis
Bảng 2 cho thấy được thời gian thực hiện câu truy vấn Insert của CSDL
SQL Server lớn hơn nhiều lần so với CSDL Redis.
+ Truy vấn Delete: Kết quả được hiển thị như bảng 3 Trang 18
IE103 Quản lý thông tin
Bảng 3. Kết quả thời gian truy vấn
Biểu đồ truy vấn Delete (đơn vị: giây) 450 Bản ghi SQL Redis 400 350 (1k=1000) Server 300 10K 11,76 0,9 x10-6 250 200 100K 129,4 7,9 x10-6 150 100 200K 187,3 8,9 x10-6 50 500K 254,1 12,7 x10-6 0 10K 100K 200K 500K 1000K 415,23 15,7 x10-6 SQL Server Redis
Bảng 3 cho ta thấy được thời gian thực hiện câu truy vấn Delete của
CSDL SQL Server lớn hơn nhiều lần so với CSDL Redis khi dữ liệu bản ghi càng nhiều.
+ Truy vấn Update: Kết quả được hiển thị như bảng 4
Bảng 4. Kết quả thời gian truy vấn
Biểu đồ truy vấn (đơn vị: giây) Update Bản ghi SQL Server Redis (1k=1000) 4000 10K 13 0,8 x10-6 3000 100K 207,65 8,3 x10-6 2000 200K 700,8 28,3 x10-6 500K 2105,7 68,3 x10-6 1000 10K 3605,1 83,3 x10-6 0 10K 100K 200K 500K SQL Server Redis
Bảng 4 cho ta thấy được việc thực hiện câu truy vấn Update của CSDL
SQL Server cũng mất thời gian hơn so với CSDL Redis. Trang 19
IE103 Quản lý thông tin
Tóm lại, thời gian truy vấn của CSDL SQL Server tỏ ra khá chậm so với
CSDL Redis khi dữ liệu ngày càng lớn. Với xu hướng hiện nay, đòi hỏi tốc độ
truy vấn dữ liệu phải nhanh chóng thì Redis là một giải pháp tốt cho các nhà phát triển phần mềm. Trang 20