+1

Thao tác CRUD trong Redis string data với Spring boot, Kotlin

Trong bài viết giới thiệu về một số điểm cơ bản:

  • Build Redis server với docker compose
  • Kết nối Spring boot với Redis server viết bằng Kotlin
  • Thao tác CRUD dạng string data qua Rest controller

Redis server

Redis là kho dữ liệu để lưu trữ cấu trúc dữ liệu trong bộ nhớ, sử dụng như một cơ sở dữ liệu key-value phân tán, cache và thông điệp với độ bền tùy chọn. Redis hỗ trợ các loại cấu trúc dữ liệu trừu tượng khác nhau như strings, lists, maps, sets, sorted sets, HyperLogLogs, bitmaps, streams, và spatial indices.

Basic command SET and GET

SET command

SET command là xét key để chứ gía trị string. Nếu key đã chứa một giá trị, nó sẽ bị ghi đè với kiểu dữ liệu tương ứng.

Các tùy chọn:

  • SET command hỗ trợ một số tùy chọn để tùy chỉnh hành vi:
  • EX seconds -- Xét thời gian hết hạn đơn vị giây.
  • PX milliseconds -- Xét thời gian hết hạn đơn vị mili giây.
  • EXAT timestamp-seconds -- Xét thời gian hết hạn đơn vị Unix tại thời điểm key sẽ hết hạn đơn vị giây.
  • PXAT timestamp-milliseconds -- Xét thời gian hết hạn đơn vị Unix tại thời điểm key sẽ hết hạn đơn vị mili giây.
  • NX -- Chỉ xét khi key chưa tồn tại.
  • XX -- Chỉ xét khi key đã tồn tại.
  • KEEPTTL -- Giữ lại thời gian tồn tại liên quan đến khóa.
  • GET -- Trả lại giá trị cũ lưu trữ tại key hoặc nil khi khóa không tồn tại.
GET command

GET command lấy giá trị của key. Nếu Nếu key chưa tồn tại giá trị cụ thể sẽ trả về nil. Trả về lỗi khi gía trị cần lưu trữ tại key không phải là string, vì GET chỉ xử lý các giá trị string.

Spring Data Redis

Spring Data Redis là một phần của Spring Data cho phép tùy chỉnh dễ dàng và truy cập với Redis từ các ứng dụng Spring. Nó cung cấp cả sự trừu tượng cấp thấp và cấp cao để tương tác với cơ sở dữ liệu cho người dùng khỏi những lo lắng về cơ sở hạ tầng. Các tính năng:

  • Các package kết nối trừu tượng cấp thấp qua một số Redis driver(Lettuce và Jedis).
  • Bản dịch ngoại lệ sang phân cấp ngoại lệ Truy cập dữ liệu di động của Spring cho các trường hợp ngoại lệ của trình điều khiển Redis.
  • RedisTemplate cung cấp tính trừu tượng cấp cao để thực hiện các hoạt động Redis khác nhau, hỗ trợ dịch ngoại lệ và tuần tự hóa.
  • Hỗ trợ Pubsub (chẳng hạn như MessageListenerContainer dành cho POJO theo hướng tin nhắn).
  • Hỗ trợ Redis Sentinel và Redis Cluster.
  • API phản ứng bằng cách sử dụng Lettuce driver.
  • JDK, String, JSON và Spring Object / XML để map với các serializer.
  • Triển khai tập JDK trên Redis.
  • Các lớp hỗ trợ bộ đếm nguyên tử.
  • Chức năng Sắp xếp và Pipelining.
  • Hỗ trợ chuyên dụng cho mẫu SORT, SORT / GET và các giá trị hàng loạt trả về.
  • Thực hiện Redis cho sự trừu tượng hóa bộ nhớ cache của Spring 3.1.
  • Tự động triển khai các giao diện Kho lưu trữ bao gồm hỗ trợ các phương pháp truy vấn tùy chỉnh sử dụng @EnableRedisRepositories.
  • CDI(Customer Data Integration) hỗ trợ cho kho lưu trữ.

Build project

Chúng ta sẽ tạo một ứng dụng Spring boot với các thông số sau: Screen Shot 2021-06-20 at 8.30.34 PM.png

Create Redis server

Sử dụng docker image redis:alpine với docker-compose

version: "3"

services:
  redis-spring-boot:
    image: redis:alpine
    ports:
      - 6380:6379
    tty: true

Connect to Spring boot to Redis server

Viết đoạn code kết nối từ ứng dụng Spring boot với Redis Screen Shot 2021-06-20 at 8.32.57 PM.png

Rest Controller

  • Create Service: để xử lý logic thao tác với Redis bằng redisValueOps Screen Shot 2021-06-20 at 8.34.43 PM.png
  • Create Rest Controller: call service và nhận request từ client Screen Shot 2021-06-20 at 8.35.09 PM.png

Demo

Trong ứng dụng mình có setup thêm springdoc-openapi-ui để dễ dàng gọi các request. Screen Shot 2021-06-20 at 8.40.34 PM.png

  • POST request Screen Shot 2021-06-20 at 8.42.20 PM.png
  • GET request Screen Shot 2021-06-20 at 8.42.41 PM.png
  • PUT request Screen Shot 2021-06-20 at 8.43.45 PM.png Screen Shot 2021-06-20 at 8.44.01 PM.png
  • DELETE request Screen Shot 2021-06-20 at 8.43.00 PM.png Screen Shot 2021-06-20 at 8.46.48 PM.png

References


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí