Pengenalan kepada Spring Redis Data

1. Gambaran keseluruhan

Artikel ini adalah pengenalan kepada Spring Data Redis , yang memberikan abstraksi platform Spring Data kepada Redis - kedai struktur data dalam memori yang popular.

Redis didorong oleh struktur data berasaskan kedai kunci untuk mengekalkan data dan boleh digunakan sebagai pangkalan data, cache, broker mesej, dll.

Kami akan dapat menggunakan corak umum Spring Data (templat, dll.), Sambil juga mempunyai kesederhanaan tradisional dari semua projek Spring Data.

2. Pergantungan Maven

Mari mulakan dengan menyatakan pergantungan Spring Data Redis di pom.xml :

 org.springframework.data spring-data-redis 2.3.3.RELEASE   redis.clients jedis 3.3.0 jar 

Versi terbaru spring-data-redis dan jedis boleh dimuat turun dari Maven Central.

Sebagai alternatif, kita dapat menggunakan starter Spring Boot untuk Redis, yang akan menghilangkan keperluan untuk pergantungan data spring dan jedis yang terpisah :

 org.springframework.boot spring-boot-starter-data-redis 2.3.3.RELEASE 

Sekali lagi, pusat Maven menawarkan maklumat versi terkini.

3. Konfigurasi Redis

Untuk menentukan tetapan sambungan antara klien aplikasi dan contoh pelayan Redis, kita perlu menggunakan klien Redis.

Terdapat sebilangan implementasi klien Redis yang tersedia untuk Java. Dalam tutorial ini, kami akan menggunakan Jedis - pelaksanaan pelanggan Redis yang sederhana dan hebat .

Terdapat sokongan yang baik untuk konfigurasi XML dan Java dalam kerangka kerja; untuk tutorial ini, kami akan menggunakan konfigurasi berasaskan Java.

3.1. Konfigurasi Java

Mari kita mulakan dengan definisi kacang konfigurasi:

@Bean JedisConnectionFactory jedisConnectionFactory() { return new JedisConnectionFactory(); } @Bean public RedisTemplate redisTemplate() { RedisTemplate template = new RedisTemplate(); template.setConnectionFactory(jedisConnectionFactory()); return template; } 

Konfigurasi agak mudah. Pertama, menggunakan klien Jedis, kami menentukan sambunganFactory .

Kemudian, kami menentukan RedisTemplate menggunakan jedisConnectionFactory. Ini dapat digunakan untuk meminta data dengan repositori khusus.

3.2. Sifat Sambungan Tersuai

Anda mungkin telah menyedari bahawa sifat yang berkaitan dengan sambungan biasa hilang dalam konfigurasi di atas. Contohnya, alamat dan port pelayan hilang dalam konfigurasi. Sebabnya mudah: sebagai contoh, kami menggunakan lalai.

Namun, jika kita perlu mengkonfigurasi perincian sambungan, kita selalu dapat mengubah konfigurasi jedisConnectionFactory seperti berikut:

@Bean JedisConnectionFactory jedisConnectionFactory() { JedisConnectionFactory jedisConFactory = new JedisConnectionFactory(); jedisConFactory.setHostName("localhost"); jedisConFactory.setPort(6379); return jedisConFactory; }

4. Redis Repositori

Mari gunakan entiti Pelajar untuk contoh kami:

@RedisHash("Student") public class Student implements Serializable { public enum Gender { MALE, FEMALE } private String id; private String name; private Gender gender; private int grade; // ... }

4.1. Repositori Spring Data

Sekarang mari kita buat StudentRepository seperti berikut:

@Repository public interface StudentRepository extends CrudRepository {}

5. Akses Data Menggunakan StudentRepository

Dengan memperluas CrudRepository di StudentRepository , kita secara automatik mendapat satu set kaedah ketekunan lengkap yang menjalankan fungsi CRUD.

5.1. Menyimpan Objek Pelajar Baru

Mari simpan objek pelajar baru di stor data:

Student student = new Student( "Eng2015001", "John Doe", Student.Gender.MALE, 1); studentRepository.save(student);

5.2. Mengambil Objek Pelajar Yang Ada

Kami dapat mengesahkan kemasukan pelajar yang betul di bahagian sebelumnya dengan mengambil data pelajar:

Student retrievedStudent = studentRepository.findById("Eng2015001").get();

5.3. Mengemas kini Objek Pelajar Yang Ada

Mari tukar nama pelajar yang diambil di atas dan simpan sekali lagi:

retrievedStudent.setName("Richard Watson"); studentRepository.save(student);

Akhirnya, kami dapat mengambil kembali data pelajar dan mengesahkan bahawa nama itu dikemas kini di datastore.

5.4. Memadamkan Data Pelajar Sedia Ada

Kami boleh memadamkan data pelajar yang dimasukkan di atas:

studentRepository.deleteById(student.getId());

Sekarang kita dapat mencari objek pelajar dan mengesahkan bahawa hasilnya adalah nol .

5.5. Cari Semua Data Pelajar

Kami boleh memasukkan beberapa objek pelajar:

Student engStudent = new Student( "Eng2015001", "John Doe", Student.Gender.MALE, 1); Student medStudent = new Student( "Med2015001", "Gareth Houston", Student.Gender.MALE, 2); studentRepository.save(engStudent); studentRepository.save(medStudent);

Kita juga boleh mencapainya dengan memasukkan koleksi. Untuk itu, ada kaedah yang berbeza - saveAll () - yang menerima satu objek Iterable yang mengandungi banyak objek pelajar yang ingin kita teruskan.

Untuk mencari semua pelajar yang disisipkan, kita boleh menggunakan kaedah findAll () :

List students = new ArrayList(); studentRepository.findAll().forEach(students::add);

Kemudian kita dapat dengan cepat memeriksa ukuran senarai pelajar atau mengesahkan butiran yang lebih besar dengan memeriksa sifat setiap objek.

6. Kesimpulannya

Dalam tutorial ini, kami membaca asas-asas Spring Data Redis. Kod sumber contoh di atas boleh didapati dalam projek GitHub.