https://github.com/replikativ/konserve-rocksdb
A RocksDB backend for konserve
https://github.com/replikativ/konserve-rocksdb
clojure konserve rocksdb
Last synced: 3 months ago
JSON representation
A RocksDB backend for konserve
- Host: GitHub
- URL: https://github.com/replikativ/konserve-rocksdb
- Owner: replikativ
- License: epl-2.0
- Created: 2021-11-12T19:27:49.000Z (over 3 years ago)
- Default Branch: master
- Last Pushed: 2023-11-20T09:56:43.000Z (over 1 year ago)
- Last Synced: 2025-01-13T09:36:49.718Z (5 months ago)
- Topics: clojure, konserve, rocksdb
- Language: Clojure
- Homepage:
- Size: 15.6 KB
- Stars: 3
- Watchers: 6
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# konserve-rocksdb
A [RocksDB](https://github.com/kotyo/clj-rocksdb) backend for [konserve](https://github.com/replikativ/konserve).
## Usage
### Synchronous Execution
``` clojure
(require '[konserve-rocksdb.core :refer [connect-rocksdb-store delete-rocksdb-store release-rocksdb]]
'[konserve.core :as k])(def path "./tmp/rocksdb/konserve")
(def store (connect-rocksdb-store db-spec :opts {:sync? true}))(k/assoc-in store ["foo" :bar] {:foo "baz"} {:sync? true})
(k/get-in store ["foo"] nil {:sync? true})
(k/exists? store "foo" {:sync? true})(k/assoc-in store [:bar] 42 {:sync? true})
(k/update-in store [:bar] inc {:sync? true})
(k/get-in store [:bar] nil {:sync? true})
(k/dissoc store :bar {:sync? true})(k/append store :error-log {:type :horrible} {:sync? true})
(k/log store :error-log {:sync? true})(let [ba (byte-array (* 10 1024 1024) (byte 42))]
(time (k/bassoc store "banana" ba {:sync? true})))(k/bassoc store :binbar (byte-array (range 10)) {:sync? true})
(k/bget store :binbar (fn [{:keys [input-stream]}]
(map byte (slurp input-stream)))
{:sync? true})
(release-rocksdb store)
(delete-rocksdb-store path :opts {:sync? true})
```### Asynchronous Execution
``` clojure
(ns test-db
(require '[konserve-rocksdb.core :refer [connect-rocksdb-store delete-rocksdb-store release-rocksdb]]
'[clojure.core.async :refer [