当前位置:   article > 正文

NoSql数据库:几款key-value数据库_key-value数据库有哪些

key-value数据库有哪些

redis

c语言实现
都知道redis是非常强大的内存数据库, 由于所有的数据都存储在内存中,其操作非常的快。但是由于内存比较昂贵,不可能把所有的数据都放到内存中,因此往往redis都用来做缓存。
这带来什么问题呢,缓存的有效性如何保证,在持久化存储的更新发生时,需要同步更新缓存,在高并发的情况下,很可能带来不一致性的问题。(当然得有一定的并发量)

如果redis可以把持久化存储的工作干了,是不是就不需要做同步更新了呢?来看下leveldb

leveldb

c++语言实现
leveldb是一款key-value NoSql数据库,基于内存的写入 + 基于内存和磁盘的读取,实现高效的Get Put操作
具体是如何工作的呢?

  1. 首先介绍下skiplist:
    我们都知道linkedlist,linkedlist的查询/修改复杂度为O(n),对于linkedlist我们如何能实现类似于二分法,复杂度为O(log(n))的算法呢?
    linkedlist是实现不了,其变异版本skiplist可以实现,欲了解详情自行百度,这里只是介绍下 它是一种能够实现高效查询和修改的类链表结构
  2. leveldb的数据存储分为内存和磁盘,在内存中数据存储在2个skiplist,一个只读一个读写
  3. 数据在写入leveldb的时候数据,会写入wskiplist以及磁盘日志(类似于wal机制),在wskiplist达到一定大小,wskiplist变成新的rskip
本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号