云枫的菜园子

带着一个流浪的心,慢慢沉淀。 https://github.com/CloudFeng

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
  15 Posts :: 0 Stories :: 6 Comments :: 0 Trackbacks

闲话

这两天花了点时间把《The little redis book》的最后两章看完并且翻译出来,一则想学习Redis这个内存数据库;二则想锻炼一下自己的英语。

第6章管理

我们的最后一章主要描述运行Redis中的一些管理方面的内容。这里并不是一个完整的Redis管理指南。我们尽我们最大努力回答初次使用Redis很有可能遇到很基础问题。

配置

当你第一次启动Redis服务器的时候,它会警告你:找不到redis.cof文件。此文件常常被用于配置Redis的各个方面。一个描述详述的redis.cof文件适用于每一个发布的Redis。这个样例文件包括了默认配置选项,因此,知道这些设置的作用和它们的默认值是十分有用的。你可以从这个网址找到它。

因为这个文件已经详细描述了,我们就不说明这些配置了。

另外可以通过redis.conf文件配置Redis,config set命令也可以用于设置其他的一些值。实际上,当我们设置slowlog-log-slower-than为0时,我们就已经使用过它了。

config get命令可以显示设置的值。这个命令支持模式匹配。因此,我们项显示关于日志的任何信息,我们可以:

config get *log*

验证

Redis可以被配置需要一个密码。可以通过设置requirepass来实现(可以redis.confconfig set命令)。当requirepass设置为一个值时,客户端需要使用auth password命令。

一旦一个客户端通过验证,就在任何一个数据库中执行任何命令。这些命令包括flushall命令,这个命令清除任何数据库中的任何键。通过配置,你可以重命名命令为模糊的名字已到达安全性:

rename-command CONFIG 5ec4db169f9d4dddacbfb0c26ea7e5ef
rename-command FLUSHALL 1041285018a942a4922cbf76623b741e

或者,你可以通过设置一个空字符串的名字禁用一个命令。

大小限制

当你初次使用Redis,你可能会想:“我可以拥有多少键?“你也可能会想一个hash能够拥有多少域(特别当你使用hash组织你的数据时),或者列表和集合能够包含多少元素?对于每个实例,对于上面这些实际限制是亿万级别的。

复制

Redis支持复制功能,意味着当你写一个Redis实例(主),一个或多个实例(从)会随着主实例一同更新。为了配置一个从实例,你可以设置slaveof属性活这使用slaveof命理(没有配置这些的运行的示例是或者可能为主实例)。

复制可以通过拷贝数据到不同服务器,保护你的数据。复制也常常被用于提升性能,是因为它可以把读取请求发送到多个从实例。它们可能会返回稍微滞后的数据,但是对很多应用来说,这是一个比较好的折衷方案。

不幸的是Redis的复制功能并没有提供自动恢复故障机制。如果主实例挂了,一个从实例需要手动升级。如果你在Redis中想实现一些高可用性,对于那些使用心跳监控和自动开关的脚本的传统高可用性工具,目前来说是一件棘手(头痛)的事情。

备份

在Redis中备份是一件简单的事。可以拷贝Redis的快照到本地的任何地方(S3,FTP,..)。默认情况下,Redis存储它的快照到一个命名为dump.rdb文件中。在任意时间点,你可以使用scp,ftp或者cp命令(或者其他的命令)操作这个文件。

在主实例上停用快照和追加文件,然后让一个从实例处理备份的事情是一种常见的情况。这样做可以减少主实例的负载并且让你在从实例上设置更多的保存参数而不损害系统的整个性能。

缩放和Redis集群

复制是成长中的网络可以使用的第一个工具。一些命令比其他一些命令更昂贵(比如排序),将这些命令转交给一个从实例,能够让整体系统满足实时查询。

另外,Redis的真正缩放源自将你的键分发给多个实例(这些实例需要在同一个盒子中运行,记住,Redis是单线程的)。目前,这是你需要注意的(尽管有一些Redis驱动提供一致性hash算法)。考虑你的数据,就水平分发而言,在本书中我们没有覆盖到。你暂时不用担心这些问题,但是不管你使用哪种方案,你都需要考虑。

好消息是这些工作在Redis集群下是可以工作的。不仅提供水平方向的缩放,包括均衡;而且对高可用性提供了自动故障恢复。

只要你愿意花时间和精力,就可以实现高可用性和缩放。进一步,Redis集群会让事情变得更加简单。

小结

在过去的一段时间,已经有一些项目和网站使用了Redis,毫无疑问,Redis已经用于实际的产品中了。然而,一些工具,特别是安全和可用性方面仍旧不够成熟。在不久的将来,Redis集群可以解决目前管理中一些方面的挑战。

总结

总之,Redis展示了我们处理数据一种简化方式。它剔除了大部分的复杂性和抽象性,并且可以用于其他系统。在一些情况下,Redis并不是很好的选择。而在其他一些情况下,Redis就像为你的数据量身定做的。

最后,回到我最开始所说的:Redis易学。如此多的新技术,很难指出哪些技术值得投入时间学习。当你真正想到Redis的简洁带来的好处实,我由衷的相信,就学习而言,你和你的团队做了一个很棒的投资。

posted on 2015-11-09 23:14 CloudFeng 阅读(...) 评论(...) 编辑 收藏