Redis là gì? Tại sao cần hiểu và sử dụng Redis để tối ưu hiệu xuất

5.0/5 (1 Reviews)

Tóm Tắt

Redis là tên viết tắt của Remote Dictionary Server hay còn gọi là Máy chủ từ điển từ xa, đây là một kho lưu trữ dữ liệu dưới dạng key-value, trên bộ nhớ, mã nguồn mở, nhanh chóng. Dự án này đã bắt đầu khi Salvatore Sanfilippo, nhà phát triển ban đầu của Redis, muốn cải thiện khả năng mở rộng quy mô công ty khởi nghiệp của ông tại Ý. Từ đó, ông đã phát triển Redis mà hiện được sử dụng với vai trò cơ sở dữ liệu, bộ nhớ đệm, trình trung chuyển tin nhắn và hàng đợi.

Nói 1 tì về ông Salvatore Sanfilippo là ai, thì ổng là Co-Fouder luôn, tí nói thêm về ổng dưới cuối bài này nha.

Redis hiện cung cấp thời gian phản hồi chưa đến một mili giây, giúp thực hiện hàng triệu yêu cầu mỗi giây cho các ứng dụng thời gian thực trong những ngành như trò chơi, công nghệ quảng cáo, dịch vụ tài chính, chăm sóc sức khỏe và IoT. Hiện nay, Redis là một trong những công cụ mã nguồn mở phổ biến nhất, được Stack Overflow phong danh hiệu cơ sở dữ liệu "Được yêu thích nhất" trong 5 năm liên tiếp. Do hiệu suất nhanh, Redis thường được chọn sử dụng cho bộ nhớ đệm, quản lý phiên, trò chơi, bảng xếp hạng, phân tích theo thời gian thực, ứng dụng không gian địa lý, đặt xe, trò chuyện/nhắn tin, phát trực tiếp nội dung đa phương tiện cũng như các ứng dụng cơ chế pub/sub.

Redis là một BSD được sử dụng làm cơ sở dữ liệu trong bộ nhớ.

  • Trong cơ sở dữ liệu chung, dữ liệu được lưu trữ trong đĩa (lưu trữ), dữ liệu trên đĩa được đọc từ bộ nhớ và dữ liệu trên bộ nhớ được xử lý bởi CPU. Ngược lại với quy trình hoạt động này, cơ sở dữ liệu trong bộ nhớ giữ dữ liệu trong bộ nhớ chính để lưu trữ dữ liệu và xử lý dữ liệu trong bộ nhớ trên CPU. Có vẻ như Redis thường được cho là nhanh hơn RDB.
  • Nếu không có dữ liệu tham chiếu nào trong dữ liệu được lưu trong bộ đệm chẳng hạn như vùng đệm của RDB, nó không được đọc từ đĩa, vì vậy cần phải khớp tất cả dữ liệu trong dung lượng của bộ nhớ.

 

Cơ sở dữ liệu NoSQL và KVS.

  • Cơ sở dữ liệu NoSQL (không quan hệ) là một từ đồng nghĩa với RDB (cơ sở dữ liệu quan hệ), và là một thuật ngữ chung cho các cơ sở dữ liệu không phải là mô hình quan hệ dạng bảng như RDB. KVS (Key-Value-Store) là phần mềm quản lý cơ sở dữ liệu có thể ghi một giá trị vào một khóa và đọc giá trị bằng cách chỉ định khóa. Đó là lý do tại sao chúng tôi sử dụng KVS, một loại NoSQL. Tôi nghĩ đó là một từ phù hợp.
  • KVS có đặc điểm là chi phí phân quyền (sử dụng nhiều máy chủ) thấp do các khóa không liên quan đến nhau. Có sự sao chép như khả năng chịu lỗi, nhưng phân quyền thể hiện đích đặt dữ liệu và chỉ ra rằng dữ liệu riêng biệt được lưu trữ trong máy chủ a và máy chủ b. Điều này bao gồm cụm Redis và Redis Replication, được liệt kê bên dưới.

 

