leveldb

  1. leveldb
    1. Examples
      1. Basic operation
      2. Batches and ranges
    2. API
      1. Open and close

Bindings to LevelDB, a fast and lightweight key/value database library by Google. Provides an implementation of the level egg. Include both eggs to provide the API used in these examples.

Examples

Basic operation

    
(use level leveldb)

(define db (open-db "./example"))

(db-put db "hello" "world")
(display (db-get db "hello")) ;; => world
(db-delete db "hello")

(close-db db)

Batches and ranges

    
(use level leveldb lazy-seq)

(define operations
  '((put "name:123" "jane")
    (put "name:456" "joe")))

(define (print-names pairs)
  (lazy-each print pairs))

(call-with-db "./example"
  (lambda (db)
    (db-batch db operations)
    (print-names (db-stream db start: "name:" end: "name::"))))

;; prints
;; => (name:123 jane)
;; => (name:456 joe)

API

Open and close

    
(open-db loc #!key (create #t) (exists #t))

Opens database with path loc and returns a database object. By default, this method will create the database if it does not exist at loc and will not error if the database already exists. This behaviour can be modified using the keyword arguments. Setting exists to #f will mean an exception occurs if the database already exists. Setting create to #f will mean an exception occurs if the database does not exist.

    
(close-db db)

Closes database db.

    
(call-with-db loc proc #!key (create #t) (exists #t))

Opens database at loc and calls (proc db). The database will be closed when proc returns or raises an exception.