NetCache เป็นไลบรารีที่จัดเก็บแคชการฉีดพึ่งพาได้ง่ายและพึ่งพาได้
NetCache ได้รับการออกแบบให้เป็นไลบรารีที่เรียบง่ายและรวดเร็วซึ่งให้บริการโซลูชัน Silver-Bullet เกือบจะพร้อมกับการแคชและการคงอยู่สำหรับแอปพลิเคชัน. NET ฉันได้ออกแบบห้องสมุดให้ใช้งานได้สำหรับแอปพลิเคชัน. NET ที่ทันสมัยทั้งหมด
รันต่อไปนี้ในคอนโซลแพ็คเกจ Manager ของคุณหรือติดตั้งผ่าน Nuget Package Manager บน Visual Studio หรือ Rider;
PM > Install-Package NetCacheหากคุณต้องการใช้ NetCache ด้วยการฉีดพึ่งพาคุณควรติดตั้งแพ็คเกจต่อไปนี้
PM > Install-Package NetCache.DependencyInjectionคุณสามารถเริ่มใช้แพ็คเกจโดยการฉีดเข้าไปในคอลเลกชันบริการของคุณหรือสร้างอินสแตนซ์ใหม่ของคลาส NetCacher
var cacher = new NetCacher ( new NetCacherOptions ( ) ) ; // Create a new cacher with default optionsหรือด้วยการฉีดพึ่งพา
services . AddNetCacher ( opts =>
{
.. .
} ) ;ประการแรกนี่คือคลาสจำลองของเราที่เราจะใช้ในตัวอย่างต่อไปนี้:
public class Mock
{
public string FirstName { get ; set ; }
public string LastName { get ; set ; }
public Mock ( string firstName , string lastName )
{
FirstName = firstName ;
LastName = lastName ;
}
} ตอนนี้เราสามารถเริ่มต้นได้เพื่อตั้งค่าระเบียนใหม่ในแคชคุณสามารถเรียกใช้เมธอด SetObject<TObj> ตามที่แสดง
var myObj = new Mock ( "Foo" , "Bar" ) ;
cacher . SetObject < Mock > ( "myKey" , myObj , TimeSpan . FromMinutes ( 1 ) ) ;
// Object has been cached under the key 'myKey' for 1 minute before it expires และสำหรับการได้รับการบันทึกเดียวกันนั้นเราสามารถใช้วิธี GetRecord<TObj> ดังที่แสดงด้านล่าง
var myObj = cacher . GetObject < Mock > ( "myKey" ) ;
if ( myObj is null )
{
// No object was found in the cache, it could've expired or never existed
Console . WriteLine ( "No object found!" ) ;
return ;
}
Console . WriteLine ( myObj . FirstName ) ; // Fooบางที serializer เริ่มต้นไม่ได้ตัดให้คุณและคุณต้องการ serializer ที่กำหนดเองของคุณเองซึ่งให้โซลูชันที่ปรับแต่งโดยเฉพาะ ไม่มีปัญหาให้ค้นหาด้านล่างการใช้งาน Serializer ที่กำหนดเองอย่างง่าย ๆ
public class CustomSerializer : ISerializer
{
public ReadOnlySpan < char > Serialize < TObj > ( TObj obj )
{
// ...
}
public TObj ? Deserialize < TObj > ( ReadOnlySpan < char > rawData )
{
// ...
}
}ได้รับว่าอันนี้ไม่ได้ทำอะไรเลย แต่มันสามารถให้พื้นที่เพียงพอที่จะสร้างความต้องการของคุณเองในระบบการจัดลำดับ คุณสามารถเพิ่มประสิทธิภาพการทำงานของห้องสมุด (ในกรณีนั้นเปิดคำขอดึง!)
ได้รับใบอนุญาตภายใต้ใบอนุญาต MIT และปัจจุบันใช้ประโยชน์จากแพ็คเกจโอเพนซอร์สเหล่านี้: