文档章节

Redis_注意事项

sand_ant
 sand_ant
发布于 2016/06/21 14:02
字数 877
阅读 9
收藏 0
点赞 0
评论 0

注意事项

设置最大内存

一定要设置最大内存,否则物理内存用爆了就会大量使用Swap,写RDB文件时变得非常缓慢。
如果不限制导致内存占用过大时,可能会被linux内核强制kill
可以在/var/log/messages文件中看见如下信息:
Out of memory: Kill process 2030 (redis-server) score 679 or sacrifice child

内存限制

如果超过最大内存而且没有设置删除策略或者删除策略已不满足,则无法写入

不要使用过长的key

Key 可以是任意类型,最后都存成byte[]
Key 不能太长,比如1024字节,但也不追求太短,建议用":"分隔表名,用"."作为单词间的连接。

key数量限制

一个实例最大可以存储 2^32个key
hash, list, set, sorted set, 可以存储 2^32个元素

value长度限制

单个value长度限制为最大512M

RDB&AOF

  • 每次保存 RDB 的时候,Redis 都要 fork() 出一个子进程,并由子进程来进行实际的持久化工作。
    在数据集比较庞大时, fork() 可能会非常耗时,造成服务器在某某毫秒内停止处理客户端;
    如果数据集非常巨大,并且 CPU 时间非常紧张的话,那么这种停止时间甚至可能会长达整整一秒
  • 当子进程完成对新 RDB 文件的写入时,Redis 用新 RDB 文件替换原来的 RDB 文件,并删除旧的 RDB 文件 RDB 文件需要保存整个数据集的状态, 所以它并不是一个轻松的操作。 因此你可能会至少 5 分钟才保存一次 RDB 文件。
  • AOF为追加操作,每次耗时不会太长,2.2之后的版本可以配置追加的达到一定大小后自动重写AOF,减小无用的存储
    在不重写的情况下,如果你对一个计数器调用了 100 次 INCR , 那么仅仅是为了保存这个计数器的当前值, AOF 文件就需要使用 100 条记录
  • AOF的恢复速度比RDB慢得多
  • AOF 在过去曾经发生过这样的 bug : 因为个别命令的原因,导致 AOF 文件在重新载入时,无法将数据集恢复成保存时的原样。 (举个例子,阻塞命令 BRPOPLPUSH 就曾经引起过这样的 bug 。) 测试套件里为这种情况添加了测试: 它们会自动生成随机的、复杂的数据集, 并通过重新载入这些数据来确保一切正常。 虽然这种 bug 在 AOF 文件中并不常见, 但是对比来说, RDB 几乎是不可能出现这种 bug 的。
  • 如果 RDB 持久化和 AOF 持久化都被打开了, 那么程序会优先使用 AOF 文件来恢复数据集

生产环境代码不要使用keys指令

keys执行会做全库扫描,非常消耗redis服务器的cup,对于单核cup的redis来说,频繁的keys操作,会导致CPU很容易就被占满

修改最大连接数

linux的默认连接数(128),和redis的默认最大连接数量(511)一般对于生产环境来说都太小。生产环境或者压测环境注意修改相应的数值为合适的值,redis客户端的最大连接数不要忘记调整

© 著作权归作者所有

共有 人打赏支持
sand_ant
粉丝 3
博文 35
码字总数 18706
作品 0
无锡
phalcon 一些开发注意事项和redis配置

