对内存数据库的建议

von*_*hev 5 database rdbms nosql in-memory-database

我想删除(几乎)加载Web应用程序上的每个请求的小块数据的sql依赖项.大多数数据是键值/文档结构,但不排除关系解决方案.数据不是太大,所以我想将它保留在内存中以获得更高的可用性.

你会推荐什么解决方案?

Nis*_*ant 6

最简单和最广泛使用的内存键值存储是MemcacheD.介绍页面会重复您要求的内容:

Memcached是一个内存中的键值存储,用于从数据库调用,API调用或页面呈现的结果中获取任意数据(字符串,对象)的小块.

客户名单令人印象深刻.这已经很久了.好文档.它几乎适用于所有编程语言的API.水平缩放非常简单.根据我的经验,Memcached很好.

您可能还想查看MemBase.


Jon*_*nan 6

Redis非常适合这类数据.它还支持一些基本数据结构并为它们提供操作.

我最近转换了我的Django论坛应用程序,用于所有实时/跟踪数据 - 当你用关系做这种东西(SET views = views + 1和每个页面视图上的其他写入)时,你不再有这种感觉很好数据库.

下面是使用Redis存储用户活动跟踪所需数据的示例,包括在Python中保持最新看到的用户的有序集合是最新的:

def seen_user(user, doing, item=None):
    """
    Stores what a User was doing when they were last seen and updates
    their last seen time in the active users sorted set.
    """
    last_seen = int(time.mktime(datetime.datetime.now().timetuple()))
    redis.zadd(ACTIVE_USERS, user.pk, last_seen)
    redis.setnx(USER_USERNAME % user.pk, user.username)
    redis.set(USER_LAST_SEEN % user.pk, last_seen)
    if item:
        doing = '%s <a href="%s">%s</a>' % (
            doing, item.get_absolute_url(), escape(str(item)))
    redis.set(USER_DOING % user.pk, doing)
Run Code Online (Sandbox Code Playgroud)