Sử dụng mô hình máy khách / máy chủ.

  • Nó có thể được truy cập từ nhiều máy khách. Máy khách gửi một yêu cầu TCP / IP (cổng defalut: 6379) và Redis ở phía máy chủ trả về kết quả là phản hồi cho máy khách (phía ứng dụng).

 

Nó có khả năng lưu giữ dữ liệu vĩnh viễn.

  • KVS được chia thành KVS dễ bay hơi và KVS liên tục theo quan điểm lưu giữ dữ liệu. Redis dường như được phân loại là KVS dễ bay hơi, nơi dữ liệu trong bộ nhớ chính dễ bay hơi, vì vậy dữ liệu sẽ biến mất theo thời gian, nhưng Redis lưu trữ dữ liệu trong bộ nhớ trong bộ nhớ lưu trữ và giữ nó vĩnh viễn. Không có chức năng để làm.

Redis là gì?

Cấu hình và thông số kỹ thuật cần biết

Use of on-memory

Vì Redis xử lý trong bộ nhớ, bạn có thể đặt giới hạn trên của bộ nhớ vật lý sẽ được sử dụng và đặt hành vi khi vượt quá.

PolicyBehavior
noevictionNếu việc sử dụng bộ nhớ đã đạt đến giới hạn và máy khách cố gắng thực hiện một lệnh yêu cầu bộ nhớ bổ sung, nó sẽ trả về một lỗi.
allkeys-lruXóa khỏi khóa ít được sử dụng gần đây nhất (LRU) để giải phóng dung lượng cho dữ liệu mới.
volatile-lruĐể giải phóng dung lượng cho dữ liệu mới, hãy xóa khóa có bộ hết hạn khỏi khóa (LRU) ít được sử dụng gần đây nhất được chỉ định.
volatile-randomChọn và xóa một khóa ngẫu nhiên đã hết hạn sử dụng để giải phóng dung lượng cho dữ liệu mới.

Data structure

Các cấu trúc dữ liệu được Redis hỗ trợ là:

Cấu trúc dữ liệu đại diện cho một định dạng để lưu trữ dữ liệu theo một phương pháp nhất định nhằm sử dụng dữ liệu một cách hiệu quả.

Data typeOverview
StringsLoại dữ liệu trong đó Khóa và Giá trị được quản lý trên cơ sở một đối một.
ListsMột loại quản lý nhiều Giá trị cho một Khóa và chỉ định một đơn hàng. Bạn có thể chèn và truy xuất các giá trị từ bên trái hoặc bên phải của danh sách.
SetsNó giống như kiểu Danh sách trong đó nhiều Giá trị có thể được quản lý cho một Khóa, nhưng không có thứ tự nào và có thể tính được tổng, chênh lệch và tích của các nhóm dữ liệu được quản lý bởi các Khóa khác nhau.
HashesKiểu dữ liệu được quản lý bởi Khóa mẹ, Khóa con và Giá trị.
Sorted setsDữ liệu có thể được quản lý bằng cách thêm nó vào loại Danh sách và sắp xếp nó theo một thứ tự cụ thể.
Bitmaps and HyperLogLogsMặc dù nó là kiểu dữ liệu dựa trên String, bitmap và HyperLogLog với ngữ nghĩa riêng của chúng cũng được hỗ trợ.

