{"id":15690698,"url":"https://github.com/ahoo-wang/cocache","last_synced_at":"2025-05-07T13:06:41.278Z","repository":{"id":62038492,"uuid":"461189010","full_name":"Ahoo-Wang/CoCache","owner":"Ahoo-Wang","description":"Level 2 Distributed Coherence Cache Framework","archived":false,"fork":false,"pushed_at":"2025-05-04T23:30:49.000Z","size":1307,"stargazers_count":11,"open_issues_count":2,"forks_count":4,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-05-07T13:06:19.253Z","etag":null,"topics":["cache","coherence","distributed-cache","java","kotlin","l2-cache","microservice","redis","spring-boot"],"latest_commit_sha":null,"homepage":"https://deepwiki.com/Ahoo-Wang/CoCache/","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Ahoo-Wang.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2022-02-19T12:44:17.000Z","updated_at":"2025-05-04T23:30:52.000Z","dependencies_parsed_at":"2023-11-30T00:22:27.061Z","dependency_job_id":"602b6f4a-a945-41b7-bab4-b8e1917bdffd","html_url":"https://github.com/Ahoo-Wang/CoCache","commit_stats":{"total_commits":286,"total_committers":3,"mean_commits":95.33333333333333,"dds":0.3531468531468531,"last_synced_commit":"79bc9e048aa45fb3ac037407e8785e3609b12c4c"},"previous_names":[],"tags_count":72,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ahoo-Wang%2FCoCache","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ahoo-Wang%2FCoCache/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ahoo-Wang%2FCoCache/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ahoo-Wang%2FCoCache/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Ahoo-Wang","download_url":"https://codeload.github.com/Ahoo-Wang/CoCache/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252883204,"owners_count":21819160,"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":["cache","coherence","distributed-cache","java","kotlin","l2-cache","microservice","redis","spring-boot"],"created_at":"2024-10-03T18:14:11.332Z","updated_at":"2025-05-07T13:06:41.272Z","avatar_url":"https://github.com/Ahoo-Wang.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# CoCache\nLevel 2 Distributed Coherence Cache Framework\n\n[![License](https://img.shields.io/badge/license-Apache%202-4EB1BA.svg)](https://www.apache.org/licenses/LICENSE-2.0.html)\n[![GitHub release](https://img.shields.io/github/release/Ahoo-Wang/CoCache.svg)](https://github.com/Ahoo-Wang/CoCache/releases)\n[![Maven Central](https://maven-badges.herokuapp.com/maven-central/me.ahoo.cocache/cocache-core/badge.svg)](https://maven-badges.herokuapp.com/maven-central/me.ahoo.cocache/cocache-core)\n[![Codacy Badge](https://app.codacy.com/project/badge/Grade/a2f3fd9b1e564fa3a3b558d1dfaf2a34)](https://www.codacy.com/gh/Ahoo-Wang/CoCache/dashboard?utm_source=github.com\u0026amp;utm_medium=referral\u0026amp;utm_content=Ahoo-Wang/CoCache\u0026amp;utm_campaign=Badge_Grade)\n[![codecov](https://codecov.io/gh/Ahoo-Wang/CoCache/branch/main/graph/badge.svg?token=NlFI44RCS4)](https://codecov.io/gh/Ahoo-Wang/CoCache)\n![Integration Test Status](https://github.com/Ahoo-Wang/CoCache/actions/workflows/integration-test.yml/badge.svg)\n\n## Architecture\n\n\u003cp align=\"center\" style=\"text-align:center\"\u003e\n  \u003cimg src=\"document/Architecture.png\" alt=\"Architecture\"/\u003e\n\u003c/p\u003e\n\n## Installation\n\n\u003e Use *Gradle(Kotlin)* to install dependencies\n\n```kotlin\nimplementation(\"me.ahoo.cocache:cocache-spring-boot-starter\")\n```\n\n\u003e Use *Gradle(Groovy)* to install dependencies\n\n```groovy\nimplementation 'me.ahoo.cocache:cocache-spring-boot-starter'\n```\n\n\u003e Use *Maven* to install dependencies\n\n```xml\n\u003cdependency\u003e\n    \u003cgroupId\u003eme.ahoo.cocache\u003c/groupId\u003e\n    \u003cartifactId\u003ecocache-spring-boot-starter\u003c/artifactId\u003e\n    \u003cversion\u003e${cocache.version}\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\n## Usage\n\n```mermaid\nclassDiagram\ndirection BT\nclass Cache~K, V~ {\n\u003c\u003cInterface\u003e\u003e\n  + set(K, Long, V) Unit\n  + getCache(K) CacheValue~V~?\n  + set(K, Long, V) Unit\n  + set(K, V) Unit\n  + get(K) V?\n  + set(K, V) Unit\n  + get(K) V?\n  + getTtlAt(K) Long?\n  + setCache(K, CacheValue~V~) Unit\n  + getTtlAt(K) Long?\n  + evict(K) Unit\n}\nclass CacheGetter~K, V~ {\n\u003c\u003cInterface\u003e\u003e\n  + get(K) V?\n}\nclass CacheSource~K, V~ {\n\u003c\u003cInterface\u003e\u003e\n  + load(K) CacheValue~V~?\n  + noOp() CacheSource~K, V~\n}\nclass UserCache {\n  + set(String, UserData) Unit\n  + setCache(String, CacheValue~UserData~) Unit\n  + getCache(String) CacheValue~UserData~?\n  + evict(String) Unit\n  + get(String) UserData?\n  + getTtlAt(String) Long?\n  + set(String, Long, UserData) Unit\n}\nclass UserCacheSource {\n  + load(String) CacheValue~UserData~?\n}\n\nCache~K, V~  --\u003e  CacheGetter~K, V~ \nUserCache  ..\u003e  Cache~K, V~ \nUserCacheSource  ..\u003e  CacheSource~K, V~ \n```\n\n```kotlin\n\n/**\n * 定义缓存接口\n * 可选的配置\n */\n@CoCache(keyPrefix = \"user:\", ttl = 120)\n/**\n * 可选的配置\n */\n@GuavaCache(\n    maximumSize = 1000_000,\n    expireUnit = TimeUnit.SECONDS,\n    expireAfterAccess = 120\n)\ninterface UserCache : Cache\u003cString, User\u003e\n\n@EnableCoCache(caches = [UserCache::class])\n@SpringBootApplication\nclass AppServer\n\n/**\n * 可选的配置\n */\n@Configuration\nclass UserCacheConfiguration {\n    @Bean\n    fun customizeUserClientSideCache(): ClientSideCache\u003cUser\u003e {\n        return MapClientSideCache()\n    }\n\n    @Bean\n    fun customizeUserCacheSource(): CacheSource\u003cString, User\u003e {\n        return CacheSource.noOp()\n    }\n}\n```\n\n## CoCache `Get` Sequence Diagram\n\n\u003cp align=\"center\" style=\"text-align:center\"\u003e\n  \u003cimg src=\"document/CoCache-Get-Sequence-Diagram.svg\" alt=\"CoCache-Get-Sequence-Diagram\"/\u003e\n\u003c/p\u003e\n\n## JoinCache `Get` Sequence Diagram\n\n\u003cp align=\"center\" style=\"text-align:center\"\u003e\n  \u003cimg src=\"document/JoinCache.svg\" alt=\"JoinCache-Get-Sequence-Diagram\"/\u003e\n\u003c/p\u003e","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fahoo-wang%2Fcocache","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fahoo-wang%2Fcocache","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fahoo-wang%2Fcocache/lists"}