Database Redis能满足我的需要吗

Database Redis能满足我的需要吗,database,redis,data-storage,Database,Redis,Data Storage,我有一个网站,用户可以提交短信,死简单的数据结构 Nameredis实际上只适用于内存中的习题集。它确实有一个页到磁盘的功能——但是你要受OS交换程序的摆布——也就是说,你的RAM将与系统缓存竞争。此外,我认为钥匙必须始终安装在RAM中。所以您不想存储1G+日志记录,mysql归档表更适合这样做 redis具有主从功能,类似于mysql。因此,您可以执行各种技巧,例如对从机进行排序,以保持主机响应。虽然我还没有使用它,但我推测对于内存中的数据库,mysql集群可能要先进得多——但会带来额外的复

我有一个网站,用户可以提交短信,死简单的数据结构


  • Nameredis实际上只适用于内存中的习题集。它确实有一个页到磁盘的功能——但是你要受OS交换程序的摆布——也就是说,你的RAM将与系统缓存竞争。此外,我认为钥匙必须始终安装在RAM中。所以您不想存储1G+日志记录,mysql归档表更适合这样做

    redis具有主从功能,类似于mysql。因此,您可以执行各种技巧,例如对从机进行排序,以保持主机响应。虽然我还没有使用它,但我推测对于内存中的数据库,mysql集群可能要先进得多——但会带来额外的复杂性/资源成本

    如果键值集的值较大,则可以执行客户端压缩/解压缩。无论如何,服务器在搜索这些“blob”的值方面做不了什么

    绕过RAM限制的一种常见方法是执行客户端分片(分区)。也就是说,如果您知道自己的上限,并且由于某种原因没有足够的RAM来解决问题(假设您已经有64GB的RAM),那么您可以基于主键进行“切分”。。如果它是一个序列计数器,您可以获取底部的3位(或一些散列函数+分区函数),并在4、8、16等服务器节点之间分配。这是线性的,但是如果你需要重新划分,那可能会很痛苦。您可以利用redis中的“插槽”来减少机器数量。。假设一台机器有16个插槽。。然后,在另一台机器上转储插槽7-15并还原,然后重新映射所有客户端以指向这两台机器(具有相同的插槽号)。如此类推到16路切分。此时,您需要重新映射所有数据以转到32路

    显然,首先要评估redis的命令集,看看是否可以满足所有数据存储和报告需求。有“从foo中选择*进行更新”的等价物,但它们并不明显。并非所有的RDBMS查询都可以通过键值存储高效地再现。但对于简单的自然主键记录结构,它应该做得很好

    此外,扩展redis命令集以执行自定义操作应该很容易。。请记住,它是围绕无暂停单线程执行而设计的(避免了锁定/上下文切换开销)

    但我真正喜欢的是fifo、pub/sub、数据超时、原子突变(inc/dec)、惰性排序(例如在具有只读节点的客户端上)、映射的映射。很简单,不用使用名称空间,只需在不同的端口/UNIX套接字上启动单独的redis进程(如果可能的话,我的首选)


    它的目的是取代memcached,但它有一个非常好的后台持久化框架。

    redis实际上只适用于内存中的问题集。它确实有一个页到磁盘的功能——但是你要受OS交换程序的摆布——也就是说,你的RAM将与系统缓存竞争。此外,我认为钥匙必须始终安装在RAM中。所以您不想存储1G+日志记录,mysql归档表更适合这样做

    redis具有主从功能,类似于mysql。因此,您可以执行各种技巧,例如对从机进行排序,以保持主机响应。虽然我还没有使用它,但我推测对于内存中的数据库,mysql集群可能要先进得多——但会带来额外的复杂性/资源成本

    如果键值集的值较大,则可以执行客户端压缩/解压缩。无论如何,服务器在搜索这些“blob”的值方面做不了什么

    绕过RAM限制的一种常见方法是执行客户端分片(分区)。也就是说,如果您知道自己的上限,并且由于某种原因没有足够的RAM来解决问题(假设您已经有64GB的RAM),那么您可以基于主键进行“切分”。。如果它是一个序列计数器,您可以获取底部的3位(或一些散列函数+分区函数),并在4、8、16等服务器节点之间分配。这是线性的,但是如果你需要重新划分,那可能会很痛苦。您可以利用redis中的“插槽”来减少机器数量。。假设一台机器有16个插槽。。然后,在另一台机器上转储插槽7-15并还原,然后重新映射所有客户端以指向这两台机器(具有相同的插槽号)。如此类推到16路切分。此时,您需要重新映射所有数据以转到32路

    显然,首先要评估redis的命令集,看看是否可以满足所有数据存储和报告需求。有“从foo中选择*进行更新”的等价物,但它们并不明显。并非所有的RDBMS查询都可以通过键值存储高效地再现。但对于简单的自然主键记录结构,它应该做得很好

    此外,扩展redis命令集以执行自定义操作应该很容易。。请记住,它是围绕无暂停单线程执行而设计的(避免了锁定/上下文切换开销)

    但我真正喜欢的是fifo、pub/sub、数据超时、原子突变(inc/dec)、惰性排序(例如在具有只读节点的客户端上)、映射的映射。很简单,不用使用名称空间,只需在不同的端口/UNIX套接字上启动单独的redis进程(如果可能的话,我的首选)


    它比其他任何东西都要取代memcached,但是它有一个非常好的后台持久化框架。

    我同意你的观点,我唯一要添加的是OP提到的每年100000多条记录。如果真的是一年几十万,用他所说的数据结构,这应该可以很容易地融入到p