{"repo":"thetinygoat/segment","free":true,"listed":false,"github":"https://github.com/thetinygoat/segment","clone":"git clone https://github.com/thetinygoat/segment.git","description":"A fast and simple in-memory key-value database 🦀","language":"Rust","stars":61,"topics":["in-memory-database","rust","database","key-value"],"license":"MIT","category":"databases-storage","readme_excerpt":"Segment Segment is a simple and fast in-memory key-value database written in Rust. Features - Simple to use and understand. - Keys can be separated into multiple dynamic keyspaces. - Keyspace level configuration. Why Segment? Segment's goal to is to provide a simpler and more intuitive in-memory key-value solution. It has certain features that other solutions don't. Let's go over them one by one. Keyspaces Segment has a concept of keyspaces. You can think of keyspaces like tables in a relational database, except that keyspaces don't have any schema. When the segment server starts there are no keyspaces and you can create as many as you like. Evictors Separating keys into keyspaces comes with a benefit, we can now have keyspace level configurations. Evictors are one such configuration. There are two types of evicros in Segment, expiring evictors and max memory evictors . Expiring Evictors The expiring evictor is responsible for evicting expired keys which runs for every keyspaces. Max Memory Evictors The second type of evictor is max memory evictor, which is responsible for evicting keys when the server reaches the max memory specified in segment.conf . Currently there are 3 max memory evictors: - Nop - Stands for no-operation which doesn't evict any keys. - Random - Evicts keys in a random order. - LRU - Evicts keys in a LRU fashion. There are plans to include even more evictors out of the box in future. Max memory evitors can configured at a keyspace level, which means that ","default_branch":null,"files":null,"tree":[],"storefront":"/r/thetinygoat","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/thetinygoat/segment/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."}