Cấu hình Multiple Redis Server

  • Cụm Redis

    • Sharding cho phép bạn tự động phân phối dữ liệu của mình trên nhiều máy chủ Redis. Ngoài ra, là một chức năng chuyển đổi dự phòng, có một chức năng tự động chuyển đổi một nút phụ thành một nút chính. Ngoài ra, redis cluster lưu trữ dữ liệu theo một số được gọi là vị trí và dữ liệu được lưu trữ trong một trong các nút theo số vị trí.
    • Đối với cấu hình chuyên về cân bằng tải và tính khả dụng, hãy chọn cấu hình Cụm, nhưng có khả năng dữ liệu không thể được tham chiếu tạm thời khi nút gặp sự cố.
  • Redis Replication

    • Bản sao Redis là bản sao không đồng bộ trong cấu hình bản sao chính, nhưng trình đọc kiểm tra không đồng bộ lượng dữ liệu nhận được với bản chính một cách thường xuyên. Tuy nhiên, Redis Replication không có tính năng chuyển đổi dự phòng tự động, vì vậy bạn sẽ phải chuyển đổi theo cách thủ công.
    • Nếu Redis gặp sự cố, nó không phải là hệ thống phục hồi nhanh chóng. Nếu không có vấn đề gì, hãy chọn cấu hình sao chép đơn giản.
  • Redis Sentinel

    • Chức năng giám sát và thông báo còn sống của máy chủ được cung cấp và có thể thực hiện chuyển đổi dự phòng tự động nếu máy chủ được giám sát gặp sự cố. Bắt đầu nhiều quy trình Sentinel để cái chính được theo dõi và chia sẻ thông tin cái với nhau. Khi quy trình tổng thể gặp sự cố, nó sẽ tự động bị lỗi nếu phương pháp biểu quyết xác định rằng hơn một nửa quy trình của Sentinel không hoạt động.
    • Ví dụ: nếu bạn cho phép khả năng chuyển đổi dự phòng và thời gian khôi phục chuyển đổi dự phòng, hãy chọn cấu hình Sentinel.

Sao lưu dữ liệu

Tùy thuộc vào lệnh hoặc cài đặt, tất cả dữ liệu máy chủ Redis có thể được lưu dưới dạng ảnh chụp nhanh (điểm trong thời gian) ở định dạng tệp .rdb tại các khoảng thời gian cụ thể.
Ngoài ra, bằng cách bật cài đặt AOF (Chỉ thêm tệp), tất cả các hoạt động ghi đã nhận được ghi lại trong một tệp, được khôi phục khi khởi động máy chủ và tập dữ liệu gốc được xây dựng lại mà tôi có.


Lợi ích của Redis

Người ta thường ứng dụng redis cache để làm bộ nhớ đệm website, bộ nhớ đệm với các tập tin hay được sử dụng như ảnh, các file siêu dữ liệu. Ngoài ra còn được dùng làm bộ nhớ đệm kết quả truy vấn dữ liệu khi tìm kiếm, bộ nhớ đệm của phiên truy cập.Với những mục dữ liệu thường xuyên được truy cập, redis cache có thời gian phản hồi chứ đến một mili giây. Đồng thời cho phép người dùng dễ dàng thay đổi quy mô dữ liệu để đáp ứng mức tải cao mà không cần gia tăng backend. Việc này giúp tiết kiệm rất nhiều chi phí.

Hiệu suất

Tất cả các dữ liệu của Redis đều nằm trên bộ nhớ cho phép truy cập dữ liệu với độ trễ thấp và thông lượng cao. Khác với những cơ sở dữ liệu truyền thống, Kho lưu trữ dữ liệu trên bộ nhớ không yêu cầu hành trình đến ổ đĩa, từ đó giảm độ trễ của công cụ xuống còn micro giây. Do đó, kho dữ liệu trên bộ nhớ có thể hỗ trợ các thao tác nhiều hơn và thời gian phản hồi nhanh hơn gấp 10 lần. Kết quả là hiệu suất cực nhanh, trong đó các thao tác đọc và ghi trung bình chỉ mất chưa đến một mili 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