开发注意事项 关于命名空间,需要在loader中加载命名空间,如 services目录中,有Auth类。 ·loader.php : Auth类中添加命名空间 引入命名空间 Redis配置 ·services.php $di->setShared("re...

林伟盛 ⋅ 03/02 ⋅ 0

windows下scrapy-redis如何为redis配置密码

windows下scrapy-redis如何为redis配置密码 1. 环境 系统:win7 scrapy-redis redis 3.0.5 python 3.6.1 2. 为redis-server配置密码并启动 redis在windows下的安装与配置,请参考这篇文章:h...

zwq912318834 ⋅ 2017/12/27 ⋅ 0

windows下scrapy-redis如何为不同的爬虫项目分配不同的db,而不仅仅使用db0

windows下scrapy-redis如何为不同的爬虫项目分配不同的db,而不仅仅使用db0 1. 背景 redis默认会生成16个db:db0 ~ db15, 在编写scrapy-redis分布式爬虫时,会默认使用db0来存放去重,种子队...

zwq912318834 ⋅ 2017/12/26 ⋅ 0

Redis分布式缓存系统Lua脚本食用指引

Redis 为什么添加 Lua 支持 redis lua 脚本出现之前 Redis 是没有服务器端运算能力的,主要是用来存储,用做缓存,运算是在客户端进行,这里有两个缺点:一、如此会破坏数据的一致性,试想如...

斯武丶风晴 ⋅ 2016/06/15 ⋅ 0

Redis安全注意事项

本文简要介绍 Redis 安全相关的话题, 包括: Redis访问控制机制、Redis源码安全性, 外部输入可能触发的恶意攻击, 以及其他相关问题。 如果要反馈安全问题, 请到 GitHub 上提出 issue, 当然, 如...

renfufei ⋅ 2017/11/30 ⋅ 0

Redis 5.0 RC1 发布,专注于提供新的重要特性

Redis 5.0 rc1 已发布,Redis 5 是一个专注于几个重要特性的发行版。不同于 Redis 4 非常专注于操作,Redis 5 的变化大多是面向用户的,在现有的基础上增加新的数据类型和操作类型。 以下是此...

淡漠悠然 ⋅ 05/31 ⋅ 16

基于swoole的job调度组件

swoole-jobs 基于swoole的job调度组件 使用场景 web中较慢的逻辑,比如统计/email/短信/图片处理等 单机job任务并发数10000以内,但可以多机器部署 架构图 特性 基于swoole的job调度组件 re...

太阳黑子 ⋅ 2016/10/29 ⋅ 0

快速掌握Redis——第二招:安装

安装注意事项 下载stable 版本,稳定版 不用configure 官方configure好了,所以你的机器得保持正确的时间 ( date-s 修改时间 ) 32位机器最好 make 32bit make test 是可选的 make test 提示缺...

vasks ⋅ 2015/03/27 ⋅ 0

Tomcat7+Redis存储Session

详情见官网:https://github.com/jcoleman/tomcat-redis-session-manager 前提:你已经部署了Redis,尚未学会的,可以移步这里:http://blog.csdn.net/caiwenfengfor23/article/details/4551......

独钓渔 ⋅ 2016/03/09 ⋅ 0

Python client for Redis 官翻文档2.10.1(一)

Python client for Redis key-value store redis针对python的客户端, github地址:https://github.com/andymccurdy/redis-py/ 安装: 虽然称redis的python客户端称为redis-py,实际安装时的......

山下狮子 ⋅ 2014/06/19 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

JavaScript零基础入门——(十)JavaScript的DOM基础

JavaScript零基础入门——(十)JavaScript的DOM基础 欢迎大家回到我们的JavaScript零基础入门,上一节课,我们了解了JavaScript中的函数,这一节课,我们来了解一下JavaScript的DOM。 第一节...

JandenMa ⋅ 13分钟前 ⋅ 0

Spring mvc DispatchServlet 实现原理

在Spring中, ContextLoaderListener只是辅助类,在web 容器启动的时候查找并创建WebApplicationContext对象,通过该对象进行加载spring的配置文件。而真正的逻辑实现其实是在DispatcherSer...

轨迹_ ⋅ 25分钟前 ⋅ 0

Weex起步

本教程假设你已经在你的本地环境安装了node 其实weex起步教程在 https://github.com/lilugirl/incubator-weex 项目说明文件中都已经有了,但为了有些同学看到英文秒变文盲,所以这里我重新写...

lilugirl ⋅ 33分钟前 ⋅ 0

Jenkins实践1 之安装

1 下载 http://mirrors.jenkins.io/war/latest/jenkins.war 2 启动 java -jar jenkins.war 前提:安装jdk并配置环境变量 启动结果节选: ************************************************......

晨猫 ⋅ 40分钟前 ⋅ 0

组合数学 1-2000 中,能被6或10整除的数的个数

1--2000 中,能被6或10整除的数的个数 利用集合的性质 能被6整除的个数 2000/6 = 333 能被10整除的个数 2000/10 = 200 能被6和10整除的个数 2000/30 = 66 能被6或10整除的个数 333+200-66 =...

阿豪boy ⋅ 48分钟前 ⋅ 0

一篇文章学懂Shell脚本

Shell脚本,就是利用Shell的命令解释的功能,对一个纯文本的文件进行解析,然后执行这些功能,也可以说Shell脚本就是一系列命令的集合。 Shell可以直接使用在win/Unix/Linux上面,并且可以调用...

Jake_xun ⋅ 今天 ⋅ 0

大数据工程师需要精通算法吗,要达到一个什么程度呢?

机器学习是人工智能的一个重要分支,而机器学习下最重要的就是算法,本文讲述归纳了入门级的几个机器学习算法,加大数据学习群:716581014一起加入AI技术大本营。 1、监督学习算法 这个算法由...

董黎明 ⋅ 今天 ⋅ 0

Kylin 对维度表的的要求

1.要具有数据一致性,主键值必须是唯一的;Kylin 会进行检查,如果有两行的主键值相同则会报错。 2.维度表越小越好,因为 Kylin 会将维度表加载到内存中供查询;过大的表不适合作为维度表,默...

无精疯 ⋅ 今天 ⋅ 0

58到家数据库30条军规解读

军规适用场景:并发量大、数据量大的互联网业务 军规:介绍内容 解读:讲解原因,解读比军规更重要 一、基础规范 (1)必须使用InnoDB存储引擎 解读:支持事务、行级锁、并发性能更好、CPU及...

kim_o ⋅ 今天 ⋅ 0

代码注释中顺序更改 文件读写换行

`package ssh; import com.xxx.common.log.LogFactory; import com.xxx.common.log.LoggerUtil; import org.apache.commons.lang3.StringUtils; import java.io.*; public class DirErgodic ......

林伟琨 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部