https://github.com/veer66/cl-rocksdb
RocksDB binding for Common Lisp
https://github.com/veer66/cl-rocksdb
commonlisp database rocksdb
Last synced: 4 months ago
JSON representation
RocksDB binding for Common Lisp
- Host: GitHub
- URL: https://github.com/veer66/cl-rocksdb
- Owner: veer66
- License: apache-2.0
- Created: 2021-02-16T17:30:22.000Z (over 5 years ago)
- Default Branch: main
- Last Pushed: 2024-05-02T07:17:07.000Z (about 2 years ago)
- Last Synced: 2024-05-03T07:13:55.659Z (about 2 years ago)
- Topics: commonlisp, database, rocksdb
- Language: Common Lisp
- Homepage:
- Size: 61.5 KB
- Stars: 6
- Watchers: 2
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# cl-rocksdb
RocksDB binding for Common Lisp
## Example
```Lisp
(let ((opt (create-options)))
(set-create-if-missing opt t)
(with-open-db (db "/tmp/rock-loop" opt)
(put-kv-str db "A1" "B1")
(put-kv-str db "C" "D")
(cancel-all-background-work db t)
(with-iter (iter db)
(move-iter-to-first iter)
(let ((lst nil))
(loop while (valid-iter-p iter)
do
(print (iter-value-str iter))
(move-iter-forward iter))))))
```
```Lisp
(with-open-db (db "existing-db.rocks")
(with-iter (i db)
(move-iter-to-first i)
(loop while (valid-iter-p i)
for v = (let ((v (iter-value-str i)))
(move-iter-forward i)
v)
do
(princ v)
(terpri))))
```
## Open as read-only db example
```
CL-USER> (ql:quickload "cl-rocksdb" :silent t)
("cl-rocksdb")
CL-USER> (make-package :ex-read-only :use '(cl cl-rocksdb))
#
CL-USER> (in-package :ex-read-only)
#
EX-READ-ONLY> (defparameter *opt* (create-options))
*OPT*
EX-READ-ONLY> (set-create-if-missing *opt* t)
; No values
EX-READ-ONLY> (with-open-db (db #P"/tmp/rock-ex-read-only" *opt*)
(put-kv-str db "KEY-1" "VAL-1"))
NIL
;;;;;;;;;;;;;;;;;;;;;;;;;;;; CANNOT PUT TO READ ONLY DB ;;;;;;;;;;;;;;;;;;;;;;;;;;;;
EX-READ-ONLY> (with-open-db (db #P"/tmp/rock-ex-read-only" nil :read-only t)
(put-kv-str db "KEY-2" "VAL-2"))
"Not implemented: Not supported operation in read only mode."
; Debugger entered on #
[1] EX-READ-ONLY>
; Evaluation aborted on #
EX-READ-ONLY> (with-open-db (db #P"/tmp/rock-ex-read-only" nil :read-only t)
(get-kv-str db "KEY-1"))
"VAL-1"
```
## Example applications
* DuHin - yet another RocksDB browser [codeberg.org/veer66/duhin](https://codeberg.org/veer66/duhin)
## Status
Alpha
## License
Apache-2.0