- Tạo ứng dụng Spring Boot bằng Spring Launchizr
- Cấu hình Cassandra trong Spring Boot
- Định cấu hình nhóm kết nối Tomcat trên Spring Boot
- Định tuyến tin nhắn Camel đến Artemis được nhúng bằng WildFly
**Tóm tắt:**Cách tích hợp và vận hành Redis thông qua springboot.
Bài viết này được chia sẻ từ Cộng đồng Huawei Cloud"Hướng dẫn thao tác Redis kết nối SpringBoot", tác giả: Khỉ nhỏ xám.
Hôm nay mình sẽ chia sẻ với các bạn cách tích hợp và vận hành Redis thông qua springboot.
Khi springboot kết nối với Redis, bạn cần nhập các phụ thuộc gói jar cần thiết vào tệp pom.
redis.clients jedis 2.9.0
Có nhiều cách để kết nối với redis trong môi trường springboot Cách đầu tiên và dễ nhất là kết nối trực tiếp thông qua lớp jedis.
Lớp jedis tương đương với đại diện client của redis.
Phương thức kết nối như sau:
/** * kiểm tra kết nối redis 01 */ @Test public void redisTest01() { // Kết nối với dịch vụ Redis cục bộ Jedis jedis = new Jedis("localhost"); // Nếu dịch vụ Redis đặt mật khẩu, bạn cần phải sử dụng dòng sau Mật khẩu nhập mã // jedis.auth("123456"); System.out.println("Kết nối thành công"); //Kiểm tra xem dịch vụ có đang chạy không System.out.println("Dịch vụ đang chạy: "+jedis.ping()); }
Kết quả sau khi chạy:
Khi kết nối theo cách này, springboot sẽ tự động tìm kiếm redis server cục bộ để kết nối. Nếu không tìm thấy sẽ báo lỗi.
Nếu bạn đọc mã nguồn cơ bản của Jedis, bạn sẽ thấy rằng lớp Jedis có nhiều phương thức xây dựng.
Một số cái thường được sử dụng là
// Nếu không có giá trị nào được chuyển thì hãy sử dụng địa chỉ 127.0.0.1 mặc định và cổng 6379 để truy cập Jedis()
// Chỉ chuyển địa chỉ đích, sau đó sử dụng địa chỉ đã chỉ định và số cổng mặc định để truy cập Jedis công khai (Máy chủ chuỗi)
// Nhập địa chỉ đích và số cổng, sau đó sử dụng địa chỉ và số cổng đã chỉ định để truy cập Jedis công cộng (Máy chủ chuỗi, cổng int)
Tất nhiên, trong springboot, nhiều tham số kết nối khác nhau có thể được đặt dưới dạng tệp cấu hình. Điều này cũng đúng với Redis.
Định cấu hình các mục sau trong tệp yml:
Lưu ý: Điều này không sử dụng nhóm kết nối. Nếu bạn sử dụng nhóm kết nối, bạn cần thêm cấu hình bên dưới. Bạn có thể tiếp tục đọc phần bên dưới về cách sử dụng nhóm kết nối.
##thông tin cấu hình redis spring: redis: cơ sở dữ liệu: 0 #redis chỉ mục cơ sở dữ liệu, mặc định là 0 máy chủ: 127.0.0.1 #redis địa chỉ máy chủ cổng: 6379 #redis mật khẩu cổng kết nối máy chủ: #redis mật khẩu kết nối máy chủ, mặc định là null thời gian chờ: 5000 #redis hết thời gian kết nối
Sau khi cấu hình thông qua file cấu hình, chúng ta có thể sử dụng một lớp công cụ trong springboot để vận hành Redis. Springboot sẽ tự động đọc thông tin cấu hình trong file cấu hình, sau đó sử dụng thông tin cấu hình để kết nối với máy chủ Redis cung cấp. các lớp để vận hành Redis, cụ thể là: StringRedisTemplate và RedisTemplate.
Sự khác biệt giữa StringRedisTemplate và RedisTemplate như sau
Những điểm tương đồng được phản ánh trong hoạt động của họ trên Redis.
Cả RedisTemplate và StringRedisSerializer đều xác định năm thao tác trên Redis, tương ứng với năm loại dữ liệu trong Redis.
redisTemplate.opsForValue(); //Chuỗi thao tác redisTemplate.opsForHash(); //Hàm băm thao tác redisTemplate.opsForList(); //Danh sách thao tác redisTemplate.opsForSet(); //Tập lệnh thao tác redisTemplate.opsForZSet(); bộ
Vậy chúng ta nên lựa chọn như thế nào giữa hai lớp này khi sử dụng chúng?
Nếu cơ sở dữ liệu redis của bạn ban đầu lưu trữ dữ liệu chuỗi hoặc dữ liệu bạn muốn truy cập là dữ liệu loại chuỗi thì bạn có thể sử dụng StringRedisTemplate.
》Nhưng nếu dữ liệu của bạn là loại đối tượng phức tạp và bạn không muốn thực hiện bất kỳ chuyển đổi dữ liệu nào khi lấy nó ra và bạn có thể lấy một đối tượng trực tiếp từ Redis, thì sử dụng RedisTemplate là lựa chọn tốt hơn.
Tiếp theo, tôi sẽ sử dụng StringRedisSerializer làm ví dụ để minh họa cách sử dụng StringRedisSerializer để vận hành Redis.
/** * kiểm tra kết nối chủ-nô lệ springboot, * sử dụng thao tác springRedisTemplate */ @Test public void redisTest06() { // Vận hành ký tự stringRedisTemplate.opsForValue().set("test06","Test06"); println(stringRedisTemplate.opsForValue().get("test06")); // Đặt thời gian hết hạn của khóa, 30 giây stringRedisTemplate.expire("test06", 30 * 1000, TimeUnit.MILLISECONDS); // Lấy thời gian hết hạn dựa trên khóa Long test06ExpireTime = stringRedisTemplate.getExpire("test06"); .out.println( "Lấy thời gian hết hạn dựa trên khóa:" + test06ExpireTime); Nhận thời gian hết hạn dựa trên khóa và chuyển đổi nó thành đơn vị được chỉ định Long test06ExpireTimeToUnit = stringRedisTemplate.getExpire("test06", TimeUnit.SECONDS); System.out.println("Lấy thời gian hết hạn dựa trên khóa và chuyển đổi nó thành đơn vị được chỉ định:" + test06ExpireTimeToUnit) ; // Kiểm tra xem khóa có tồn tại không và trả về kiểu Boolean Boolean test06IsExist = stringRedisTemplate.hasKey("test06"); System.out.println("Kiểm tra xem khóa có tồn tại không, trả về kiểu Boolean:" + test06IsExist);
Trong hoạt động trên, có một hoạt động về việc lấy và thiết lập thời gian hết hạn của khóa. Tôi đã thực hiện một số nghiên cứu về nó trong quá trình hoạt động và chia sẻ với bạn ở đây.
Nếu thời gian hết hạn không được đặt ban đầu, -1 sẽ được trả về và dữ liệu sẽ tồn tại cho đến khi đạt đến giới hạn tối đa của dữ liệu Redis.
Nếu đặt thời gian hết hạn nhưng dữ liệu chưa hết hạn thì thời gian còn lại sẽ được trả về. Nếu đến thời gian hết hạn, dữ liệu sẽ bị xóa.
Nếu dữ liệu bị xóa hoặc không tồn tại thì trả về -2.
Nhấp để theo dõi và tìm hiểu về các công nghệ mới của Huawei Cloud càng sớm càng tốt~
Tôi đang sử dụng Rails 2.3.5, Ruby 1.8.7 (2010-08-16 patchlevel 302) [i386-mingw32] Tôi đang sử dụng máy Windows, dự án không có tệp .gem,
Tôi là một lập trình viên xuất sắc, rất giỏi!