Khác với những kho lưu trữ dữ liệu dưới dạng key-value khác vốn bị giới hạn về cấu trúc dữ liệu, Redis sở hữu rất nhiều cấu trúc dữ liệu để đáp ứng nhu cầu cho ứng dụng của bạn. Kiểu dữ liệu Redis gồm có:

  • Chuỗi – văn bản hoặc dữ liệu nhị phân có kích thước lên tới 512MB
  • Danh sách – một tập hợp các Chuỗi được sắp xếp theo thứ tự như khi được thêm vào
  • Tập – một tập hợp chưa được sắp xếp các chuỗi, có khả năng giao cắt, liên kết và phân biệt với các kiểu Tập khác
  • Tập được phân loại – Tập được sắp xếp theo giá trị
  • Hàm băm – một cấu trúc dữ liệu dùng để lưu trữ danh sách các trường và giá trị
  • Bitmap – một kiểu dữ liệu cho phép thực hiện các thao tác ở cấp độ bit
  • HyperLogLogs – một cấu trúc dữ liệu xác suất để ước tính các phần tử duy nhất trong một tập dữ liệu
  • Luồng - một Hàng đợi tin nhắn có cấu trúc dữ liệu dạng nhật ký
  • Không gian địa lý - một Bản đồ với các mục nhập dựa trên kinh độ/vĩ độ, "lân cận"

Lợi ích của Redis cache

  • Redis hỗ trợ hầu hết các giao thức kết nối và ngôn ngữ lập trình. Các ngôn ngữ được hỗ trợ bao gồm: Java, javaScript, Python, PHP, Perl, Node.js, C/C#,C++, Ruby, Go.
  • Redis tạo ra một máy chủ lưu trữ dữ liệu có tính mở rộng cao, chia sẻ được với nhiều tiến trình, ứng dụng và server khác nhau.
  • Redis cache dễ sử dụng và đơn giản hơn vì redis cho phép viết ít dòng lệnh hơn để lưu trữ, truy cập và sử dụng dữ liệu trên ứng dụng.
  • Redis là một mã nguồn mở nên các mã nguồn liên tục được người dùng cập nhật, khả năng nâng cao chất lượng mã nguồn cao hơn. Các lỗi cũng được nhanh chóng xử lý.

Data model

Khác với RDMS như MySQL, hay PostgreSQL, Redis không có bảng. Redis lưu trữ data dưới dạng key-value. Thực tế thì memcache cũng làm vậy, nhưng kiểu dữ liệu của memcache bị hạn chế, không đa dạng được như Redis, do đó không hỗ trợ được nhiều thao tác từ phía người dùng. Dưới đây là sơ lược về các kiểu dữ liệu Redis dùng để lưu value.

  • STRING: Có thể là string, integer hoặc float. Redis có thể làm việc với cả string, từng phần của string, cũng như tăng/giảm giá trị của integer, float.

  • LIST: Danh sách liên kết của các strings. Redis hỗ trợ các thao tác push, pop từ cả 2 phía của list, trim dựa theo offset, đọc 1 hoặc nhiều items của list, tìm kiếm và xóa giá trị.

  • SET Tập hợp các string (không được sắp xếp). Redis hỗ trợ các thao tác thêm, đọc, xóa từng phần tử, kiểm tra sự xuất hiện của phần tử trong tập hợp. Ngoài ra Redis còn hỗ trợ các phép toán tập hợp, gồm intersect/union/difference.

  • HASH: Lưu trữ hash table của các cặp key-value, trong đó key được sắp xếp ngẫu nhiên, không theo thứ tự nào cả. Redis hỗ trợ các thao tác thêm, đọc, xóa từng phần tử, cũng như đọc tất cả giá trị.

  • ZSET (sorted set): Là 1 danh sách, trong đó mỗi phần tử là map của 1 string (member) và 1 floating-point number (score), danh sách được sắp xếp theo score này. Redis hỗ trợ thao tác thêm, đọc, xóa từng phần tử, lấy ra các phần tử dựa theo range của score hoặc của string.

Master/Slave Replication

