rdb

Redis学习四(运维指南).

断了今生、忘了曾经 提交于 2020-11-18 20:37:15
一、上线规划 一般 redis 的参数配置都在 redis.conf 中,在上线前根据实际环境配置好合适参数,能有效提高 redis 的可用性。 redis 的运行机器 CPU 不求核数多,但求主频高,Cache大,因为 redis 主处理模式是单进程的。 留意 redis 日志文件的配置,对应 logfile 参数。redis.log 为 redis 主日志,sentinel.log 为 sentinel 监控日志。 关闭 THP,这个默认的 Linux 内存页面大小分配策略会导致 RDB 时出现巨大的 latency 和巨大的内存占用。关闭方法为: echo never > /sys/kernel/mm/transparent_hugepage/enabled echo never > /sys/kernel/mm/transparent_hugepage/defrag 一定要设置最大内存 maxmemory 参数,否则物理内存用爆了就会大量使用 Swap,写 RDB 文件时的速度很慢。设置的参数参考:机器内存 * 45% / 1.2。(1.2 为内存碎片) maxmemory-policy 策略,则当 redis 内存数据达到 maxmemory 时,会根据 maxmemory-policy 配置来淘汰内存数据,以避免OOM。 noeviction:不执行任何淘汰策略

Redis实战总结-配置、持久化、复制

别来无恙 提交于 2020-11-16 03:29:19
Redis的配置主要放置在redis.conf,可以通过修改配置文件实现Redis许多特性,比如复制,持久化,集群等。 redis.conf部分配置详解 # 启动redis,显示加载配置redis.conf # ./redis-server /path/to/redis.conf # 停止redis # redis-cli -h IP -p PORT shutdown # 可以包含一个或多个其他配置文件,如果多个redis服务器存在标准配置模板,但是每隔redis服务器可能有个性化的配置 # include /path/to/local.conf # include /path/to/other.conf # 这个地方网上存在许多误解,bind的是网络接口。对于一个redis服务器来说可以有一个或者多个网卡。比如服务器上有两个网卡:bind 192.168.1.100 192.168.1.101,如果bind bind 192.168.1.100,则只有该网卡地址接受外部请求,如果不绑定,则两个网卡都接受请求 # bind 192.168.1.100 192.168.1.101 # bind 127.0.0.1 ::1 # 监听端口号,默认为6379,如果为0监听任连接 port 6379 # TCP连接中已完成队列的长度 tcp-backlog 511

开源GitHub标星30K的腾讯Redis笔记,阿里技术专家看到都赞不绝口

