初学乍练redis
关于redis的技术探究
wzy0623
20多年的数据库、数据仓库、大数据相关工作。《Hadoop构建数据仓库实践》、《HAWQ数据仓库与数据挖掘实战》、《SQL机器学习库——MADlib技术解析》作者。
-
转载 分布式之数据库和缓存双写一致性方案解析
引言为什么写这篇文章?首先,缓存由于其高并发和高性能的特性,已经在项目中被广泛使用。在读取缓存方面,大家没啥疑问,都是按照下图的流程来进行业务操作。但是在更新缓存方面,对于更新完数据库,是更新缓存呢,还是删除缓存。又或者是先删除缓存,再更新数据库,其实大家存在很大的争议。目前没有一篇全面的博客,对这几种方案进行解析。于是博主战战兢兢,顶着被大家喷的风险,写了这篇文章。文章结构本文由以下三个部分组成1、讲解缓存更新策略2、对每种策略进行缺点分析3、针对缺点给出改进方案正文先做一2020-07-30 16:55:10326
0
-
原创 redis手工分片
目录一、redis环境二、redis手工分片步骤1. 配置级联复制2. 去掉老哨兵监控3. 停止新实例从老实例的复制4. 添加新哨兵监控5. 重启新哨兵6. 添加老哨兵监控7. 重启老哨兵 随着数据量越来越大,一个redis实例可能需要分成多个以形成数据分片。此时通常可以采取两种方式操作:一是启用cluster模式自动完成数据分片;二是手工分片...2020-03-25 05:43:38349
0
-
原创 定期全备redis
首先申明我的观点,redis本身只是缓存,不适合作为数据库使用,有说微博就是拿redis当DB用的,自己去证实吧。如果非要拿redis当数据库,就不得不考虑数据丢失问题,这里讨论两种常见的可能造成数据丢失的情况。 第一种情况是redis实例或所在主机宕机,这可以通过复制来解决,再配以redis哨兵机制,实现自动failover。应用通过哨兵访问redis,当mas...2020-03-12 07:18:22499
0
-
转载 MySQL百万级数据高效导入Redis
DBAplus社群今天以下文章来源于侠梦的开发笔记,作者侠梦前言随着系统的运行,数据量变得越来越大,单纯的将数据存储在MySQL中,已然不能满足查询要求了,此时我们引入Redis作为查询的缓存层,将业务中的热数据保存到Redis,扩展传统关系型数据库的服务能力,用户通过应用直接从Redis中快速获取常用数据,或者在交互式应用中使用Redis保存活跃用户的会话,都可以极大地降低后端关...2020-03-02 16:16:50720
0
-
原创 批量取redis key/value和批量删除key
需求:取出所有前缀为g.at.ga.的string类型的key及其value实现:1. 取出keyredis-cli -p 26379 -a 123456 -n 0 keys g.at.ga.* > a.txt2. 拼出取value的命令sed 's/^/get &/g' a.txt > b.txt3. 取valuecat b.txt | redis-cli -p...2020-01-23 07:38:552677
1
-
转载 为什么 redis 单线程却能支撑高并发
redis 和 memcached 有什么区别?redis 的线程模型是什么?为什么 redis 单线程却能支撑高并发?这个是问 redis 的时候,最基本的问题吧,redis 最基本的一个内部原理和特点,就是 redis 实际上是个单线程工作模型,你要是这个都不知道,那后面玩儿 redis 的时候,出了问题岂不是什么都不知道?还有可能面试官会问问你 redis 和 memcache...2020-01-16 09:18:50424
0
-
转载 Redis Cluster FlushAll失败
转自:http://longlongblog.cn/2017/11/01/58/问题背景Flush是一个极少用到的操作,不过既然碰到过诡异的现象,也记录在此。问题场景是在Reids Cluster中使用主从模式,向主节点发送flush命令,预期主从节点都会清空数据库。但是诡异的现象出现了,我们得到的结果是主从节点发生了切换,并且数据并没有被清空。问题分析分析以上case,Red...2019-05-29 14:35:361957
0
-
原创 初学乍练redis:Redis 5 Cluster手工指定主从关系
1. 检查当前Cluster的主从关系/home/redis/redis-5.0.3/src/redis-cli -a 123456 --cluster check 140.210.73.39:20001 结果如下:140.210.73.39:20001 (a1addf19...) -> 929146 keys | 5461 slots | 1 slaves....2019-04-21 16:25:501568
1
-
原创 初学乍练redis:Redis 5.0.3单实例数据迁移到Cluster
在使用redis 3时,可以使用redis-migrate-tool工具做redis在线数据迁移(参考https://wxy0327.blog.csdn.net/article/details/84138537)。但是我们现在使用的redis server已经升级到5.0.3版本,再用redis-migrate-tool做迁移会报错:[2019-04-19 13:26:35....2019-04-19 18:16:281856
1
-
原创 初学乍练redis:使用rdr查看Redis key内存使用
一、问题提出 有一个生产系统的Redis实例内存使用超限引发报警,需要查看各个key所使用的内存分布情况,以便采取进一步的措施。二、安装RDR Redis原生并没提供查看单个Key的内存占用情况的命令。经过简单快速地调研,决定试一下RDR(Redis Data Reveal),主要原因是想体验一下其图形化的表示。RDR是用go语言开...2019-04-18 15:59:123005
2
-
原创 初学乍练redis:使用redis-migrate-tool做redis在线数据迁移
目录一、问题提出二、关于redis-migrate-tool三、实验1. 建议集群redis2. 建立单实例redis3. 源码安装redis-migrate-tool4. 配置redis-migrate-tool5. 测试四、业务切换五、注意事项参考:一、问题提出 随着业务量的增长,主从复制的redis架构中,单实例的OPS已经接...2018-11-16 14:32:344204
0
-
原创 初学乍练redis:两行shell脚本实现slowlog持久化转储(去重保留历史条目、时间戳格式化)
目录一、问题提出二、关于redis slowlog三、设计思路四、shell实现1. 追加slowlog条目并格式化输出文件2. 去除重复条目并生成结果文件3. 最终脚本文件4. 定期调度执行一、问题提出 在排查redis性能问题时,从slowlog中找执行缓慢的命令进行优化是一种常规手段。redis slowlog被设计成内存中一个先进先出的...2018-11-02 11:35:561643
0
-
原创 初学乍练redis:分片与集群
目录一、配置集群二、增加节点三、分配插槽四、获取与插槽对应的节点五、故障恢复 大部分摘自Redis入门指南(第2版)。 即使使用哨兵,redis集群的每个数据库依然存有集群中的所有数据,从而导致集群的总数据存储受限于可用内存最小的数据库节点,形成木桶效应。由于redis中的所有数据都基于内存存储,这一问题尤为突出,特别是把redis用作持久化...2018-09-14 18:13:3411864
1
-
原创 初学乍练redis:复制与哨兵
目录一、复制1. 配置2. 原理3. 乐观复制4. 无硬盘复制5. 增量复制二、哨兵1. 什么是哨兵2. 配置3. 原理4. 部署三、脑裂 大部分摘自Redis入门指南(第2版)。一、复制 持久化使redis在服务器重启情况下尽量少丢数据,但持久化生成的文件是存储在redis同一机器上的。为避免单点故障,...2018-09-07 18:10:01616
0
-
原创 初学乍练redis:持久化
目录一、RDB1. 触发条件2. 快照原理二、AOF1. 开启AOF2. AOF的实现3. 同步硬盘数据三、RDB迁移到AOF 大部分摘自Redis入门指南(第2版)。 redis是一个内存数据库,如果没有持久化功能,当redis重启、宕机、掉电等情况发生时,所有存储在内存中的数据就会丢失,这种情况在某些应用场景下是不允许发生的,...2018-09-06 17:23:16356
0
-
原创 初学乍练redis:事务与脚本
目录一、事务1. 概述2. 错误处理3. watch命令二、redis脚本1. 脚本介绍2. 实例:自定义incr3. redis与Lua(1)在脚本中调用redis命令 (2)从脚本中返回值 (3)脚本相关命令(4)KEYS和ARGV(5)沙盒与随机数(6)原子性和执行时间 大部分摘自Redis入门指...2018-09-03 17:41:192407
0
-
原创 初学乍练redis:主从复制及哨兵维护脚本
目录一、创建redis主从复制集群脚本二、删除redis主从复制集群脚本三、启动redis主从复制集群脚本四、停止redis主从复制集群脚本五、重启哨兵脚本 环境:103.244.233.166(master、sentinel)103.244.233.167(slave、sentinel)103.244.233.168(slave、sentinel)...2018-08-24 10:37:38836
1
-
原创 初学乍练redis:一键部署集群
目录一、需求二、安装redis1. 安装gcc2. 建redis用户3. 解压并编译4. 限制redis用户登录三、建立配置文件模板1. master模板2. slave模板3. 哨兵模板四、编写创建集群的shell脚本1. master2. slave五、其它准备1. 配置SSH登录无密码验证2. 禁用requiretty3. ...2018-08-16 18:05:281609
0