
Redis
文章平均质量分 76
yyangqqian
这个作者很懒,什么都没留下…
展开
-
Redis 之缓存和DB一致性解决
文章目录缓存数据一致性模式双写模式失效模式缓存数据一致性-解决方案缓存数据一致性模式双写模式失效模式上面两种方案在并发量大的情况下,可能会导致脏数据,为缓存设置过期时间后,数据过期下一次查询会触发更新缓存。缓存数据一致性-解决方案无论是双写模式还是失效模式,都会导致缓存的不一致问题。即多个实例同时更新会出事。怎么办?1、如果是用户纬度数据(订单数据、用户数据),这种并发几率非常小,不用考虑这个问题,缓存数据加 上过期时间,每隔一段时间触发读的主动更新即可。2、如果是菜单,商品介绍等基础原创 2022-03-26 13:56:01 · 1591 阅读 · 1 评论 -
Redis 之Redisson客户端
概述Redisson 是架设在 Redis 基础上的一个 Java 驻内存数据网格。充分 的利用了 Redis 键值数据库提供的一系列优势,基于 Java 实用工具包中常用接口,为使用者 提供了一系列具有分布式特性的常用工具类。使得原本作为协调单机多线程并发程序的工 具包获得了协调分布式多机多线程并发系统的能力,大大降低了设计和研发大规模分布式 系统的难度。同时结合各富特色的分布式服务,更进一步简化了分布式环境中程序相互之间 的协作。官方文档SpringBoot使用Redisson1、导入Redis原创 2022-03-22 22:41:42 · 1787 阅读 · 0 评论 -
Redis 之原子验证令牌
//1、验证令牌[令牌的对比和删除必须保证原子性]// 0令牌失败 - 1删除成功String script = "if redis.call('get',KEYS[1]) == ARGV[1] then return redis.call('del',KEYS[1]) else return 0 end";//redisKey:token保存在Redis的key//tokenValue:需要验证的token//原子验证令牌和删除令牌Long result = redisTemplate.原创 2021-08-28 11:41:20 · 332 阅读 · 1 评论 -
Redis 之缓存穿透、缓存击穿、缓存雪崩
文章目录缓存穿透解决方案布隆过滤器缓存空对象缓存雪崩解决方案保证缓存层服务高可用性依赖隔离组件为后端限流并降级数据预热缓存并发分布式锁缓存穿透缓存穿透是指查询一个一定不存在的数据,由于缓存不命中,接着查询数据库也无法查询出结果,因此也不会写入到缓存中,这将会导致每个查询都会去请求数据库,造成缓存穿透。解决方案布隆过滤器对所有可能查询的参数以hash形式存储,在控制层先进行校验,不符合则丢弃,从而避免了对底层存储系统的查询压力。缓存空对象当存储层不命中后,即使返回的空对象也将其缓存起来,同时会原创 2020-12-14 17:45:16 · 319 阅读 · 0 评论 -
Redis 之使用布隆过滤器解决缓存穿透
文章目录如何判断一个元素是不是在一个集合里什么是布隆过滤器布隆过滤器的原理布隆过滤器应用的经典场景布隆过滤器优势和劣势使用GooleGuava实现BloomFilter如何判断一个元素是不是在一个集合里一般想到的是将集合中所有元素保存起来,然后通过比较确定。链表、树、散列表(哈希表)等等数据结构都是这种思路,但是随着集合中元素的增加,需要的存储空间越来越大;同时检索速度也越来越慢,检索时间复杂度分别是O(n)、O(log n)、O(1)。为了解决存储空间和检索速度慢的问题,可以使用布隆过滤器数据结构。原创 2020-12-14 17:19:03 · 417 阅读 · 0 评论 -
Redis 之主从复制
文章目录主从复制概述主从复制主从复制的作用如何使用主从复制建立复制断开复制主从复制的实现原理连接建立阶段(即准备阶段)数据同步阶段命令传播阶段全量复制和部分复制全量复制部分复制总结主从复制概述主从复制主从复制是指将一台Redis服务器的数据,复制到其它的Redis服务器。前者称为主节点(master),后者称为从节点(slave);数据的复制是单向的,只能由主节点到从节点。默认情况下,每台Redis服务器都是主节点,且一个主节点可以有多个从节点(或没有从节点),但一个从节点只能有一个主节点。主从复原创 2020-11-17 14:12:12 · 258 阅读 · 0 评论 -
Redis 之内存管理
内存使用统计命令: info memory属性说明:used_memory:Redis分配器分配的内存总量(单位是字节),也就是内部存储的所有数据内存占用量。used_memory_human只是显示更友好。used_memory_rss:从操作系统的角度显示Redis进程占用的物理内存总量。mem_fragmentation_ratio:内存碎片比率,该值是used_memory_rss / used_memory的比值。当mem_fragmentation_ratio>1时,说明us原创 2020-11-13 10:35:54 · 1466 阅读 · 0 评论 -
Redis 之Jedis和Lettuce客户端
Lettuce 和 Jedis 的定位都是Redis的Client。Jedis:当多线程使用同一个连接时,是线程不安全的。所以要使用连接池,为每个Jedis实例分配一个连接。Lettuce:基于Netty的,连接实例(StatefulRedisConnection)可以在多个线程间并发访问,因为StatefulRedisConnection是线程安全的,所以一个连接实例(StatefulRedisConnection)就可以满足多线程环境下的并发访问,当然这个也是可伸缩的设计,一个连接实例不够的情况也可原创 2020-08-11 10:13:12 · 782 阅读 · 0 评论 -
Redis 之RDB、AOF、混合持久化
文章目录Redis持久化持久化之RDB手动触发自动触发持久化之AOFRedis持久化持久化之RDBRDB是Redis默认持久化方式,默认情况下执行shutdown命令时,如果没有开启AOF持久化功能则自动执行bgsave进行RDB持久化数据。RDB是通过快照方式完成的,当符合一定条件时Redis会自动将内存中的数据进行快照并且存储到硬盘上。手动触发手动触发分别对应save和bgsave命令。save:阻塞当前Redis服务器,直到RDB过程完成为止,对于内存 比较大的实例会造成长时间阻塞,线原创 2020-07-13 10:51:40 · 1069 阅读 · 0 评论 -
Redis 之五种数据类型简介
Redis 命令参考Redis 命令参考Redis数据类型Redis 支持 5 种数据类型:String(字符串),Hash(哈希),List(列表),Set(集合),Zset(SortedSet:有序集合)全局命令查看所有键:keys *键总数:dbsizedbsize命令在计算键总数时不会遍历所有键,而是直接获取Redis内置的键总数变量,所以dbsize命令的时间复杂度是O(1)。而keys命令会遍历所有键,所以它的时间复杂度是O(n),当Redis保存了大量键时,线上环境 禁止使用。原创 2020-06-30 16:20:27 · 506 阅读 · 0 评论 -
Redis 之面试
文章目录Redis有哪些数据结构?Redis有哪些数据结构?原创 2020-04-13 14:34:10 · 521 阅读 · 0 评论 -
Redis 之Jedis客户端
文章目录POM依赖Jedis使用案例JedisPool连接池使用案例Jedis托管github地址:https://github.com/xetorthio/jedisPOM依赖<dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId>...原创 2020-02-09 12:53:28 · 187 阅读 · 0 评论 -
Redis 之lettuce客户端
Redis篇之操作、lettuce客户端、Spring集成以及Spring Boot配置原创 2019-05-30 18:17:38 · 936 阅读 · 0 评论 -
Redis4.0 内存信息解析
$ redis-cli -h 172.25.200.118 -p 6394 info memory由 Redis 分配器分配的内存总量,包含了redis进程内部的开销和数据占用的内存,以字节(byte)为单位used_memory:11605392更直观的单位展示分配的内存总量。used_memory_human:11.07MRedis进程占据操作系统的内存(单位是字节),与top及ps...原创 2019-05-27 15:06:00 · 1663 阅读 · 0 评论 -
Redis 慢查询分析
慢查询的两个配置参数slowlog-log-slower-than:预设阀值,它的单位是微秒(1秒=1000毫秒=1000000微秒),默认值是10000,(值为0:记录所有命令,值小于0:任何命令都不会记录)slowlog-max-len:最多存储慢查询命令的条数,Redis使用了一个列表来存储慢查询日志,是一个先进先出的队列。用config set命令动态修改:config set s...原创 2019-05-27 10:07:20 · 435 阅读 · 0 评论 -
Redis 之单机、主从、集群、哨兵部署
安装:yum -y install cpp binutils glibc glibc-kernheaders glibc-common glibc-devel gcc make gcc-c++ libstdc++-devel tcltar -xvf redis-3.0.2.tar.gzcd redis-3.0.2makemake install配置:cp redis.conf /e...原创 2019-04-11 23:37:31 · 1229 阅读 · 0 评论 -
Redis 之实现分布式锁
文章目录什么是分布式锁Redis 分布式锁什么是分布式锁Java 多线程情况下访问共享资源,锁是一种线程同步机制,锁可以限制某一时刻只有一个线程操作共享资源。这是对于单进程应用而言的,所有线程都在同一个 JVM 进程里运行,使用 Java 提供的锁机制可以对共享资源进行同步的作用。如果在分布式环境下,一个应用程序的多个实例会分别运行在多个机器上的 JVM 进程中,这时多个线程也会分别在多个 J...原创 2019-04-16 11:33:12 · 982 阅读 · 0 评论