感情迁移 提交于 2020-11-13 19:29:03
前言 Redis的火爆程度,相信不用我多说,现在大型的互联网公司基本上都需要使用到Redis技术。Redis作为目前最火爆的内存数据库之一,通过在内存中读写数据,很大程度上提高了读写速度,可以说Redis 是实现网站高并发不可或缺的一部分。 但是,对于Redis的使用,相信还是有很多人不知道如何使用,也有不少中小型企业还没有使用到Redis,但是现在的大厂要求,对Redis的使用是需要熟练并掌握的,因此,学习Redis刻不容缓。 好消息是,今天公开了一份宝藏的技术笔记,由腾讯技术专家整理出来的Redis技术笔记,下载量已经突破了30W。 现在分享出来,需要的朋友,私信我领取密码“Redis”即可免费下载。 首先,上一套Redis思维脑图 这一套Redis的思维脑图还是非常详细具体的,内容比较多,图片展示的是“简约版”,实际上还有更完整的内容,“+”键未展开,Redis的思维导图能够更好地去帮助我们理解这本笔记的内容,也让我们在学习Redis的时候有一个更清晰的思路。 Redis思维导图内容: 基本数据结构及其应用:字符串+列表+集合+有序集合+哈希 用Redis实现分布式锁 持久化:AOF+RDB 如何解决多线程竞争问题 数据库、缓存双写不一致问题 事务 如何保证高可用 哨兵 集群 面试题相关 然后,上正菜:Redis技术笔记 1.认识Redis (Redis简介

redis的几种数据导入导出方式【转】

人走茶凉 提交于 2020-11-09 17:19:10
环境说明: 202.102.221.11 redis源实例 202.102.221.12 redis目标实例 202.102.221.13 任意linux系统 一、redis-dump方式   1.安装redis-dump工具 [root@ 202.102 . 221.13 ~]# yum install ruby rubygems ruby-devel - y # 更改gem源 [root@ 202.102 . 221.13 ~]# gem sources -a http: // ruby.taobao.org Error fetching http: // ruby.taobao.org: bad response Not Found 404 (http: // ruby.taobao.org/specs.4.8.gz)   访问http: // ruby.taobao.org,公告通知镜像维护站点已迁往Ruby China镜像 #gem sources --add https: // gems.ruby-china.org/ --remove https://rubygems.org/ [root@ 202.102 . 221.13 ~]# gem sources --add http: // gems.ruby-china.org/ --remove http:/

redis的rdb与aof持久化机制

女生的网名这么多〃 提交于 2020-11-08 23:10:49
Redis提供了两种持久化方案:RDB持久化和AOF持久化,一个是快照的方式,一个是类似日志追加的方式 RDB快照持久化 RDB持久化是通过快照的方式,即在指定的时间间隔内将内存中的数据集快照写入磁盘。在创建快照之后,用户可以备份该快照,可以将快照复制到其他服务器以创建相同数据的服务器副本,或者在重启服务器后恢复数据。RDB是Redis默认的持久化方式 save 900 1 当时间到900秒时,如果至少有1个key发生变化,就会自动触发 bgsave 命令创建快照 save 300 10 当时间到300秒时,如果至少有10个key发生变化,就会自动触发 bgsave 命令创建快照 save 60 10000 当时间到60秒时,如果至少有10000个key发生变化,就会自动触发 bgsave 命令创建快照 AOF持久化 除了RDB持久化,Redis还提供了AOF(Append Only File)持久化功能,AOF持久化会把被执行的写命令写到AOF文件的末尾,记录数据的变化。 一般设置1秒同步一次命令 AOF重写的目的就是减小AOF文件的体积,不过值得注意的是:AOF文件重写并不需要对现有的AOF文件进行任何读取、分享和写入操作,而是通过读取服务器当前的数据库状态来实现的 数据恢复 Redis4.0开始支持RDB和AOF的混合持久化(可以通过配置项 aof-use-rdb

Redis的键过期策略及内存淘汰策略简介

眉间皱痕 提交于 2020-11-08 22:06:18
Redis Redis 是高性能的基于内存的 NoSQL 数据库。因为内存是比较宝贵的资源,无法无限制使用,所以 Redis 提供了: 键过期策略 来防止内存饱和。 内存淘汰策略 来使得内存饱和之后继续对外提供服务。 内存过期策略 expire命令 Redis 提供了 expire 命令来给一个键(key)设置过期时间: redis> SET foo "bar" "OK" redis> EXPIRE foo 10 (integer) 1 redis> TTL foo (integer) 10 类似 setex 命令,也可以对目标键设置过期时间,但它其实相当于 set 和 expire 两个命令的原子操作。 expire 只能作用于 Redis 中的键,所以无法对 list 或者 set 中的元素设置过期时间。对某个键调用删除(delete)或者重写(override)的命令如 del , set , getset 之后,会清除键上的过期时间;调用 persist 命令也会清除键上的过期时间;而修改键内容的操作如 incr , hset ,则不会对键的过期时间产生影响。 键的过期原理 Redis 键有两种过期方式:被动方式(passive way)和主动方式(active way)。 被动删除 当某个设置了过期时间的键被访问时,如果发现它已经过期, Redis

9. 图解分析Redis的RDB和AOF两种持久化机制的原理

落花浮王杯 提交于 2020-11-08 19:55:54
1、RDB和AOF两种持久化机制的介绍 2、RDB持久化机制的优点 3、RDB持久化机制的缺点 4、AOF持久化机制的优点 5、AOF持久化机制的缺点 6、RDB和AOF到底该如何选择 我们已经知道对于一个企业级的redis架构来说,持久化是不可减少的 企业级redis集群架构:海量数据、高并发、高可用 持久化主要是做灾难恢复,数据恢复,也可以归类到高可用的一个环节里面去 比如你redis整个挂了,然后redis就不可用了,你要做的事情是让redis变得可用,尽快变得可用 重启redis,尽快让它对外提供服务,但是就像上一讲说,如果你没做数据备份,这个时候redis启动了,也不可用啊,数据都没了 很可能说,大量的请求过来,缓存全部无法命中,在redis里根本找不到数据,这个时候就死定了,缓存雪崩问题,所有请求,没有在redis命中,就会去mysql数据库这种数据源头中去找,一下子mysql承接高并发,然后就挂了 mysql挂掉,你都没法去找数据恢复到redis里面去,redis的数据从哪儿来?从mysql来。。。 具体的完整的缓存雪崩的场景,还有企业级的解决方案,到后面讲 如果你把redis的持久化做好,备份和恢复方案做到企业级的程度,那么即使你的redis故障了,也可以通过备份数据,快速恢复,一旦恢复立即对外提供服务 redis的持久化,跟高可用,是有关系的

面试java后端面经_3

那年仲夏 提交于 2020-11-08 12:43:12
小姐姐说: 你一点都不懂表达,一点都不懂爱情,一点也不爱我! 你答: 你知道吗,我听说过一个这样的故事,讲的就是有一个小女孩和一个男孩在一起,小男孩呢很不幸是位聋哑人,虽然如此,但是他们的日子过得特别的美满。有一天小女孩因为切菜不小心把手给弄破了(ps:这种层度不用打破伤风哈😘),小男孩翻遍家里没有创口贴,于是冲出家门来到街边的小店买创口贴,由于小男孩不会说话,一直尽力描述,无奈店主不知其意,这是小男孩看见店主桌上的剪刀,直接拿起往手上戳,鲜红的血冒出(ps:这种层度也不用打破伤风哈😘),小男孩高兴的拿着创口贴往家里飞奔... 爱情有时候,并不需要花言巧语,我不善言辞,但一直爱你!! 看完那我们开始咯😍 1 自我介绍哈 (这块没有一点准备的可以看面试java后端面经_1) 2 类加载的三种方式 (1:命令行启动应用时由JVM初始化加载 2:通过Class.forName() 方式动态加载 3:通过ClassLoder.loadClass() 方法动态加载) 3 如何判断对象已死 (1:引用计数法(java中没用,因为,没办法解决循环引用:A引用B,B也引用A,但是没有其他引用去引用A和B,这时AB都是垃圾,但是引用计数法无法判断)。2:可达性分析算法:通过GC Roots为起始点向下搜索,说白了就是通过你已知的活对象,去找这对象里的引用,再找引用对象里的引用,一直这样下去

Redis 持久化扫盲了

微笑、不失礼 提交于 2020-11-08 04:52:45
唠个嗑 现在的面试要求是越来越难了,想当初毕业后面试开发岗位如果你会使用 Redis ,在面试官心中就会觉得,哎呦,你挺不错哦,算是加分项。现在的 Redis 成为了开发者的必备技能,面试如果没用过或不会用 Redis,那你就真的可能被劝退了。不停的学习新技术,或许就是开发者的宿命。 持久化 Redis 可以用来做缓存,也属于 NoSQL 数据库,所以也支持数据持久化,Redis 数据库支持两种持久化方案: RDB 快照 AOF 日志 混合持久化 RDB 配置参数 redis.conf 涉及的主要配置 #1、自动备份规则(满足一个条件就会触发备份动作) save 900 1 #每隔900秒有1次修改则触发 save 300 10 #每隔300秒有10次修改则触发 save 60 10000 #每隔60秒有10000次修改则触发 #2、是否快照备份出现错误后禁止客户端写入,默认是 yes stop-writes-on-bgsave-error yes #3、是否对快照文件进行压缩,默认 yes rdbcompression yes #4、是否对 RDB 文件进行校验,默认 yes rdbchecksum yes #5、定义生成的 RDB 文件名,默认 dump.rdb dbfilename dump.rdb #6、定义生成 RDB 文件目录,默认是启动 Redis 服务的目录 dir

Redis配置文件参数说明

﹥>﹥吖頭↗ 提交于 2020-11-08 04:51:46
# Redis configuration file example # Note on units: when memory size is needed, it is possible to specifiy # it in the usual form of 1k 5GB 4M and so forth: # # 1k => 1000 bytes # 1kb => 1024 bytes # 1m => 1000000 bytes # 1mb => 1024*1024 bytes # 1g => 1000000000 bytes # 1gb => 1024*1024*1024 bytes # # units are case insensitive so 1GB 1Gb 1gB are all the same. # By default Redis does not run as a daemon. Use 'yes' if you need it. # Note that Redis will write a pid file in /var/run/redis.pid when daemonized. daemonize yes # When running daemonized, Redis writes a pid file in /var/run/redis.pid