מבוא ל- Spring Data Redis

1. סקירה כללית

מאמר זה הוא מבוא ל- Spring Data Redis, המספקת את ההפשטות של פלטפורמת Spring Data לרדיס - חנות מבנה הנתונים הפופולרית בזיכרון.

רדיס מונעת על ידי מבנה נתונים מבוסס חנות מפתחות כדי להתמיד בנתונים ויכולה לשמש כמאגר נתונים, מטמון, מתווך הודעות וכו '.

נוכל להשתמש בתבניות הנפוצות של נתוני Spring (תבניות וכו '), תוך פשטות מסורתית של כל פרויקטים של Spring Data.

2. תלות Maven

נתחיל בהכרזה על תלות Spring Data Redis ב pom.xml:

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

הגרסאות האחרונות של spring-data-redis ו ג'דיס ניתן להוריד מ Maven Central.

לחלופין, אנו יכולים להשתמש במתחיל Spring Boot עבור Redis, מה שיבטל את הצורך בנפרד קפיצי נתונים ו ג'דיס תלות:

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

שוב, חברת Maven Central מציעה את המידע על הגרסא העדכנית ביותר.

3. תצורת Redis

כדי להגדיר את הגדרות החיבור בין לקוח היישום למופע שרת Redis, עלינו להשתמש בלקוח Redis.

ישנם מספר יישומי לקוח של Redis הזמינים עבור Java. במדריך זה, נשתמש ב- Jedis - יישום לקוח פשוט וחזק של Redis.

יש תמיכה טובה הן בתצורת XML והן ב- Java במסגרת; לצורך הדרכה זו, נשתמש בתצורה מבוססת Java.

3.1. תצורת Java

נתחיל בהגדרות שעועית התצורה:

@Bean JedisConnectionFactory jedisConnectionFactory () {להחזיר JedisConnectionFactory חדש (); } @ שעועית ציבורית RedisTemplate redisTemplate () {תבנית RedisTemplate = RedisTemplate חדשה (); template.setConnectionFactory (jedisConnectionFactory ()); תבנית החזרה; } 

התצורה פשוטה למדי. ראשית, באמצעות לקוח Jedis, אנו מגדירים א חיבור מפעל.

לאחר מכן, הגדרנו א RedisTemplate משתמש ב jedisConnectionFactory. זה יכול לשמש לשאילתת נתונים עם מאגר מותאם אישית.

3.2. מאפייני חיבור מותאמים אישית

אולי כבר שמת לב שהמאפיינים הרגילים הקשורים לחיבור חסרים בתצורה שלמעלה. לדוגמה, כתובת השרת והיציאה חסרים בתצורה. הסיבה פשוטה: לדוגמא שלנו אנו משתמשים בברירות המחדל.

עם זאת, אם עלינו להגדיר את פרטי החיבור, תמיד נוכל לשנות את ה- jedisConnectionFactory התצורה כדלקמן:

@Bean JedisConnectionFactory jedisConnectionFactory () {JedisConnectionFactory jedisConFactory = JedisConnectionFactory חדש (); jedisConFactory.setHostName ("localhost"); jedisConFactory.setPort (6379); להחזיר jedisConFactory; }

4. מאגר רדיס

בואו נשתמש ב- סטוּדֶנט ישות לדוגמאות שלנו:

@RedisHash ("סטודנט") כיתה ציבורית סטודנטים מיישמים את {public enum Gender {MALE, FEMALE} מזהה מחרוזת פרטי; שם מחרוזת פרטי; מגדר פרטי מגדרי; כיתה פרטית; // ...}

4.1. מאגר הנתונים באביב

בואו ניצור כעת את מאגר סטודנטים כדלהלן:

ממשק ציבורי @ מאגר StudentRepository מרחיב את CrudRepository {}

5. גישה לנתונים באמצעות מאגר סטודנטים

על ידי הרחבה מאגר Crud ב מאגר סטודנטים, אנו מקבלים באופן אוטומטי סט שלם של שיטות התמדה המבצעות פונקציונליות CRUD.

5.1. שמירת אובייקט סטודנט חדש

בואו נשמור אובייקט סטודנטים חדש בחנות הנתונים:

סטודנט סטודנט = סטודנט חדש ("Eng2015001", "John Doe", Student.Gender.MALE, 1); studentRepository.save (סטודנט);

5.2. אחזור אובייקט סטודנטים קיים

אנו יכולים לאמת את ההכנסה הנכונה של התלמיד בסעיף הקודם על ידי הבאת נתוני התלמיד:

סטודנט retrievedStudent = studentRepository.findById ("Eng2015001"). Get ();

5.3. עדכון אובייקט סטודנטים קיים

בואו לשנות את שם התלמיד שאוחזר למעלה ולשמור אותו שוב:

retrievedStudent.setName ("ריצ'רד ווטסון"); studentRepository.save (סטודנט);

לבסוף, אנו יכולים לאחזר את נתוני התלמיד שוב ולוודא שהשם מעודכן במאגר הנתונים.

5.4. מחיקת נתוני סטודנטים קיימים

אנו יכולים למחוק את נתוני התלמידים שהוכנסו לעיל:

studentRepository.deleteById (student.getId ());

כעת נוכל לחפש את אובייקט התלמיד ולוודא שהתוצאה היא ריק.

5.5. מצא את כל נתוני הסטודנטים

אנו יכולים להוסיף כמה אובייקטים של סטודנטים:

סטודנט engStudent = סטודנט חדש ("Eng2015001", "John Doe", Student.Gender.MALE, 1); סטודנט medStudent = סטודנט חדש ("Med2015001", "גארת יוסטון", Student.Gender.MALE, 2); studentRepository.save (engStudent); studentRepository.save (medStudent);

אנו יכולים להשיג זאת גם על ידי הכנסת אוסף. לשם כך, יש שיטה אחרת - שמור הכל() - שמקבל סינגל ניתן לנידון אובייקט המכיל אובייקטים סטודנטים מרובים שאנו רוצים להתמיד בהם.

כדי למצוא את כל התלמידים שהוכנסו, נוכל להשתמש ב- מצא הכל() שיטה:

רשימת תלמידים = ArrayList חדש (); studentRepository.findAll (). forEach (סטודנטים :: הוסף);

אז נוכל לבדוק במהירות את גודל ה- סטודנטים רשום או אמת ליתר פירוט על ידי בדיקת המאפיינים של כל אובייקט.

6. מסקנה

במדריך זה עברנו את היסודות של Spring Data Redis. קוד המקור של הדוגמאות לעיל נמצא בפרויקט GitHub.