初学乍练redis
关于redis的技术探究
wzy0623
25年的数据库、数据仓库、大数据相关工作。《Hadoop构建数据仓库实践》、《HAWQ数据仓库与数据挖掘实战》、《SQL机器学习库——MADlib技术解析》、《MySQL高可用实践》、《Kettle构建Hadoop ETL》、《Greenplum构建实时数据仓库实践》作者。
展开
-
按过期时间定期删除 redis Key
按过期时间定期删除 redis Key原创 2023-11-10 11:04:29 · 136 阅读 · 0 评论 -
redis全局遍历替换特征字符串
需求:将一个redis实例(如10.10.10.1:6379)范围内所有key值中的 .letssing.net 替换为 .kaixinvv.com。原创 2023-03-03 11:45:03 · 712 阅读 · 0 评论 -
RedisJSON安装
1. 前提redis 6.0及以上版本2. 下载下载地址:https://redis.com/redis-enterprise-software/download-center/modules/选择版本下载文件,如rejson.Linux-rhel7-x86_64.2.0.8.zip3. 加载在redis配置文件中,添加下面一行,加载解压后的rejson.so文件loadmodule /home/redis/rejson.so4. 验证启动redis,验证加载模块sudo原创 2022-05-17 07:13:23 · 1306 阅读 · 0 评论 -
使用redis-dump-go导出数据
1. 下载https://github.com/yannh/redis-dump-go/releases/download/v0.7.0/redis-dump-go-linux-386.tar.gz2. 解压tar -zxvf redis-dump-go-linux-386.tar.gz3. 导出redis-dump-go -port 36380 -db 0 -filter u_l_his_new* -output commands -n 12 > u_l_his_new.txt4.原创 2022-04-16 13:28:12 · 810 阅读 · 0 评论 -
哨兵模式的redis修改IP脚本
change_to_intranet_ip_6.sh#!/bin/bashget_char(){ SAVEDSTTY=`stty -g` stty -echo stty cbreak dd if=/dev/tty bs=1 count=1 2> /dev/null stty -raw stty echo stty $SAVEDSTTY}# 1. 检查哨兵状态echo -e "\n检查当前哨兵状态\n"sudo -u redi原创 2022-03-07 14:29:05 · 2148 阅读 · 0 评论 -
哨兵模式的redis实例重置脚本
#!/bin/bashif [ ! -n "$1" ] ;then echo "请输入集群端口号!" exitfimaster_name=`/home/redis/redis-3.2.3/src/redis-cli -p 30001 info | grep $1 | awk -F"," '{print $1}' | awk -F"=" '{print $2}'`echo $master_nameget_char(){ SAVEDSTTY=`stty -g` .原创 2021-05-19 08:43:07 · 1868 阅读 · 1 评论 -
定时自动删除redis key
目录1. 背景描述2. 实现脚本3. 自动执行1. 背景描述 使用redis存储群发消息。当初匆忙上线,设计上有两个主要问题:一是在每个userid的key中存储消息体,从数据库的角度看,存在大量的数据冗余,占用大量存储空间。二是不设置key的过期时间,使得redis像貔貅一样只进不出,不断膨胀。 由于对用户的群发消息量很大,使得redis几天就内存报警。开始时使用单实例redis,遇到报警就增加maxmemory配置。后来将单实例进行拆分,按照useri...原创 2021-05-08 10:28:04 · 2022 阅读 · 1 评论 -
分布式之数据库和缓存双写一致性方案解析
引言为什么写这篇文章?首先,缓存由于其高并发和高性能的特性,已经在项目中被广泛使用。在读取缓存方面,大家没啥疑问,都是按照下图的流程来进行业务操作。但是在更新缓存方面,对于更新完数据库,是更新缓存呢,还是删除缓存。又或者是先删除缓存,再更新数据库,其实大家存在很大的争议。目前没有一篇全面的博客,对这几种方案进行解析。于是博主战战兢兢,顶着被大家喷的风险,写了这篇文章。文章结构本文由以下三个部分组成1、讲解缓存更新策略2、对每种策略进行缺点分析3、针对缺点给出改进方案正文先做一转载 2020-07-30 16:55:10 · 554 阅读 · 0 评论 -
redis手工分片
目录一、redis环境二、redis手工分片步骤1. 配置级联复制2. 去掉老哨兵监控3. 停止新实例从老实例的复制4. 添加新哨兵监控5. 重启新哨兵6. 添加老哨兵监控7. 重启老哨兵 随着数据量越来越大,一个redis实例可能需要分成多个以形成数据分片。此时通常可以采取两种方式操作:一是启用cluster模式自动完成数据分片;二是手工分片...原创 2020-03-25 05:43:38 · 775 阅读 · 0 评论 -
定期全备redis
首先申明我的观点,redis本身只是缓存,不适合作为数据库使用,有说微博就是拿redis当DB用的,自己去证实吧。如果非要拿redis当数据库,就不得不考虑数据丢失问题,这里讨论两种常见的可能造成数据丢失的情况。 第一种情况是redis实例或所在主机宕机,这可以通过复制来解决,再配以redis哨兵机制,实现自动failover。应用通过哨兵访问redis,当mas...原创 2020-03-12 07:18:22 · 717 阅读 · 1 评论 -
MySQL百万级数据高效导入Redis
DBAplus社群今天以下文章来源于侠梦的开发笔记,作者侠梦前言随着系统的运行,数据量变得越来越大,单纯的将数据存储在MySQL中,已然不能满足查询要求了,此时我们引入Redis作为查询的缓存层,将业务中的热数据保存到Redis,扩展传统关系型数据库的服务能力,用户通过应用直接从Redis中快速获取常用数据,或者在交互式应用中使用Redis保存活跃用户的会话,都可以极大地降低后端关...转载 2020-03-02 16:16:50 · 1355 阅读 · 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:55 · 6095 阅读 · 1 评论 -
为什么 redis 单线程却能支撑高并发
redis 和 memcached 有什么区别?redis 的线程模型是什么?为什么 redis 单线程却能支撑高并发?这个是问 redis 的时候,最基本的问题吧,redis 最基本的一个内部原理和特点,就是 redis 实际上是个单线程工作模型,你要是这个都不知道,那后面玩儿 redis 的时候,出了问题岂不是什么都不知道?还有可能面试官会问问你 redis 和 memcache...转载 2020-01-16 09:18:50 · 783 阅读 · 1 评论 -
Redis Cluster FlushAll失败
转自:http://longlongblog.cn/2017/11/01/58/问题背景Flush是一个极少用到的操作,不过既然碰到过诡异的现象,也记录在此。问题场景是在Reids Cluster中使用主从模式,向主节点发送flush命令,预期主从节点都会清空数据库。但是诡异的现象出现了,我们得到的结果是主从节点发生了切换,并且数据并没有被清空。问题分析分析以上case,Red...转载 2019-05-29 14:35:36 · 3646 阅读 · 1 评论 -
初学乍练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:50 · 2145 阅读 · 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:28 · 2289 阅读 · 2 评论 -
初学乍练redis:使用rdr查看Redis key内存使用
一、问题提出 有一个生产系统的Redis实例内存使用超限引发报警,需要查看各个key所使用的内存分布情况,以便采取进一步的措施。二、安装RDR Redis原生并没提供查看单个Key的内存占用情况的命令。经过简单快速地调研,决定试一下RDR(Redis Data Reveal),主要原因是想体验一下其图形化的表示。RDR是用go语言开...原创 2019-04-18 15:59:12 · 4313 阅读 · 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:34 · 5452 阅读 · 1 评论 -
初学乍练redis:两行shell脚本实现slowlog持久化转储(去重保留历史条目、时间戳格式化)
两行shell脚本实现slowlog持久化转储(去重保留历史条目、时间戳格式化)原创 2018-11-02 11:35:56 · 2544 阅读 · 1 评论 -
初学乍练redis:分片与集群
目录一、配置集群二、增加节点三、分配插槽四、获取与插槽对应的节点五、故障恢复 大部分摘自Redis入门指南(第2版)。 即使使用哨兵,redis集群的每个数据库依然存有集群中的所有数据,从而导致集群的总数据存储受限于可用内存最小的数据库节点,形成木桶效应。由于redis中的所有数据都基于内存存储,这一问题尤为突出,特别是把redis用作持久化...原创 2018-09-14 18:13:34 · 16420 阅读 · 1 评论 -
初学乍练redis:复制与哨兵
目录一、复制1. 配置2. 原理3. 乐观复制4. 无硬盘复制5. 增量复制二、哨兵1. 什么是哨兵2. 配置3. 原理4. 部署三、脑裂 大部分摘自Redis入门指南(第2版)。一、复制 持久化使redis在服务器重启情况下尽量少丢数据,但持久化生成的文件是存储在redis同一机器上的。为避免单点故障,...原创 2018-09-07 18:10:01 · 1032 阅读 · 0 评论 -
初学乍练redis:持久化
目录一、RDB1. 触发条件2. 快照原理二、AOF1. 开启AOF2. AOF的实现3. 同步硬盘数据三、RDB迁移到AOF 大部分摘自Redis入门指南(第2版)。 redis是一个内存数据库,如果没有持久化功能,当redis重启、宕机、掉电等情况发生时,所有存储在内存中的数据就会丢失,这种情况在某些应用场景下是不允许发生的,...原创 2018-09-06 17:23:16 · 568 阅读 · 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:19 · 3534 阅读 · 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:38 · 1187 阅读 · 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:28 · 2046 阅读 · 0 评论