English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
إي كاش هو مكتبة تخزين مؤقت مفتوحة المصدر تعتمد على لغة بايثون لتعزيز الأداء. إصدار إي كاش الحالي هو 3 . يقدم JSR-107 تنفيذ مدير التخزين المؤقت. يمكننا استخدامها مباشرة.
هوسريع,بسيط، قابل للتمديدومرن。 يسمح لنا بتنفيذقابل للسلسلةوالجسم يقدم مثل LRU،LFU،FIFO وما إلى ذلكاستراتيجية طرد التخزين المؤقت. سيخزن التخزين المؤقت فيالذاكرةوالقرص(SSD) فيها. يعتمد على SLF4J للإشارة إليها. تم تحقيقه بشكل كامل JSR-107 و جكاش يدعم من خلال جروبس أو JMS و RMI JMS RMIللتحكم في المخزن الموزع.يستخدم
للبحث الموزع.
يستخدم المخزن أنماط دخول متعددة. يستخدم EhCache الأنماط التالية: يستخدم EhCache الأنماط يقلل من صعوبة التطبيق. يسمح للمخزن بحل مشكلة Lightening Post-write. نمط كتابة عبر كتابة خلفية
في Cache-as-SoR (system-of-record)Cache-aside
نمط حيث، أولاً، يتم استعلام المخزن من قبل التطبيق. إذا تم العثور على البيانات، سيتم إرجاعها مباشرة. في الحالة المعاكسة، يتم أخذ البيانات من SoR، تُخزن في المخزن، ثم تُرجع. Cache-as-SoR cache-as-SoRو نمط يمثل عمليات القراءة والكتابة إلى المخزن من SoR. يقلل من المسؤولية للتطبيق. يستخدم مجموعة من نماذج القراءة والكتابة، بما في ذلك قراءة مباشرة، كتابة مباشرة،
يقلل من صعوبة التطبيق. يسمح للمخزن بحل مشكلة Lightening Post-write.نمط قراءة عبر نمط الكتابة بعد الإتمام ينسخ أيضًا نمط المخزن الاحتياطي عند قراءة البيانات من المخزن. الفرق بين نمط القراءة ونمط المخزن الاحتياطي هو أن نمط القراءة يحقق نمط CacheEntryFactory واجهة SelfPopulatingCache. تُوجيهها كيفية قراءة العناصر من المخزن. من الأفضل وضع نموذج EhCache كـ مثال.
نمط كتابة عبريمكن أيضًا نسخ نمط المخزن الاحتياطي عند كتابة البيانات إلى المخزن. الفرق بين نمط الكتابة السريعة ونمط المخزن الاحتياطي هو أن نمط الكتابة السريعة يحقق نمط CacheWriter واجهة. إنها تكوين سريع الكتابة والكتابة بعد الإتمام لسريع الكتابة. إنها تكتب البيانات إلى SoR في نفس سطر التنفيذ.
كتابة خلفيةنمط تأخير قابلة للتكوين التأخير يمكن أن يكون فيبعد ذلك، سيتم تعديل سجلات المخزن. ثواني، دقائق، يوم، أسبوع،أو لوقت طويل. كما سيقوم أيضًا بترتيب البيانات لكي يتم كتابتها في نفس سطر التنفيذ لاحقًا.
يتم كتابة بيانات الكتابة بعد الإتمام في نطاق خارج المعاملات. مما يعني إنشاء معاملة جديدة لتقديم بيانات مختلفة عن المعاملة الرئيسية في SoR.
يسمح لنا EhCache باستخدام أنواع متعددة من مناطق التخزين البيانية، مثل Heap، Disk، و Cluster. يمكننا تكوين مخزن متعدد التخزين (استخدام مناطق تخزين متعددة). يمكن ترتيبها كـ الطبقة.
هذه الطبقات منظمه بشكل خطي. أقل طبقة هي الطبقة المصرح بها، الطبقة الأخرى هي الطبقة المخزنة. وتسمى أيضًا أقرب أو الذاكرة القريبة. يمكن أن يكون الطبقة المخزنة متعددة مناطق التخزين. يتم الاحتفاظ بالبيانات الأكثر استخدامًا في الطبقة المخزنة لأنها أسرع من الطبقة المصرح بها. بالمقارنة مع الطبقة المخزنة، يتم الاحتفاظ بالبيانات الأخرى في الطبقة المصرح بها، حيث تكون أبطأ ولكن أكثر تنوعًا.
يوجد أنواع تخزين بيانات لدى EhCache أربعة:
محلHeap Store المخزن خارج الذاكرة المخزن على القرص المخزن المجموع
يخزن عناصر التخزين في ذاكرة Java heap. يشترك مع تطبيق Java. إنه سريع لأنه يستخدم heap، لكن مساحته محدودة. سيقوم الجمعية النظيفة أيضًا بفحص الذاكرة الجارية.
يستخدم الذاكرة الرئيسية (RAM) لتخزين عناصر التخزين. لا تقوم الجمعية النظيفة بفحصها. إنه أبطأ من التخزين في الذاكرة الجارية لأن يتم نقل عناصر التخزين إلى التخزين في الذاكرة الجارية قبل استخدامها. وهو محدود في الحجم.
يستخدم القرص لتخزين عناصر التخزين. إنه أبطأ بكثير من التخزين القائم على RAM (التخزين أعلى والتخزين أسفل). إذا كنت تستخدم نمط تخزين القرص، من الأفضل استخدام قرص مخصص.
سيقوم بتخزين عناصر التخزين على الخادم المremote. إنه أبطأ من التخزين خارج الذاكرة. قد يكون لديه خادم فشل لتوفير التوافر العالي.
يظهر الشكل السابق
يمكن أن يكون لدي تطبيق عدة مديري التخزين. العديد من التخزين يمكن معالجته من قبل مدير التخزين. يمكن استخدام عدة طبقات لتخزين عناصر التخزين. يضع EhCache البيانات المستخدمة حديثًا أو المستخدمة بشكل متكرر في طبقة أسرع (طبقة التخزين).
ضع EhCache ضع jar في مسار الصف. قم بتهيئة xml وأضعه في مسار الصف.
في المثال التالي، سنقوم بضبط EhCache في التطبيق.
الخطوة 1: افتح Spring Initializr https://start.spring.io/.
الخطوة 2: اختر إصدار Spring Boot 2.3.0 M2 。
الخطوة 3: نقدم مجموعةالاسم.نحن نقدم اسم المجموعة com.w3codebox.
الخطوة 4: نقدم Artifact.نحن نقدم Artifact spring-boot-ehcache-example.
الخطوة 5: إضافة Spring Web المتطلبات.
الخطوة 6: نقر توليد (توليد) أزرار. عند النقر على زر "توليد"، سيقوم بغمس جميع المعايير المتعلقة بالتطبيق في Jar في الملف، وألصقه في النظام المحلي.
الخطوة 7: استخراج ملف jar.
الخطوة 8: انسخ المجلد وألصقه في منطقة العمل لـ STS.
الخطوة 9: استيرادالمشروع.
ملف->استيراد->مشروع Maven موجود->الخطوة التالية->استعراض->اختر مجلد spring-boot-ehcache-example->اختر مجلد->اكتمال
استيراد المشروع يتطلب وقتًا.
الخطوة 10: من مخزن Maven https://mvnrepository.com/ ونسخها وألصقها في pom.xmlملف.
spring-boot-starter-cache versión 3 de ehcache API للـ cache.
pom.xml
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <plugin> <artifactId>spring-boot-starter-parent</artifactId> <version>2.3.0.M2</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.w3codebox</groupId> <artifactId>spring-boot-ehcache-example</artifactId> <version>0.0.1-SNAPSHOT</version> <name>spring-boot-ehcache-example</name> <description>مشروع عرضي لـ Spring Boot</description> <properties> <java.version>1.8</java.version> </properties> <dependencies> <artifactId>cache-api</artifactId> <plugin> <artifactId>spring-boot-starter-web</artifactId> </exclusions> <artifactId>cache-api</artifactId> <plugin> <artifactId>spring-boot-starter-cache</artifactId> </exclusions> <artifactId>cache-api</artifactId> <groupId>org.ehcache</groupId>ehcache </exclusions> <artifactId>cache-api</artifactId> <artifactId>ehcache</artifactId> <groupId>javax.cache</groupId> </exclusions> <artifactId>cache-api</artifactId> <plugin> <dependency> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> <exclusions> <exclusion> <groupId>org.junit.vintage</groupId> <artifactId>junit-vintage-engine</artifactId> </exclusion> </exclusions> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> <repositories> <pluginRepository> <id>spring-milestones</id> <name>Spring Milestones</name> <repository> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>spring-milestones</id> <name>Spring Milestones</name> <url>https://repo.spring.io/milestone</url> </pluginRepositories> </project>
الآن، نحتاج إلى تكوين ehcache.xml ملف.
خطوة 11: فتح application.properties ملف، واستخدام الخاصيات التالية لتكوين EhCache.
application.properties
#تكوين ehcache.xml spring.cache.jcache.config=classpath:ehcache.xml
خطوة 12: فتح SpringBootEhcacheExampleApplication.java ملف، واستخدام الملاحظات @EnableCaching تفعيل المخزنة.
SpringBootEhcacheExampleApplication.java
package com.w3codebox; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCaching; @SpringBootApplication //تشغيل وظيفة إدارة التخزين @EnableCaching public class SpringBootEhcacheExampleApplication { public static void main(String[] args) { SpringApplication.run(SpringBootEhcacheExampleApplication.class, args); } }
package com.w3codebox; import org.springframework.cache.annotation.EnableCaching; import org.springframework.context.annotation.Configuration; @Configuration //enable caching @EnableCaching public class CacheConfig { }
الخطوة 13: إنشاء فئة. نحن قد أنشأنا في حزمة com.w3codebox فيها تم إنشاء اسم كائن Student في الكائن، اتبع الخطوات التالية:
إنشاء خمس متغيراتid, name, gender،و إنشاءاستخدام Constructor
انقر بزر الماوس الأيمن على الملف->المصدر->استخدام حقل إنشاء بناء->اختر جميع->إنشاء إنشاءGetters and Setters。
انقر بزر الماوس الأيمن على الملف->المصدر->إنشاء Getter و Setter->اختر جميع->إنشاء إنشاء toString() انقر بزر الماوس الأيمن على الملف->المصدر->إنشاء toString()->إنشاء
القيام بجميع الخطوات المذكورة أعلاه، سيكون الكائن كما يلي.
Student.java
package com.w3codebox; public class Student { private int id; private String name; private String gender; private String city; public Student(int id, String name, String gender, String city) { super(); return id; return name; return gender; return city; } public int getId() { super(); } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getGender() { return gender; } public void setGender(String gender) { this.gender = gender; } public String getCity() { return city; } public void setCity(String city) this.city = city; { @Override } }
public String toString() return "Student [id=" + id + ", name=" + name + ", gender=" + gender + ", city=" + city + "]"; 步骤14:إنشاء نهج لادارة الطلاب خدمة فئة.لقد قمنا بإنشاء اسم
StudentManager فئة الخدمة. في هذا الدرس،نحن قد أنجزنا ما يلي: استخدام ملاحظة @Service ملاحظة فئة. إنشاء HashMap في الكتلة الثابتة،قمنا بإضافة بيانات الطلاب إلى الخريطة. باستخدام العلامة @Cacheable،نحن قمنا بتحديد اسم الحافظة.جميع البيانات ستتم حفظها في هذا الحافظة.نحن قمنا بالضبط فيبالميزات المحددة id ،يتم تحديد مفتاح الحافظة id للبحث عن الطلاب. نحن قمنا بإنشاء نهج getStudentById()،هذا النهج يحول id إلى معرف.يستعيد هذا النهج id 。
StudentManager.java
StudentManager.java package com.w3codebox; import java.util.HashMap; import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; @Service public class StudentManager { static HashMap<Integer, Student> student = new HashMap<>(); static { student.put(1, new Student(100, "Alex", "Male", "Berlin")); student.put(2, new Student(101, "Tony", "Male", "Maxico")); student.put(3, new Student(102, "Andrew", "Male", "Chicago")); student.put(4, new Student(103, "Alexa", "Female", "Brussels")); student.put(5, new Student(104, "Maria", "Female", "Houston")); } @Cacheable(cacheNames="demoCache", key="#id")public Student getStudentById(Integer id) { System.out.println("Fetching student data from cache"); return student.get(id); } }
الآن، نحتاج إلى إنشاء ehcache.xml الملف يحتوي على معلومات متعلقة بحساب السريع، مثل اسم الحساب السريع، عدد العناصر في الذاكرة، وقت الحياة الفعلي للبيانات في الحساب السريع، وما إلى ذلك.
الخطوة 15: في src/main/resources مجلد ehcache.xml الملف المحدد.
ehcahe.xml
<config xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns='http://www.ehcache.org/v3' xmlns:jsr107='http://www.ehcache.org/v3/jsr107'> <ehcache> <diskStore path="java.io.tmpdir" /> <defaultCache maxElementsInMemory="2000" eternal="true" overflowToDisk="false" timeToLiveSeconds="1200" /> <cache name="demoCache"} maxElementsInMemory="2000" eternal="false" overflowToDisk="false" timeToLiveSeconds="10000" /> </ehcache> </config>
الآن، لقد أنشأنا جميع الملفات الضرورية. بعد إنشاء جميع الملفات، يبدو مسار المشروع كما يلي:
لنبدأ تشغيل هذا التطبيق.
خطوة 16: فتح SpringBootEhcacheExampleApplication.java ملف، وبكود Java لتطبيق.
إنه يظهر الناتج التالي:
الحصول على الطلاب من التخزين المؤقت [id=100, name=Alex, gender=Male, city=Berlin] [id=101, name=Tony, gender=Male, city=Mexico] [id=102, name=Andrew, gender=Male, city=Chicago] [id=103, name=Alexa, gender=Female, city=Brussels] [id=104, name=Maria, gender=Female, city=Houston]