{"repo":"Jipok/go-persist","free":true,"listed":false,"github":"https://github.com/Jipok/go-persist","clone":"git clone https://github.com/Jipok/go-persist.git","description":"A simple, performant, type-safe way to persist Go structs and maps with generics and WAL-based durability. Like key-value in-memory database, but better.","language":"Go","stars":12,"topics":["database","golang","key-value","library","persistent","persistent-data-structure","storage","benchmark"],"license":"MIT","category":"databases-storage","readme_excerpt":"go-persist A high-performance, type-safe, persisted key-value store for Go that combines the speed of in-memory maps with the durability of persistent storage. 🤔 Why Another Key-Value Store? At first glance, creating yet another embedded key-value database in Go seems redundant. Indeed, popular solutions like Bolt, BuntDB, Badger, or Pebble already exist, each having niche strengths. However, existing solutions fall short for common Go application patterns : - Manual Serialization Overhead : Most existing databases represent values and keys as raw []byte or string . To deal with structured data (e.g., Go structs), you repetitively marshal/unmarshal data (typically via JSON), incurring CPU and GC overhead and complicating your code. - Performance vs Persistence Dilemma : High-performance concurrent solutions ( sync.Map or mutex-protected map ) lack persistence. Persistent databases trade convenience for speed and require complex caching logic to accelerate operations. - Complexity of Custom Caching Layers : - You often have two sources of truth (cache/in-memory and disk), making synchronization error-prone. - Application logic becomes polluted by persistence management. - State debugging and consistency across shutdowns/restarts requires significant effort. Go-persist aims to deliver the exact sweet spot: - 🚀 Performance: Near-native sync.Map performance for structured data. - 🛡 Safety: Native Go types with transparent persistence. - 🔋 Convenience: Simple, intuitive map-li","default_branch":null,"files":null,"tree":[],"storefront":"/r/Jipok","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/Jipok/go-persist/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}