Redis
文章平均质量分 52
葛旭朋
让编程不再难学,让技术与⽣活更加有趣。
展开
-
Redis节点高可用之Cluster集群搭建
一 介绍 背景 Sentinel解决了主从架构故障自动迁移的问题 但是Master主节点的写能力和存储能力依旧受限 使用Redis的集群cluster就是为了解决单机Redis容量有限的问题,将数据按一定的规则分配到多台机器 什么是集群Cluster 是一组相互独立的、通过高速网络互联的计算机,它们构成了一个组,并以单一系统的模式加以管理 容易和分布式弄混,分布式系统简单的可以认为就一个庞大的系统,进行拆分度多个小系统 Cluster模式是Redis3.0开始推出原创 2021-08-09 12:17:20 · 870 阅读 · 0 评论 -
Redis节点高可用监控之Sentinel搭建
一 介绍 背景 前面搭建了主从,当主服务器宕机后,需要手动把一台从服务器切换为主服务器,人工干预费事费力,还会造成一段时间内服务不可用 哨兵模式介绍 Redis提供了哨兵的命令,是一个独立的进程 原理 哨兵通过发送命令给多个节点,等待Redis服务器响应,从而监控运行的多个Redis实例的运行情况 当哨兵监测到master宕机,会自动将slave切换成master,通过通知其他的从服务器,修改配置文件切换主机 Sentinel三大工作任务 监控(Mo原创 2021-08-09 07:29:51 · 250 阅读 · 0 评论 -
Redis主从复制-读写分离原理解析
主从复制分两种(主从刚连接的时候,进行全量同步;全同步结束后,进行增量同步) 全量复制 master服务器会开启一个后台进程用于将redis中的数据生成一个rdb文件 主服务器会缓存所有接收到的来自客户端的写命令,当后台保存进程处理完毕后,会将该rdb文件传递给slave服务器 slave服务器会将rdb文件保存在磁盘并通过读取该文件将数据加载到内存 在此之后master服务器会将在此期间缓存的命令通过redis传输协议发送给slave服务器 然后slave服务...翻译 2021-08-08 21:42:30 · 370 阅读 · 0 评论 -
Redis 主从复制 一主二从架构环境搭建
一配置mkdir -p /data/redis/master/data mkdir -p /data/redis/slave1/data mkdir -p /data/redis/slave2/data#从节点开启只读模式(默认)replica-read-only yes#从节点访问主节点的密码,和requirepass一样masterauth 123456#哪个主节点进行复制replicaof 8.129.113.233 6379二 创建主配置文件redis.conf..原创 2021-08-08 20:48:18 · 106 阅读 · 0 评论 -
Redis的Key内存淘汰策略
背景 redis在占用的内存超过指定的maxmemory之后, 通过maxmemory_policy确定redis是否释放内存以及如何释放内存 提供多种策略 策略 volatile-lru(least recently used) 最近最少使用算法,从设置了过期时间的键中选择空转时间最长的键值对清除掉; volatile-lfu(least frequently used) 最近最不经常使用算法,从设置了过期时间的键中选择某段时间之内使用频次最..翻译 2021-08-08 09:52:55 · 75 阅读 · 0 评论 -
Redis6.x服务端配置命令介绍
一Redis6.x服务端配置config命令介绍info命令介绍服务器的各种信息和统计数值 Server:有关redis服务器的常规信息 redis_mode:standalone # 运行模式,单机或者集群 multiplexing_api:epoll # redis所使用的事件处理机制 run_id:3abd26c33dfd059e87a0279defc4c96c13962ede # .原创 2021-08-07 13:11:26 · 177 阅读 · 0 评论 -
SpringCache框架常用之Cacheable实战
一SpringCache框架常用注解Cacheable Cacheable注解 标记在一个方法上,也可以标记在一个类上 缓存标注对象的返回结果,标注在方法上缓存该方法的返回值,标注在类上缓存该类所有的方法返回值 value 缓存名称,可以有多个 key 缓存的key规则,可以用springEL表达式,默认是方法参数组合 condition 缓存条件,使用springEL编写,返回true才缓存 二案例//对象@Cacheable(value = {"produc...翻译 2021-08-07 06:48:45 · 424 阅读 · 0 评论 -
SpringBoot2.X+MybatisPlus+SpringCache框架项目实战
一SpringCache简介 文档:https://spring.io/guides/gs/caching/ 自Spring 3.1起,提供了类似于@Transactional注解事务的注解Cache支持,且提供了Cache抽象 提供基本的Cache抽象,方便切换各种底层Cache 只需要更少的代码就可以完成业务数据的缓存 提供事务回滚时也自动回滚缓存,支持比较复杂的缓存逻辑 核心 一个是Cache接口,缓存操作的API; 一个是CacheM.翻译 2021-08-06 19:39:26 · 291 阅读 · 1 评论 -
Redis最佳实践SortedSet开发用户积分实时榜单
一背景用户玩游戏-积分实时榜单 IT视频热销实时榜单 电商商品热销实时榜单 一般的排行榜读多写少,可以对 master 进行写入操作,然后多个 slave 进行读取操作。 如果是对象记得重写HashCode与Equals方法二 数据准备/** * 积分对象 * @author cv大魔王 * @version 1.0 * @date 2021/5/21 15:37 */@Datapublic class UserPointVO implements Serializabl.翻译 2021-08-06 19:19:45 · 166 阅读 · 2 评论 -
Redis社交应用里面之关注、粉丝、共同好友案例
一背景社交应用里面的知识,关注、粉丝、共同好友案例二 代码 public void testSet(){ BoundSetOperations operationLW = redisTemplate.boundSetOps("user:lw"); operationLW.add("A","B","C","D","E"); System.out.println("老王的粉丝:"+operationLW.members()...原创 2021-08-06 16:22:00 · 357 阅读 · 0 评论 -
大数据下的用户画像标签去重
一 常用场景用户画像 英文为User Profile,是根据用户基本属性、社会属性、行为属性、心理属性等真实信息而抽象出的一个标签化的、虚拟的用户模型。“用户画像”的实质是对 “人”的数字化。 应用场景有很多,比如个性化推荐、精准营销、金融风控、精细化运营等等, 举个例子来理解用户画像的实际应用价值,我们经常用手机网购,淘宝里面的千人千面 通过“标签 tag”来对用户的多维度特征进行提炼和标识,那每个人的用户画像就需要存储,set集合就适合去重 用户画像不止针对某个人,也可以某一人群或行业的画像翻译 2021-08-06 16:19:04 · 344 阅读 · 0 评论 -
Redis购物车实现案例-Hash数据结构
一 案例分析 购物车常见实现方式 实现方式一:存储到数据库 性能存在瓶颈 实现方式二:前端本地存储-localstorage-sessionstorage localstorage在浏览器中存储 key/value 对,没有过期时间。 sessionstorage在浏览器中存储 key/value 对,在关闭会话窗口后将会删除这些数据。 实现方式三:后端存储到缓存如redis 可以开启AOF持久化防止重启丢失(推荐) 二 相关原创 2021-08-05 23:44:50 · 995 阅读 · 1 评论 -
Redis热销视频榜单实战
一需求 企业中流程 定时任务计算昨天最多人学习的视频 晚上12点到1点更新到榜单上 预留一个接口,支持人工运营 类似场景 京东:热销手机榜单、电脑榜单等 百度:搜索热榜 疑惑:为啥不是实时计算,真正高并发下项目,都是预先计算好结果,然后直接返回数据,且存储结构最简单 二 开发接口 @RequestMapping("rank") public JsonData videoRank(){ List<Video..原创 2021-08-05 23:08:14 · 199 阅读 · 0 评论 -
Redis分布式锁实现
一分布式锁核心知识介绍和注意事项加锁 SETNX key value setnx 的含义就是 SET if Not Exists,有两个参数 setnx(key, value),该方法是原子性操作 如果 key 不存在,则设置当前 key 成功,返回 1; 如果当前 key 已经存在,则设置当前 key 失败,返回 0 解锁 del (key) 得到锁的线程执行完任务,需要释放锁,以便其他线程可以进入,调用 del(key) 配置锁超时 expire (key,30s) 客户端奔溃或.原创 2021-08-05 22:32:00 · 95 阅读 · 0 评论 -
高并发商品首页热点数据开发
一 简介 热点数据 经常会被查询,但是不经常被修改或者删除的数据 首页-详情页 链路逻辑 检查缓存是否有 缓存不存在则查询数据库 查询结果放到缓存,设置过期时间 下次访问则命中缓存 二接口开发@RequestMapping("/api/v1/card")@RestControllerpublic class VideoCardController { @Autowired private VideoCardService video.原创 2021-08-05 18:44:44 · 165 阅读 · 0 评论 -
注册登录-图形验证码+谷歌开源Kaptcha引入
一 添加依赖<!--kaptcha依赖包--> <dependency> <groupId>com.baomidou</groupId> <artifactId>kaptcha-spring-boot-starter</artifactId> <version>1.0.0</version></dependency>二 代码配置@Configur原创 2021-08-05 17:26:52 · 306 阅读 · 0 评论 -
SpringBoot2.x整合Redis6客户端
一java语言客户端 Jedis 是直连模式,在多个线程间共享一个 Jedis 实例时是线程不安全的,需要使用连接池 其API提供了比较全面的Redis命令的支持,相比于其他Redis 封装框架更加原生 Jedis中的方法调用是比较底层的暴露的Redis的API,Java方法基本和Redis的API保持着一致 使用阻塞的I/O,方法调用同步,程序流需要等到socket处理完I/O才能执行,不支持异步操作 lettuce 高级Redis客户端,用于线程安全同步,异步响应 基于Net.原创 2021-08-05 13:00:14 · 758 阅读 · 0 评论 -
Redis 主从复制、哨兵和集群原理与区别简介
简介谈到Redis服务器的高可用,如何保证备份的机器是原始服务器的完整备份呢?这时候就需要哨兵和复制。哨兵(Sentinel):可以管理多个Redis服务器,它提供了监控,提醒以及自动的故障转移的功能。复制(Replication):则是负责让一个Redis服务器可以配备多个备份的服务器。Redis正是利用这两个功能来保证Redis的高可用哨兵哨兵是Redis集群架构中非常重要的一个组件,哨兵的出现主要是解决了主从复制出现故障时需要人为干预的问题。Redis哨兵主要功能(1)原创 2021-07-31 09:44:56 · 314 阅读 · 0 评论 -
Redis过期key清除策略
redis过期key清除策略分析 Redis如何淘汰过期的keys: set name daniel 3600 惰性删除 : 概念:当一些客户端尝试访问它时,key会被发现并主动的过期 放任键过期不管,但是每次从键空间中获取键时,都检查取得的键是否过期,如果过期的话,就删除该键 特点:CPU友好,但如果一个key不再使用,那么它会一直存在于内存中,造成浪费 定时删除: 概念:设置键的过期时间的同时原创 2021-07-28 17:49:14 · 95 阅读 · 0 评论 -
Redis的RDB和AOF两种持久化方案对比
一 Redis提供了不同的持久性选项:RDB持久性以指定的时间间隔执行数据集的时间点快照。 AOF持久性记录服务器接收的每个写入操作,将在服务器启动时再次播放,重建原始数据集。使用与Redis协议本身相同的格式以仅追加方式记录命令。当Redis太大时,Redis能够重写日志背景。二 RDB的优缺点: 优点: RDB最大限度地提高了Redis的性能,父进程不需要参与磁盘I/O 与AOF相比,RDB允许使用大数据集更快地重启 缺点: 如果您需要在Redis停止工作时(例如断电翻译 2021-07-28 09:49:27 · 117 阅读 · 0 评论 -
Redis AOF持久化原理
一 AOF持久化配置# 是否开启aofappendonly yes# 文件名称appendfilename "appendonly.aof"# 同步方式appendfsync everysec# aof重写期间是否同步no-appendfsync-on-rewrite no# 重写触发配置auto-aof-rewrite-percentage 100auto-aof-rewrite-min-size 64mb# 加载aof时如果有错如何处理aof-load-trunc原创 2021-07-28 09:03:13 · 125 阅读 · 0 评论 -
Redis RDB持久化原理
一 rdb持久化配置# 时间策略,表示900s内如果有1条是写入命令,就触发产生一次快照,可以理解为就进行一次备份save 900 1save 300 10 # 表示300s内有10条写入,就产生快照save 60 10000# redis servercron 类似于linux的crontab,默认每隔100毫秒执行一次# 文件名称dbfilename dump.rdb# 如果持久化出错,主进程是否停止写入stop-writes-on-bgsave-error yes# 是原创 2021-07-28 08:51:59 · 276 阅读 · 0 评论 -
Redis集群搭建
1 安装rediscd /usr/local/wget http://download.redis.io/releases/redis-4.0.6.tar.gztar -zxvf redis-4.0.6.tar.gzcd redis-4.0.6make && make install2新建集群文件夹cd /usr/local/mkdir redis_clustercd redis_clustermkdir 7000 7001 7002 7003 7004 70.原创 2021-07-27 16:16:33 · 79 阅读 · 0 评论 -
灾备切换Sentinel的使用
1,Redis主从复制可将主节点数据同步给从节点,从节点此时有两个作用:1.1 一旦主节点宕机,从节点作为主节点的备份可以随时顶上来。1.2 扩展主节点的读写能力,分担主节点读压力。但是问题来了:一旦主节点宕机,从节点晋升为主节点,同时需要修改应用方的主节点地址,还需要命令所有从节点去复制新的主节点,整个过程需要人工干预。2,redis主节点挂掉之后需要操作下面命令slave no one #取消主备,更改为主节点slaveof 新host 新节点 #将其它节点设置为新主节点..原创 2021-07-27 09:14:01 · 313 阅读 · 0 评论 -
Redis读写分离
1,海量并发性能处理2,对读写性能进行扩展,采用读写分离解决性能瓶颈 运行一些额外的服务器,让他们与主服务器进行连接,然后将主服务器写入的数据通过网络副本到从服务器,进行准实时 的更新。3,redis已经发现了这个读写分离场景比较普遍,所以自身集成了读写分离供用户使用,只需要在redis的配置文件redis.conf文件里面加上一句 slaveof hostip port如图:新建文件夹redis-replication新建6379和6380文件夹进...原创 2021-07-26 15:56:27 · 976 阅读 · 0 评论 -
缓存雪崩的五大解决方案
1,什么是缓存雪崩如果缓存集中在一段时间内失效,引发大量缓存穿透,所有的查询都落在数据库上,造成缓存雪崩,由于原有缓存失效,新缓存未到期间所有原本访问缓存的都去访问了数据库,而对数据库cpu和内存造成巨大压力,从而引发宕机。2,如何预防和解决2.1 加锁排队mutex互斥锁解决,Redis的setnx去set一个mutex key,当操作返回成功时,再进行load db并回设到缓存,否则就重试整个get缓存的方法。2.2 数据预热数据预热就是系统上线后,将相关的缓存数据直接加载到缓存原创 2021-07-19 21:28:02 · 8650 阅读 · 4 评论 -
Redis 6379端口连接失败
1,关闭防火墙,或者将端口号加入防火墙开放2,查看reids进程和端口,都是存在的。只是ip地址是127.0.0.1而不是0.0.0.0,只是本机能使用查找redis的配置文件redis.conf使用命令:find / -name redis.conf查找bind 127.0.0.1所在的行数使用命令:cat /usr/local/redis/bin/redis.conf|grep bin -n编辑配置文件vim /usr/local/redis/bin/redis.conf原创 2021-07-17 22:26:05 · 1947 阅读 · 0 评论