redis

持久化级别 redis提供如下四中持久化方案: 完全不持久化,纯内存操作。比如做缓存服务器时。 RDB持久化,配置时间间隔,异步持久化。默认的持久化方案。 AOF持久化,所有操作都是记录到日志文件,保证所有数据都被记录。 在redis重启时,会使用AOF重建数据集。 结合使用RDB和AOF的持久化方案.重启时会使用AOF重建。 RDB优缺点 优点: 结构紧凑的文件,相当与系统的实时快照,很适合做数据库备份和灾难恢复。 性能优秀,服务线程不需要处理i/o. 大数据集上重启很快。不需要重建 缺点: 间隔性同步到磁盘,导致有可能会丢失部分数据。 fork有可能堵塞导致暂不可用. AOF优缺点 优点: 更加稳定,可以设置为 不同步/每秒同步/完全同步. redis可以rewrite过大的AOF log. 保存了所有操作,可以从误操作中回复数据库。 缺点: 所需的文件通常比RDB更大 查询性能相对比RDB更差。 有很稀有的bug存在,RDB没有此类bug. 如何使用 如果想要更强的数据一致性,则应该组合使用AOF和RDB 如果可以容忍少量的数据丢失,可以只使用RDB. 不推荐只是AOF.
Jan 8, 2016
1 min read
介绍一些redis部署时的注意事项 注意事项 建议使用linux部署。 sysctl vm.overcommit_memory=1 或者 vm.overcommit_memory = 1 (/etc/sysctl.conf) echo never > /sys/kernel/mm/transparent_hugepage/enabled 设置一个和内存一样大或更大的swap分区,不然redis有可能在内存不足时被系统杀死。 设置一个明确的maxmemory. 这样redis会在内存到限后抛出错误,而不会falling. 在写比较重的场景下需要有大约2倍于normal的内存。这些是来在内存中保留那些需要被写回磁盘的数据. 配置supervisor类工具时,设置 daemonize no 开启slave特性时,即便不使用持久化特性,redis也会perform RDB save. 除非使用实验性的diskless-sync. 开启slave特性时,要确保要么打开master节点的保存特性,要么关闭master节点的自动重启。 注意开发redis安全相关配置. require-pass/rewrite-command/bind-ip aws注意事项 使用HWS实例,不要使用pv实例 不要使用太老的实例。 m3 good than m1 redis在EBS的持久话需要注意,EBS可能会太慢。 你可能想尝试diskless-sync. 如果replication-sync有问题的话。 redis升级或重启建议 TODO
Jan 8, 2016
1 min read
原内容来自redis官方文档: redis-replication官方文档 基本来说,只要在配置文件里加上 # slaveof <ip> <port> slaveof 127.0.0.1 6379 就可以完成配置. 如下配置可能有用 # 不使用磁盘同步 repl-diskless-sync # 同步前的延时, 以等待其他的要链接的slave repl-diskless-sync-delay 安全问题 如果redis开启复制特性,同时master节点关闭持久化特性。 这时应该避免master节点的自动重启,避免slave节点上的数据被重启的master节点清空。 同步策略 redis默认使用磁盘同步, 数据被存到RDB file文件, 之后通过同步该文件做full-sync. 但是如果磁盘太慢会导致性能不好,2.8新增直接通过socket来同步的方式.(该方式目前仍然是实验阶段) 只读复制 redis默认slave是只读的,所有写操作会报错. 通过如下方式可以打开读写 # 配置文件 slave-read-only noconfig # redis-cli运行时 set slave-read-only no 即便是只读slave也不应该暴露在公网下. debug/config等命令仍会带来完全问题(使用rename-command配置) 读写slave在较少场景下会有用。未来redis有可能移除该特性. 认证 redis很快,所以需要设置足够强的密码,不然会很容易被破解。 master节点可以通过配置,要求所有链接需要认证 requirepass <password> 这时slave节点需要做如下配置 # 运行时 config set masterauth <password> # 配置文件 masterauth <password> 部分同步 TODO 控制slave链接数 TODO
Jan 8, 2016
1 min read