
Redis
文章平均质量分 86
Java技术债务
坚决不留下一个技术债务,欢迎关注:Java技术债务!
展开
-
Redis特殊数据结构
根据官网介绍:Bitmap 不是 Redis 中的实际数据类型,而是在 String 类型上定义的一组面向位的操作,将其视为位向量。由于字符串是二进制安全的块,且最大长度为 512 MB,它们适合用于设置最多 2^32 个不同的位。Bitmap 存储的是连续的二进制数字(0 和 1),通过 Bitmap, 只需要一个 bit 位来表示某个元素对应的值或者状态,key 就是对应元素本身。我们知道 8 个 bit 可以组成一个 byte,所以 Bitmap 本身会极大的节省储存空间。原创 2024-06-07 17:03:33 · 1290 阅读 · 1 评论 -
什么是布隆过滤器?如何使用?
布隆过滤器(英语:Bloom Filter)是1970年由布隆提出的。它实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中如果想判断一个元素是不是在一个集合里,一般想到的是将集合中所有元素保存起来,然后通过比较确定。链表、树、散列表(又叫哈希表,Hash table)等等数据结构都是这种思路。但是随着集合中元素的增加,我们需要的存储空间越来越大。同时检索速度也越来越慢,上述三种结构的检索时间复杂度分别为O(n),O(log n),O(1)。原创 2022-02-07 17:04:28 · 19750 阅读 · 5 评论 -
Redis 常见面试题
Redis 常见面试题文章目录概述什么是RedisRedis有哪些优缺点优点缺点为什么要用 Redis /为什么要用缓存为什么要用 Redis 而不用 map/guava 做缓存?Redis为什么这么快数据类型Redis有哪些数据类型Redis的应用场景优势持久化什么是Redis持久化?Redis 的持久化机制是什么?各自的优缺点?RDBAOF优缺点是什么?如何选择合适的持久化方式Redis持久化数据和缓存怎么做扩容?过期键的删除策略Redis的过期键的删除策略Redis key的过期时间和永久有效分别怎原创 2022-01-12 20:52:29 · 224 阅读 · 0 评论 -
redis主从复制
文章目录概念Redis 的复制分为全量同步和增量同步。Redis主从同步策略主从复制的特点主从复制的实现更多文章和干货请移驾公众号和个人网站概念主从复制:Redis虽然读取写入的速度都特别快,但是也会产生读压力特别大的情况。为了分担读压力,Redis支持主从复制,Redis的主从结构可以采用一主多从或者级联结构,Redis主从复制可以根据是否是全量分为全量同步和增量同步。下图为级联结构。通过数据复制,Redis 的一个 master 可以挂载多个 slave,而 slave 下还可以挂载多个 sla原创 2022-01-10 19:32:08 · 1428 阅读 · 0 评论 -
redis内存的淘汰机制
引入Redis是基于内存存储,常用于数据的缓存,所以Redis提供了对键的过期时间的设置,实现了几种淘汰机制便于适应各种场景。设置过期时间我们可以在设置键时设置expire time,也可以在运行时给存在的键设置剩余的生存时间,不设置则默认为-1,设置为-1时表示永久存储。清除过期Key的机制定期删除和惰性删除定期删除:默认每隔100ms随机抽取设置过期的key,检查是否过期。保证性能。缺点:会有很多过期key到时间没有被删除。惰性删除:定期删除没有被删除,主动去系统查询key才会被删除原创 2022-01-06 22:48:50 · 1432 阅读 · 0 评论 -
redis缓存如何保证数据一致性
问题的引入同时有请求A和请求B进行更新操作,那么会出现(1)线程A更新了数据库(2)线程B更新了数据库(3)线程B更新了缓存(4)线程A更新了缓存如果访问数据库后,不更新缓存,直接删除缓存,由下一个请求去缓存那么会出现如下情况:(1)如果你是一个写数据库场景比较多,而读数据场景比较少的业务需求,采用这种方案就会导致,数据压根还没读到,缓存就被频繁的更新,浪费性能。(2)如果你写入数据库的值,并不是直接写入缓存的,而是要经过一系列复杂的计算再写入缓存。那么,每次写入数据库后,都再次计算写入缓原创 2022-01-05 21:48:31 · 1209 阅读 · 0 评论 -
redis的缓存穿透、缓存雪崩、缓存击穿怎么搞?
文章目录1 概念2 解决办法3 更多文章和干货请移驾公众号和个人网站1 概念缓存穿透: 大量请求的key根本不存在于缓存中,请求直接落在了数据库上,没有经过缓存。缓存雪崩:同一时间内缓存大面积的失效,后面的所有请求会全部落在数据库上,造成数据库短时间内承受大量的请求而崩掉。缓存击穿:就是说某个 key 非常热点,访问非常频繁,处于集中式高并发访问的情况,当这个 key 在失效的瞬间,大量的请求就击穿了缓存,直接请求数据库,就像是在一道屏障上凿开了一个洞。2 解决办法缓存穿透参数校验缓存原创 2022-01-05 21:24:43 · 1126 阅读 · 0 评论 -
redis线程模型
1、线程模型redis 内部使用文件事件处理器 file event handler,它是单线程的,所以redis才叫做单线程模型。它采用IO多路复用机制同时监听多个 socket,将产生事件的 socket 压入内存队列中,事件分派器根据 socket 上的事件类型来选择对应的事件处理器进行处理。2、每秒万级别处理能力的原因(1)纯内存访问。数据存放在内存中,内存的响应时间大约是100纳秒,这是Redis每秒万亿级别访问的重要基础。(2)非阻塞I/O多路复用,Redis采用epoll做为I/原创 2022-01-04 22:41:11 · 1443 阅读 · 0 评论 -
Redis的常用数据结构和底层实现方式
文章目录Stringlisthashsetzset更多文章和干货请看公众号以及博客String存储方式key-value,可支持数字,性能高,用处微博数,粉丝数基本命令set key valueget keygetrange key start end #返回key中字符串值的从start到end的字符mget key1 key2 key3… #获取一个或多个key的值setex key seconds value #将值关联到key并且设置key的过期时间(以秒为单位)setnx原创 2022-01-03 22:33:08 · 1326 阅读 · 0 评论