Đây không phải là đặc trưng quá nổi bật, các DBMS khác đều có tính năng này, tuy nhiên chúng ta nêu ra ở đây để nhắc nhở rằng, Redis không kém cạnh các DBMS về tình năng Replication.

In-memory

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à đương nhiên là thao tác đọc/ghi trên RAM. Với người làm CNTT bình thường, ai cũng hiểu thao tác trên RAM nhanh hơn nhiều so với trên ổ cứng, nhưng chắc chắn chúng ta sẽ có cùng câu hỏi: Điều gì xảy ra với data của chúng ta khi server bị tắt?

Rõ ràng là toàn bộ dữ liệu trên RAM sẽ bị mất khi tắt server, vậy làm thế nào để Redis bảo toàn data và vẫn duy trì được ưu thế xử lý dữ liệu trên RAM. Chúng ta sẽ cùng tìm hiểu về cơ chế lưu dữ liệu trên ổ cứng của Redis trong phần tiếp theo của bài viết.

Persistent redis

Dù làm việc với data dạng key-value lưu trữ trên RAM, Redis vẫn cần lưu trữ dữ liệu trên ổ cứng. 1 là để đảm bảo toàn vẹn dữ liệu khi có sự cố xảy ra (server bị tắt nguồn) cũng như tái tạo lại dataset khi restart server, 2 là để gửi data đến các slave server, phục vụ cho tính năng replication. Redis cung cấp 2 phương thức chính cho việc sao lưu dữ liệu ra ổ cứng, đó là RDB và AOF. RDB (Redis DataBase file)

Nhược điểm của Redis

  • RDB không phải là lựa chọn tốt nếu bạn muốn giảm thiểu tối đa nguy cơ mất mát dữ liệu. Thông thường người dùng sẽ set up để tạo RDB snapshot 5 phút 1 lần (hoặc nhiều hơn). Do vậy, trong trường hợp có sự cố, Redis không thể hoạt động, dữ liệu trong những phút cuối sẽ bị mất.
  • RDB cần dùng fork() để tạo tiến trình con phục vụ cho thao tác disk I/O. Trong trường hợp dữ liệu quá lớn, quá trình fork() có thể tốn thời gian và server sẽ không thể đáp ứng được request từ client trong vài milisecond hoặc thậm chí là 1 second tùy thuộc vào lượng data và hiệu năng CPU.

Cài đặt Redis trên CentOS 7

Radis package không được đi kèm với repository mặc định của CentOS. Do đó, ta sẽ cài đặt Redis 5.0.2 từ Remi repository.

Quá trình cài đặt tương đối đơn giản, theo các bước sau:

Bước 1: Cài đặt EPEL

Bắt đầu bằng việc enable Remi repository. Hãy chạy lệnh sau trong SSH terminal:

sudo yum-config-manager --enable remi

Bước 2: Cài đặt Redis

Cài đặt package Redis:

sudo yum install redis

Sau khi quá trình cài đặt hoàn tất, chạy dịch vụ Redis và cho phép nó khởi động khi boot:

sudo systemctl enable redis
 
#Output:
Created symlink from /etc/systemd/system/multi-user.target.wants/redis.service to /usr/lib/systemd/system/redis.service.

Để kiểm tra trạng thái của dịch vụ, nhập vào lệnh sau:

sudo systemctl status redis

Sau đó ta sẽ thấy các dòng như sau:

● redis.service - Redis persistent key-value database
Loaded: loaded (/usr/lib/systemd/system/redis.service; enabled; vendor preset: disabled)
Drop-In: /etc/systemd/system/redis.service.d
        └─limit.conf
Active: active (running) since Sat 2018-11-24 15:21:55 PST; 40s ago
Main PID: 2157 (redis-server)
CGroup: /system.slice/redis.service
        └─2157 /usr/bin/redis-server 127.0.0.1:6379

