{"id":19991708,"url":"https://github.com/cnblogs/EnyimMemcachedCore","last_synced_at":"2025-05-04T10:32:23.995Z","repository":{"id":16049507,"uuid":"18793511","full_name":"cnblogs/EnyimMemcachedCore","owner":"cnblogs","description":" .NET Memcached client. Available on https://www.nuget.org/packages/EnyimMemcachedCore","archived":false,"fork":true,"pushed_at":"2025-01-24T13:00:44.000Z","size":3458,"stargazers_count":166,"open_issues_count":33,"forks_count":46,"subscribers_count":7,"default_branch":"main","last_synced_at":"2025-04-22T17:17:47.926Z","etag":null,"topics":["csharp","donet","memcached"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"enyim/EnyimMemcached","license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cnblogs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-04-15T08:52:50.000Z","updated_at":"2025-02-08T01:57:59.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/cnblogs/EnyimMemcachedCore","commit_stats":null,"previous_names":[],"tags_count":78,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cnblogs%2FEnyimMemcachedCore","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cnblogs%2FEnyimMemcachedCore/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cnblogs%2FEnyimMemcachedCore/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cnblogs%2FEnyimMemcachedCore/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cnblogs","download_url":"https://codeload.github.com/cnblogs/EnyimMemcachedCore/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252320680,"owners_count":21729176,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["csharp","donet","memcached"],"created_at":"2024-11-13T04:51:52.546Z","updated_at":"2025-05-04T10:32:23.325Z","avatar_url":"https://github.com/cnblogs.png","language":"C#","funding_links":[],"categories":["C\\#"],"sub_categories":[],"readme":"# Enyim Memcached Client\n\nThis is a memcached client library for .NET migrated from [EnyimMemcached](https://github.com/enyim/EnyimMemcached).\n\n## Configure\n### The appsettings.json Without Authentication\n```json\n{\n  \"enyimMemcached\": {\n    \"Servers\": [\n      {\n        \"Address\": \"memcached\",\n        \"Port\": 11211\n      }\n    ],\n    \"Transcoder\": \"MessagePackTranscoder\"\n  }\n}\n```\n#### The appsettings.json With Authentication\n```json\n{\n  \"enyimMemcached\": {\n    \"Servers\": [\n      {\n        \"Address\": \"memcached\",\n        \"Port\": 11211\n      }\n    ],\n    \"Authentication\": {\n      \"Type\": \"Enyim.Caching.Memcached.PlainTextAuthenticator\",\n      \"Parameters\": {\n        \"zone\": \"\",\n        \"userName\": \"username\",\n        \"password\": \"password\"\n      }\n    }\n  }\n}\n```\n### Startup.cs\n```cs\npublic class Startup\n{\n    public void ConfigureServices(IServiceCollection services)\n    {\n        services.AddEnyimMemcached();\n        // services.AddEnyimMemcached(\"enyimMemcached\");\n        // services.AddEnyimMemcached(Configuration);\n        // services.AddEnyimMemcached(Configuration, \"enyimMemcached\");\n        // services.AddEnyimMemcached(Configuration.GetSection(\"enyimMemcached\"));\n        // services.AddEnyimMemcached(options =\u003e options.AddServer(\"memcached\", 11211));\n    }\n    \n    public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)\n    { \n        app.UseEnyimMemcached();\n    }\n}\n```\n\n## Example usage\n### Use IMemcachedClient interface\n```cs\npublic class HomeController : Controller\n{\n    private readonly IMemcachedClient _memcachedClient;\n    private readonly IBlogPostService _blogPostService;\n\n    public HomeController(IMemcachedClient memcachedClient, IBlogPostService blogPostService)\n    {\n        _memcachedClient = memcachedClient;\n        _blogPostService = blogPostService;\n    }\n\n    public async Task\u003cIActionResult\u003e Index()\n    {\n        var cacheKey = \"blogposts-recent\";\n        var cacheSeconds = 600;\n\n        var posts = await _memcachedClient.GetValueOrCreateAsync(\n            cacheKey,\n            cacheSeconds,\n            async () =\u003e await _blogPostService.GetRecent(10));\n\n        return Ok(posts);\n    }\n}\n```\n### Use IDistributedCache interface\n```cs\npublic class CreativeService\n{\n    private ICreativeRepository _creativeRepository;\n    private IDistributedCache _cache;\n\n    public CreativeService(\n        ICreativeRepository creativeRepository,\n        IDistributedCache cache)\n    {\n        _creativeRepository = creativeRepository;\n        _cache = cache;\n    }\n\n    public async Task\u003cIList\u003cCreativeDTO\u003e\u003e GetCreatives(string unitName)\n    {\n        var cacheKey = $\"creatives_{unitName}\";\n        IList\u003cCreativeDTO\u003e creatives = null;\n\n        var creativesJson = await _cache.GetStringAsync(cacheKey);\n        if (creativesJson == null)\n        {\n            creatives = await _creativeRepository.GetCreatives(unitName)\n                    .ProjectTo\u003cCreativeDTO\u003e().ToListAsync();\n\n            var json = string.Empty;\n            if (creatives != null \u0026\u0026 creatives.Count() \u003e 0)\n            {\n                json = JsonConvert.SerializeObject(creatives);\n            }\n            await _cache.SetStringAsync(\n                cacheKey, \n                json, \n                new DistributedCacheEntryOptions().SetSlidingExpiration(TimeSpan.FromMinutes(5)));\n        }\n        else\n        {\n            creatives = JsonConvert.DeserializeObject\u003cList\u003cCreativeDTO\u003e\u003e(creativesJson);\n        }\n\n        return creatives;\n    }\n}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcnblogs%2FEnyimMemcachedCore","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcnblogs%2FEnyimMemcachedCore","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcnblogs%2FEnyimMemcachedCore/lists"}