- vừa được xem lúc

[Redis] Bài 1 Các kiểu dữ liệu trong Redis

0 0 12

Người đăng: devquen

Theo Viblo Asia

Redis là gì ?

Redis là một in-memory remote database cung cấp hiệu xuất cao, mã nguồn mở. Redis được viết tắt từ Remote Dictionary Server, là một kiểu non-relational databbase tốc độ cao dùng để chứa dữ liệu dạng key-values của các kiểu dữ liệu khác nhau. Ngoài ra Redis còn hỗ trợ các tính năng khác như in-memory persistent storage on disk , replication để tăng hiệu xuất đọc dữ liệu và client-side sharding để tăng hiệu xuất ghi.

Bảng 1 So sánh các tính năng của các loại Database khác nhau image.png

Các kiểu dữ liệu trong Redis

Redis có năm kiểu dữ liệu khác nhau string, hash, list, set, sorted set. Các kiểu dữ liệu này có các shared command (câu lệnh dùng chung), cũng như các câu lệnh riêng biệt chỉ có thể dùng cho một hoặc hai loại dữ liệu riêng biệt

Bảng 2 So sánh các loại dữ liệu trong Redis image.png

STRINGs

Là kiểu dữ liệu đơn giản nhất và giống với các các kiểu key-value stores khác.

image.png Như hình trên ta tạo ra một STRING có key là hello và giá trị là world

Command Function
SET Set giá trị với cho key truyền vào
GET Lấy giá trị với key tương ứng
DEL Xóa dữ liệu với key tương ứng
$ redis-cli
redis 127.0.0.1:6379> set hello world
OK
redis 127.0.0.1:6379> set hello
"world"
redis 127.0.0.1:6379> delete hello
(integer) 1
redis 127.0.0.1:6379> get hello
(nil)

Ngoài các lệnh cơ bản còn có một số lệnh để đọc và viết một phần dữ liệu và một số lệnh cho phép xem STRING như một number để increment/descrement chúng. Chúng ta sẽ nói tới các commands này vào các bài sau.

LISTs

Là kiểu dữ liệu sử dụng linked-list structure (tham khảo). Redis chứa linked-listed strings giống với kiểu dữ liệu STRINGs cơ bản

image.png

Command Function
LPUSH/RPUSH Push dữ liệu vào đầu và cuối của list
LRANGE Fetches một khoảng dữ liẹu trên list
LINDEX Fetches một element trong list dự trên index position truyền vào
LPOP/RPOP Pop dữ liệu ở đầu và cuối của list
redis 127.0.0.1:6379> rpush list-key item
(integer) 1
redis 127.0.0.1:6379> rpush list-keyitem2
(integer) 2
redis 127.0.0.1:6379> rpush list-key item
(integer) 3
redis 127.0.0.1:6379> lrange list-key0 -1
1) "item"
2) "item2"
3) "item"
redis 127.0.0.1:6379> lindex list-key1
"item2"
redis 127.0.0.1:6379> lpop list-key
"item"
redis 127.0.0.1:6379> lrange list-key0 -1
1) "item2"
2) "item"
redis 127.0.0.1:6379>

Chúng ta cũng có thể remove, thêm dữ liệu ở giữa Lists, hoặc cắt Lists với kích thước cụ thể . Ngoài các lệnh cơ bản chúng ta sẽ nói tới các commands nâng cao ở các bài sau.

SETs

SETs giống với LISTs ở chỗ cách chứa dữ liệu, nhưng khác ở chỗ SETs dùng hash table để giữ cho tất cả các strings trong SETs là unique.

image.png

Command Function
SADD Thêm item vào set
SMEMBERS Trả về tất cả items trong set
SISMEMBER Kiểm tra item có trong set hay không
SREM Xóa item ra khỏi set, nếu tồn tại
redis 127.0.0.1:6379> sadd set-key item
(integer) 1
redis 127.0.0.1:6379> sadd set-key item2
(integer) 1
redis 127.0.0.1:6379> sadd set-key item
(integer) 0
redis 127.0.0.1:6379> smembers set-key
1) "item"
2) "item2"
redis 127.0.0.1:6379> sismember set-key item4
(integer) 0
redis 127.0.0.1:6379> sismember set-key item
(integer) 1
redis 127.0.0.1:6379> srem set-key item2
(integer) 1
redis 127.0.0.1:6379> srem set-key item2
(integer) 0

SETs thường dùng với intersection, union, difference (SINTER, SUNION, SDIFF) chúng ta sẽ nói tới các commands nâng cao ở các bài sau.

HASHs

Khác với List và Set, Hash chứa một list sub-key và value. Value là các kiểu giá trị như STRINGs

image.png

Command Function
HSET Chứa value vào hash key tương ứng với sub-key
HGET Fetches giá trị tương úng với hash-key và sub-key tương ứng
HGETALL Fetches cả hash bằng hash-key
HDEL Xóa value trong hash tương ứng với hash-key và sub-key tương ứng
redis 127.0.0.1:6379> hset hash-key sub-key1 value1
(integer) 1
redis 127.0.0.1:6379> hset hash-key sub-key2 value2
(integer) 1
redis 127.0.0.1:6379> hset hash-key sub-key1 value1
(integer) 0
redis 127.0.0.1:6379> hgetall hash-key
1) "sub-key1"
2) "value1"
3) "sub-key2"
4) "value2"
redis 127.0.0.1:6379> hdel hash-key sub-key2
(integer) 1
redis 127.0.0.1:6379> hdel hash-key sub-key2
(integer) 0
redis 127.0.0.1:6379> hget hash-key sub-key1
"value1"
redis 127.0.0.1:6379> hgetall hash-key
1) "sub-key1"
2) "value1"

Có thể thay đổi một hay nhiều value cùng một lúc.

Sorted sets in Redis

ZSETs giống với HASHs lưu dạng key-value. Keys (gọi là members) là unique, và value là floating-point number (gọi là scores). ZSETs có thể truy cập bởi các members (như HASHs), nhưng các items cũng có thể truy cập thông qua sorted order (order theo scores) và giá trị scores.

image.png

Command Function
ZADD Thêm member vào ZSET
ZRANGE Featches dữ liệu từ ZSET từ qua khoảng index positions thông qua sorted order
ZRANGEBYSCORE Featches dữ liệu dựa trên khoảng scores
redis 127.0.0.1:6379> zadd zset-key 728 member1
(integer) 1
redis 127.0.0.1:6379> zadd zset-key 982 member0
(integer) 1
redis 127.0.0.1:6379> zadd zset-key 982 member0
(integer) 0
redis 127.0.0.1:6379> zrange zset-key 0 -1 withscores
1) "member1"
2) "728"
3) "member0"
4) "982"
redis 127.0.0.1:6379> zrange byscore zset-key0 800 withscores
1) "member1"
2) "728"
redis 127.0.0.1:6379> zrem zset-key member1
(integer) 1
redis 127.0.0.1:6379> zrem zset-keymember1
(integer) 0
redis 127.0.0.1:6379>zrange zset-key0 -1 withscores
1) "member0"
2) "982"

Nguồn tham khảo

[Book] Redis in Action

Bình luận

Bài viết tương tự

- vừa được xem lúc

Mô hình quan hệ - thực thể (Entity – Relationship Model)

Mô hình quan hệ thực thể (Entity Relationship model - E-R) được CHEN giới thiệu vào năm 1976 là một mô hình được sử dụng rộng rãi trong các bản thiết kế cơ sở dữ liệu ở mức khái niệm, được xây dựng dựa trên việc nhận thức thế giới thực thông qua tập các đối tượng được gọi là các thực thể và các mối

0 0 132

- vừa được xem lúc

[Embulk #1] Công cụ giúp giảm nỗi đau chuyển đổi dữ liệu

Embulk là gì. Embulk là một công cụ open source có chức năng cơ bản là load các record từ database này và import sang database khác.

0 0 55

- vừa được xem lúc

Window Functions trong MySQL, Nâng cao và cực kì hữu dụng (Phần II).

Chào mọi người, lại là mình đây, ở phần trước mình đã giới thiệu với mọi người về Window Functions Phần I. Nếu chưa rõ nó là gì thì mọi người nên đọc lại trước nha, để nắm được định nghĩa và các key words, tránh mắt chữ O mồm chứ A vì phần này mình chủ yếu sẽ thực hành với các Window Functions.

0 0 107

- vừa được xem lúc

Window Functions trong MySQL, Nâng cao và cực kì hữu dụng (Phần I).

Chào mọi người, mình mới tìm hiểu đc topic Window Functions cá nhân mình cảm thấy khá là hay và mình đánh giá nó là phần nâng cao. Vì ít người biết nên Window Functions thấy rất ít khi sử dụng, thay vì đó là những câu subquery dài dằng dặc như tin nhắn nhắn cho crush, và người khác đọc hiểu được câu

0 0 923

- vừa được xem lúc

Disable và Enable trigger trong Oracle

Origin post: https://www.tranthanhdeveloper.com/2020/12/disable-va-enable-trigger-trong-oracle.html.

0 0 41

- vừa được xem lúc

Lưu trữ dữ liệu với Data Store

. Data Store là một trong những componet của bộ thư viện Android JetPack, nó là một sự lựa chọn hoàn hảo để thay thế cho SharedPreferences để lưu trữ dữ liệu đơn giản dưới dạng key-value. Chúng ta cùng làm một so sánh nhỏ để thấy sự tối ưu của Data Store với SharedPreferences nhé.

0 0 71