Chú ý: Redis sẽ không thể start được nếu IPv6 chưa được enable trên server, tức là bạn phải có IPv6 đang được enable.

Lỗi cài Redis hay gặp nhất

Nếu bị lỗi như dưới đây nghĩa là các bạn chưa cài đặt php-devel

Can't find PHP headers in /usr/include/php
The php-devel package is required for use of this command.

Để cài php-devel các bạn có thể chạy lệnh sau nha

yum -y install php-devel

 

Tìm hiểu về Salvatore Sanfilippo

Đây không phải vấn đề của Redis nha "quý dị" mà là người bắt đầu dự án Redis hơn mười năm trước. Và vào ngày 01/07/2020 ông Salvatore Sanfilippo đã nói lời chào tạm biệt tới Redis cũng giống như cách mà Ryan Dahl (Ai làm Node thì phải biết ông này nha) đã rời bỏ Node để xây dựng Deno.

Nhưng Salvatore Sanfilippo hành động như thế nào khi rời Redis?

Kết thúc cuộc phiêu lưu của Redis - Salvatore Sanfilippo

Đây là tâm thư từ Salvatore Sanfilippo, khá là dài nếu bạn muốn tìm hiểu thì có thể đọc tiếp, không thì bỏ qua nhé. Nếu ai làm Dev, DevOps thì nên đọc để hiểu tâm sự của ông này, khá hay, hiểu thêm lý do mà người ta rời bỏ đứa con tin thần nha.

Khi tôi bắt đầu dự án Redis hơn mười năm trước, tôi đang ở một trong những thời điểm thú vị nhất trong sự nghiệp của mình. Người đồng sáng lập của tôi và tôi đã khởi chạy thành công hai trong số các dịch vụ web 2.0 chính của web Ý. Để làm cho chúng có thể mở rộng, chúng tôi đã phải phát minh ra nhiều khái niệm mới, những khái niệm đã được biết đến trong lĩnh vực này hầu hết thời gian, nhưng chúng tôi không biết, cũng như không quan tâm đến việc kiểm tra. Vấn đề? Hãy tìm ra một giải pháp. Chúng tôi muốn giải quyết vấn đề nhưng chúng tôi muốn, thậm chí nhiều hơn, để vui chơi.

Đây là môi trường vui tươi nơi Redis được sinh ra.

Nhưng giờ đây, Redis thực sự là một trong những phần chính của rất nhiều thứ. Và năm này qua năm khác, công việc của tôi thay đổi từ việc xây dựng thứ này sang việc đảm bảo rằng nó cũng hữu ích nhất có thể, đáng tin cậy nhất có thể. Và trong những năm gần đây, những gì tôi làm hàng ngày đã thay đổi rất nhiều nên phần lớn sự chú ý của tôi dành cho việc kiểm tra những gì các nhà phát triển khác nói với tôi về mã Redis, cách cải thiện nó, những thay đổi mà nó yêu cầu để chính xác hơn, nhanh hơn hoặc an toàn hơn. .

Tuy nhiên, tôi không bao giờ muốn trở thành một người bảo trì phần mềm.

Tôi viết mã để thể hiện bản thân và tôi coi những gì tôi viết mã là một tạo tác, thay vì chỉ là một thứ hữu ích để hoàn thành công việc. Tôi muốn nói rằng những gì tôi viết chỉ hữu ích như một tác dụng phụ, nhưng mục tiêu đầu tiên của tôi là làm cho một thứ gì đó đẹp đẽ, theo một cách nào đó. Về bản chất, tôi thà được nhớ đến như một nghệ sĩ tồi hơn là một lập trình viên giỏi. Bây giờ tôi bị yêu cầu ngày càng nhiều hơn, bởi hoàn cảnh tạo ra bởi một dự án trở nên quá quan trọng, để thể hiện bản thân ít hơn và để duy trì dự án nhiều hơn. Và đây thực sự chính là thứ mà Redis cần lúc này. Nhưng đây không phải là điều tôi muốn làm, và tôi đã cố gắng đủ sức trong suốt những năm qua.

