
Redis
春风化作秋雨
学而思,思而学
展开
-
java redis 实现多线程资源复用
1、测试类package com.redis.resource;import org.assertj.core.util.Lists;import org.junit.jupiter.api.Test;import org.springframework.boot.test.context.SpringBootTest;import org.springframework.data.redis.core.ListOperations;import org.springframework.d原创 2022-01-17 16:16:48 · 999 阅读 · 0 评论 -
Redis 淘汰策略
1、volatile-lru从已设置过期时间的数据集(server. db[i]. expires)中挑选最近最少使用的数据淘汰。2、volatile-ttl从已设置过期时间的数据集(server. db[i]. expires)中挑选将要过期的数据淘汰。3、volatile-random从已设置过期时间的数据集(server. db[i]. expires)中随机选择数据淘汰。4、allkeys-lru从数据集(server. db[i]. dict)中挑选最近最少使用的数据淘原创 2021-12-28 21:20:35 · 106 阅读 · 0 评论 -
Redis 常见性能问题解决
1、主服务器写内存快照,会阻塞主线程的工作,当快照比较大时对性能影响是非常大的,会间断性暂停服务。解决方案:主服务器最好不要写内存快照。2、Redis 主从复制的性能问题解决方案:为了主从复制的速度和连接的稳定性,主从库最好在同一个局域网内。...原创 2021-12-28 21:16:20 · 760 阅读 · 0 评论 -
Redis 实现分布式锁
1、Redis 分布式锁实现Redis 分布式锁,其实就是线程在整个系统中独占一个“坑位”,其他线程也要占“坑位”的时,如果占用成功那就可以继续执行,如果占用失败,只能放弃或稍后重试。占坑位一般使用 setnx(set if not exists)指令,只允许被一个程序占有,使用完调用 del 释放锁。2、 Redis 分布式锁缺陷Redis 分布式锁不能彻底解决超时的问题,分布式锁有一个超时时间,程序的执行如果超出了锁的超时时间就会出现问题。...原创 2021-12-28 21:02:20 · 239 阅读 · 0 评论 -
Redis 持久化
Redis 有两种持久化方式:1、RDB(Redis Database)指定间隔时间,周期性地对缓存中的数据进行快照存储。2、AOF(Append Only File)每收到一个写命令,都会通过write函数追加到磁盘文件。原创 2021-12-27 22:20:01 · 326 阅读 · 0 评论 -
如何确保证缓存和数据库数据的一致性
1、合理设置缓存的过期时间,击穿后自动加锁更新缓存数据。2、定期更新缓存数据,配合设置过期时间。3、新增、修改、删除数据库操作时同步更新 Redis,可使用事物机制来保证数据的一致性。...原创 2021-12-27 22:16:18 · 163 阅读 · 0 评论 -
Redis 支持的数据类型
Redis 支持五种数据类型:1、string:字符串2、list:列表3、hash:字典4、set:集合5、zset:有序集合原创 2021-12-27 22:11:17 · 751 阅读 · 0 评论 -
缓存击穿与解决方案
1、缓存击穿缓存击穿,指缓存中没有但数据库中有的数据,一般是缓存时间到期自动清除,此时并发用户特别多,同时读缓存没读到数据,又同时去数据库去取数据,导致数据库压力陡然增大。2、解决方案1、热数据,设置永远不过期。2、加锁对请求进行同步。锁内逻辑:再次查询缓存,查不到转查数据库并且进行数据缓存,后面的请求就直接缓存,也避免再次查数据库。...原创 2021-12-27 22:08:59 · 4665 阅读 · 0 评论 -
缓存穿透与解决方案
1、缓存穿透是指请求查询一个一定不存在的数据,由于缓存是不命中时需要转去查询数据库,从数据库查询不到数据是不会写入缓存的,如此将会导致每次请求查询这个不存的数据都要到数据库去查询,于是造成缓存穿透。2、解决方案如果查询返回的数据为空,无论是数据根本不存在,还是系统发生故障,就把这个空结果进行缓存,并设置超时时间,一般不超过五分钟。...原创 2021-12-27 21:58:15 · 285 阅读 · 0 评论 -
Redis单线程模型
1、Redis单线程模型初步理解针对每次请求调用,Redis都需经历接受命令、执行命令和返回结果三个过程。其中,执行命令阶段,因Redis是单线程处理命令,于是每一条到达redis服务端的命令不会立刻执行,而是所有命令都进入一个队列中,然后逐个被执行。多个请求端发送来的命令的执行顺序是不确定的,但可以确定的是不会有两条命令被同时执行,也就是不会产生并发问题,以上便是Redis的单线程基本模型。2、详细描述1、Redis 将每个客户端都分别关联一个指令队列;客户端的指令通过队列来按顺序处理,.原创 2021-12-27 21:48:31 · 692 阅读 · 0 评论 -
Redis 实现的功能
1、数据高速缓存功能2、支持数据持久化3、支持事务4、支持消息队列5、实现分布式锁原创 2021-12-27 20:59:37 · 572 阅读 · 0 评论 -
Redis 使用场景
Redis 是一个使用 C 语言开发的高速缓存数据库。Redis 使用场景:1、缓存用户访问会话信息。2、缓存文章详情信息,快速响应用户请求,提升客户体验。3、缓存热数据(使用频次很高的数据),比如近期热帖。4、记录帖子点赞数、点击数、评论数。5、做数据标记或临时记录数据。比如登陆验证码,自增唯一流水号等。6、实现分布式锁。...原创 2021-12-27 20:56:31 · 109 阅读 · 0 评论 -
话说Redis为什么这么快?!
1、Redis有多快单线程Redis可以支持10w+qp2、为什么1、完全基于内存,绝大部分请求是纯粹的内存操作,所以非常快速。2、采用单线程,避免了不必要的上下文切换和竞争条件,也不存在多进程或者多线程导致的切换而消耗 CPU。3、使用多路I/O复用模型,非阻塞IO。4、使用底层模型不同,它们之间底层实现方式以及与客户端之间通信的应用协议不一样,Redis直接自己构建了VM 机...原创 2020-03-25 21:27:24 · 241 阅读 · 0 评论 -
Redis应用举例
1、分布式或集群模式下session共享2、存储常用字典数据3、部署频繁查询热数据4、实现分布式锁5、重复提交限制,setnx()6、zset消息队列,job定时扫描处理数据7、延时操作,消息队列存储消息,job只处理符合时间范围的数据8、计数,作为订单号等生成策略9、sortset,完成数据排序...原创 2019-09-30 14:58:43 · 254 阅读 · 0 评论 -
StringRedisTemplate与RedisTemplate的区别
StringRedisTemplate与RedisTemplate的区别主要有三点:1、 关系不同StringRedisTemplate继承RedisTemplate。2、序列化策略不同SDR默认采用的序列化策略有两种:1)StringRedisTemplate是String的序列化策略;StringRedisTemplate默认采用的是String的序列化策略,保存的...原创 2019-09-03 16:00:50 · 2378 阅读 · 0 评论 -
Redis集群版本升级
Redis集群版本由3.0.7升级到3.2.10。1、版本升级问题及对应解决方案1.1、代码是否支持redis 3.2.10,是否需要升级对应jar包? a) 先在测试环境部署对应新版集群3.2.10,使用代码进行连接,测试是否存在问题(具体过程参见2);1.2、怎么保证redis平滑升级,对外服务透明? a) 利用redis集群的特性,每个卡槽包含ma...原创 2018-07-13 23:21:29 · 10156 阅读 · 1 评论 -
redis配置信息
1、根据redis日志,对系统参数优化1.1、编辑/etc/sysctl.conf,增加以下对应配置:#内存分配策略 1表示内核允许分配所有的物理内存,而不管当前的内存状态如何vm.overcommit_memory=1#系统默认的128,限制了接收新 TCP 连接侦听队列的大小net.core.somaxconn = 2048然后执行sysctl -p,使生效1.2、修改文件数,文件数限...原创 2018-07-13 23:22:17 · 663 阅读 · 0 评论 -
Redis集群重启
机器ip 192.168.251.51以下,为伪集群模式,redis服务重启流程演示:第一步 查看所有redis进程 [root@i-netlrktd ~]# ps -ef|grep redisroot 1477 1 0 Aug09 ? 00:02:06 redis-server *:6371 [cluster]root 148...原创 2018-07-13 23:24:58 · 24280 阅读 · 6 评论 -
redis架构演变与redis-cluster群集读写方案
导言redis-cluster是近年来redis架构不断改进中的相对较好的redis高可用方案。本文涉及到近年来redis多实例架构的演变过程,包括普通主从架构(Master、slave可进行写读分离)、哨兵模式下的主从架构、redis-cluster高可用架构(redis官方默认cluster下不进行读写分离)的简介。同时还介绍使用Java的两大redis客户端:Jedis与Lettuce用...转载 2018-08-09 08:59:21 · 449 阅读 · 0 评论 -
使用redis对数据或程序上锁,适用于集群模式
1、业务场景无论是单例还是集群模式下,简单说,多线程环境下,对同一数据或程序进行调用,需要进行非阻塞的同步。2、redis 命令SETNX key value将 key 的值设为 value ,当且仅当 key 不存在。若给定的 key 已经存在,则 SETNX 不做任何动作。SETNX 是『SET if Not eXists』(如果不存在,则 SET)的简写。3、代码...原创 2018-09-13 18:29:56 · 913 阅读 · 0 评论 -
Redis数据结构及使用场景
1、在Rredis 中一共有 5 种数据结构,都是key - value 形式存储String-------------字符串Hash--------------字典List ----------------列表Set-----------------集合Sorted Set-------有序集合2、五种结构各自的使用场景:1. String——字符串 String...原创 2018-11-20 23:12:14 · 1461 阅读 · 0 评论 -
Srping boot 整合redis集群
得益于springboot的自动配置功能,使得框架搭建变得更简单方便。仅需三步:①pom.xml文件引入依赖 ②pplication.properties1、代码结构2、pom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0...原创 2018-12-20 17:06:51 · 297 阅读 · 0 评论 -
选redis还是memcache,源码怎么说?一篇分析透彻的文章
memcache和redis是互联网分层架构中,最常用的KV缓存。不少同学在选型的时候会纠结,到底是选择memcache还是redis。画外音:不鼓励粗暴的实践,例如“memcache提供的功能是redis提供的功能的子集,不用想太多,选redis准没错”。虽然redis比memcache更晚出来,且功能确实也更丰富,但对于一个技术人,了解“所以然”恐怕比“选择谁”更重要一些。...转载 2019-03-04 23:37:31 · 234 阅读 · 0 评论 -
linux下redis集群安装
一、基本环境 1、服务器Linux系统---CentOS 7.0.1406 ; 2、所装Redis版本redis-4.0.12; 3、连接Linux工具 Xshell 或者sercure-CRT; 4、Redis集群:三台服务器,三主三从,每台服务上一主一从;主对应从分别在不同机器上,做到高可用...原创 2019-05-26 00:01:28 · 831 阅读 · 0 评论 -
基于redis分布式锁_代码实现
1、工具类实现redis分布式锁说明,代码可以封装在工具jar中,方便各系统引用。import com.myfutech.common.util.constant.RedisPrefix;import lombok.extern.slf4j.Slf4j;import org.springframework.data.redis.connection.RedisStringComma...原创 2019-06-12 10:50:14 · 2912 阅读 · 7 评论 -
redis伪集群命令整理_可整理为脚本
1、清除持久化和历史集群节点信息rm -rf /opt/pseudoCluster/6371/bin/appendonly.aofrm -rf /opt/pseudoCluster/6371/bin/dump.rdbrm -rf /opt/pseudoCluster/6371/bin/nodes.confrm -rf /opt/pseudoCluster/6372/bin/appendo...原创 2019-07-31 16:10:40 · 265 阅读 · 0 评论 -
redis安装与集群
redis3.2.9集群部署1.注意事项1.1不支持多键操作Redis 集群不支持那些需要同时处理多个键的 Redis 命令, 因为执行这些命令需要在多个 Redis 节点之间移动数据, 并且在高负载的情况下, 这些命令将降低 Redis 集群的性能, 并导致不可预测的行为。1.2集群大小的伸缩这种将哈希槽分布到不同节点的做法使得用户可以很容易地向集群中添加或者删除节点。 比如说:如果用户将新节点...原创 2018-07-13 23:20:46 · 353 阅读 · 0 评论