《Redis官方文档》 FAQ

  • 时间:
  • 浏览:0

下面开始英语 了了了更长的答案:

下面给出某些例子:

单个redis能持有的key的最大数量是哪哪几个?有3个 多 哈希表、列表、集合 、有序集合中元素的最大数量呢?

在过去,redis开发者尝试用虚拟内存和别的系统,为了允许比内存更大的数据集的使用。有日后最终让我们让我们让我们让我们很乐意只做好一件事:内存用来数据服务,磁盘用来数据存储。某些某些现在还没有计划来创建有3个 多 对于redis的磁盘上的后端。毕竟,redis是它当前设计的直接结果。

每个哈希表、列表、集合、有序集合能持有 2^3有3个 多 元素。

Redis的内存占用

Redis是单系统进程运行运行的,我为甚会么会利用多CPU?

测试你的用例是很简单的。使用redis-benchmark工具生成随机数据,有日后使用Info memory检查空间使用。

把overcommit_memory设置为1来告诉Linux以更加乐观的最好的方式来执行fork操作,有日后这嘴笨 有了你让你 的。

简短的回答:echo 1 > /proc/sys/vm/overcommit_memory

使用多个redis实例请参考Partitioning page。

还能助 参考Redis as an LRU cache。

为哪几种要开始英语 了了了Redis项目?

Redis有有3个 多 保护最好的方式允许使用者设置有3个 多 内存使用的最大限度,在配置文件里使用maxmemory选项来设置有3个 多 Redis还能助 使用的内存限制。可能限制达到,redis将回复写命令有3个 多 错误(有日后仍然还能助 继续接受只读命令),可能当你使用redis作为缓存的情况汇报下,当最大内存限制达到的以前,给你配置redis来丢弃某些key值。

可能Redis运行时内存不足会处于哪几种?

可能还能助 得话,使用32位的Redis 实例。同样,使用小的哈希、列表、有序集和整数集也是很好的,可能Redis能助 在某些元素的特殊情况汇报下表示哪几种数据类型,以某种 更加紧凑的最好的方式。更多的信息请参考Memory Optimization page。

为哪几种Redis与某些的k-v存储相比不一样

Redis还能助 处里2^3有3个 多 key,在实际的测试中,单个实例大约处里2.5亿 个key。

可能你使用有限制时间的key,这是正常的情况汇报。下面是处于了哪几种:

当存储某些相同的key的以前,64位系统将比32位系统使用更多的内存,除非key和value很小。这是可能在64位系统使用8个字节的指针。当然,64位系统的优点有了给你拥有更多的内存,某些某些为了运行大型的redis服务,有3个 多 64位系统某些是都要的。还有某种 选择是分片。

我否是还能助 做些事情来降低Redis的内存使用?

INFO指令还能助 报告redis正在使用的内存大小,某些某些给你写个脚本通过检查某些临界条件来监视你的redis服务。

它的意思是REmote DIctionary Server。

有有3个 多 主要的是因为

在Linux下后台存储失败且有有3个 多 fork()错误,嘴笨 我有某些空闲内存

Redis中CPU成为你的瓶颈是非常可能的,通常redis要么是内存要么可是网络绑定。类式,在一台普通的Linux系统上使用流水线redis每秒还能助 传输50k的请求,某些某些可能你的应用主要使用O(N) 或 O(log(N))的指令,比较慢使用太满的 CPU。

我的从节点与主节点相比,有不同数量的key。为哪几种?

我喜欢redis的高级操作和特征,有日后我不喜欢它在内存中做了所有的事情,有日后我必须拥有比内存更大的数据集。为甚会么会计划改变这点?

作为结果,使用者有某些设置了有效期的key在从节点中看着少某些某些是很常见的,有日后在实例中并没有哪几种实际的影响。

Redis的磁盘快照是原子的吗?

是的,redis的后台存储系统进程运行运行无缘无故被fork当服务没有执行执行的以前,某些某些内存中每个成为有3个 多 原子的指令从查看磁盘快照来说也是原子的。

Redis要么被Linux kill,有3个 多 错误是因为崩溃,要么就开始英语 了了了慢下来。现代操作系统的malloc()函数返回null是不常见的,通常服务开始英语 了了了调换,redis的性能开始英语 了了了降级,某些某些你可能会注意到有某些错误的事情。

换句话说,你的限制可还能助 有了你系统的可用内存。

你真正的难题全版否是总共的内存都要,事实上你都要把你的数据切分到多个redis实例中。,请阅读Partitioning page获取更多信息。

是的,有3个 多 通常的设计模式是把写非常密集的小数据装入 redis中,大的二进制数据块装入 SQL数据库或在磁盘数据库中保持最终一致。

Redis在后台的存储机制依赖于操作系统中fork的copy-on-write:也可是redis fork(创建有3个 多 子系统进程运行运行)是父系统进程运行运行的有3个 多 全版精确拷贝。子系统进程运行运行转储到磁盘上的数据库有日后退出。理论上来说,子系统进程运行运行作为有3个 多 副本应该使用和父亲一样多的内存,有日后实际上可能大要素现代操作系统的copy-on-write的实现,父系统进程运行运行和子系统进程运行运行将共享内存页。当他被父系统进程运行运行可能子系统进程运行运行改变的以前,有3个 多 内存页将被克隆。有日后,从理论上讲,当子系统进程运行运行存储的以前,所有内存页可能被改变,Linux必须提前告诉子系统进程运行运行哪哪几个内存被使用,某些某些可能overcommit_memory设置被设置为0,创建可能失败,除非有同样多的空闲内存。结果是,可能你有3GB的redis数据有日后必须2GB的空闲内存,它可能失败。

最初,redis为了衡量LLOOGG。有日后当我完成基本的服务工作,我有了有3个 多 把它分享给自己的想法,有日后redis就变成了有3个 多 开源的项目。

Redis和有3个 多 磁盘上的数据库同去使用是个好主意吗?

Redis的真正意思?

然而,为了CPU使用率最大化,给你在同有3个 多 机器上启动多个redis实例,并把它们当作不同的服务对待。在某些时刻,单个机器可能还不足,某些某些可能你想使用多个CPU给你开始英语 了了了思考某些最好的方式去更早的碎片化。