Vì vậy, cộng đồng Redis thân mến, hôm nay tôi sẽ trở lại với tư cách là người duy trì Redis. Vị trí mới của tôi, một bên là người “ý tưởng” tại Redis Labs, nhằm cung cấp đầu vào cho các khả năng mới của Redis: Tôi sẽ tiếp tục là thành viên của ban cố vấn Redis Labs. Tuy nhiên, mặt khác, đôi tay của tôi sẽ rảnh rỗi, và tôi sẽ làm một việc khác, đó có thể là viết mã hoặc không, ai biết được, tôi không muốn lập kế hoạch vào lúc này. Tuy nhiên, tôi rất nghi ngờ về việc tôi sẽ không viết thêm mã trong tương lai. Vui quá đi mất thôi: D

Tôi để Redis trong tay của cộng đồng Redis. Tôi đã đề nghị các đồng nghiệp Yossi Gottlieb và Oran Agra tiếp tục duy trì dự án bắt đầu từ hôm nay: đây là những người đã giúp đỡ tôi nhiều nhất trong những năm gần đây và điều đó đã cố gắng rất nhiều, ngay cả khi việc theo dõi tôi không phải là “tuyến tính”. quan điểm rất chủ quan, để hiểu tầm nhìn của tôi về Redis.

Vì tôi không muốn tham gia vào việc thiết lập phát triển Redis mới sẽ được định hình như thế nào (đó là meta hầu hết các nhiệm vụ bảo trì, chính xác là những gì tôi muốn tránh), tôi sẽ chỉ để Yossi và Oran nhiệm vụ tìm hiểu cách giao tiếp với các nhà phát triển Redis còn lại để tìm ra mô hình phát triển bền vững, bạn có thể nghe trực tiếp từ Yossi và Oran trong bài đăng trên blog này: https://redislabs.com/blog/new-governance-for-redis/

Tôi tin rằng tôi không chỉ để Redis trong tay của một cộng đồng các lập trình viên chuyên nghiệp, mà còn trong tay của những người quan tâm đến di sản của tinh thần cộng đồng của Redis.

Trong mười một năm, tôi hy vọng mình có thể đưa ra quan điểm mà một số người hiểu được, về một cách thay thế để viết phần mềm. Tôi hy vọng rằng quan điểm như vậy sẽ được xem xét trong quá trình phát triển của Redis.

Redis là điều căng thẳng nhất mà tôi đã làm trong sự nghiệp của mình, và có lẽ cũng là điều quan trọng nhất. Tôi không thích những gì thế giới lập trình ngầm đã trở thành trong những năm gần đây, nhưng ngay cả khi đó không phải là một hành trình dễ dàng, tôi đã có vinh dự được làm việc và tiếp xúc với nhiều cá nhân tuyệt vời. Cảm ơn vì lòng nhân đạo và sự giúp đỡ của bạn, cũng như những gì bạn đã dạy tôi.

Bạn biết bạn là ai! Tôi cũng muốn gửi lời cảm ơn đến các công ty và cá nhân trong các công ty như vậy đã cho phép tôi viết mã nguồn mở hàng ngày trong suốt nhiều năm, với quyền tự do làm những gì tôi tin là đúng cho cơ sở người dùng. Redis Labs, VMware và Pivotal, cảm ơn sự giúp đỡ và lòng hảo tâm của bạn.

Bài này chỉ nói đến đây thôi, Tới đây thì chỉ mới cài được Redis thôi chứa chưa có sử dụng được nha, để xài được cần Cấu hình Redis Remote Access .. các thức nữa nhưng bài dài rồi, viết nữa lâu quá, nên public luôn nhé, hẹn các bạn ở bài sau.

Dịch vụ seo