【Redis】
文章平均质量分 77
Rdis学习使用分享
码农爱java
好记性不如烂笔头,记录技术点滴,保持热爱。come on!
展开
-
Spring Boot 整合 Redis 集群详解
分析结果,我们发现出现了一串字符串 “\xac\xed\x00\x05t\x00\x10”,这串字符串明显不是我们想要看到的,难道是 Redis 集成又出问题了吗,使用代码获取了缓存字符串,发现并没有这串奇奇怪怪的字符串,那是怎么回事呢?以上配置,会自动由 Spring Boot 自动装配,不需要再配置类,Spring Boot 会自动把这些配置参数加载后实例化连接池。本篇简单分享了 Spring Boot 项目集成 Redis 过程中可能会需要的一些问题,希望能够帮助到有需要的朋友。原创 2024-04-13 10:11:19 · 1376 阅读 · 0 评论 -
Spring boot 整合 Redis 报错解决 [threw exception; nested exception is java.lang.NoClassDefFoundError]
前言:在对一个 Spring boot 项目集成 Redis 的时候,按部就班的进行了配置,但是启动就报错了,开始就翻车,一脸懵逼,话不多说,下面进行场景还原。pom 文件依赖引入如下: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> &原创 2024-04-06 13:45:04 · 875 阅读 · 0 评论 -
Redis--不可不知的热门面试题
ASK和MOVED都是对客户端的重定向控制,但是有着本质的区别,ASK重定向说明集群正在进行slot数据迁移,客户端无法知道什么时候 迁移完成,因此只能是临时性的重定向,客户端不会更新slots缓存,但是MOVED重定向说明键对应的槽已经明确指定到新的节点,因此需 要更新slots缓存。如有不正确的地方请各位指出纠正。原创 2024-03-06 09:12:52 · 941 阅读 · 0 评论 -
Redis--分布式锁详解及应用
分布式锁,顾名思义,就是分布式系统中使用的锁,在单体应用中我们使用synchronized、ReentrantLock来解决线程时间的共享资源的访问问题,而在分布式系统中,资源贡献问题已经由线程之间的竞争演变到了进程之间的竞争,分布式锁就是接近分布式系统中多进程之间的共享资源的访问问题。多进程可见,且互斥。具备高可用,高性能,具备良好的容错性。非阻塞的模式,如果没有获取到锁,要及时返回获取锁失败。具备锁失效机制,防止死锁的发生。加锁和释放锁必须是同一个客户端。基于MySQL实现分布式锁。原创 2024-03-05 09:30:00 · 1031 阅读 · 0 评论 -
Redis--线程模型详解
IO多路复用技术是一种处理并发IO操作的技术,核心是让单个线程去监视多个连接,一旦某个连接触发了读、写事件,就去通知应用程序,去处理这个链接,传统的IO模型中,会为每一个连接开启一个线程处理其IO事件,这种模型系统开销大,资源消耗高,IO多路复用通常是通过调用系统的 select poll epoll 来监视IO事件。原创 2024-03-03 17:03:02 · 540 阅读 · 0 评论 -
Redis--内存回收机制详解
众所周知Redis之所以性能高是因为数据都存在内存中,内存是很宝贵的,Redis的内存回收机制本质就是处理达到过期时间的key-value,以及当内存到达最大使用值时候触发的内存淘汰策略。原创 2024-03-02 22:53:28 · 1141 阅读 · 0 评论 -
Redis--持久化机制详解
Redis持久化是将内存的数据持久化到磁盘上,防止Redis宕机或者断点的时候内存中的数据丢失,把内存中的数据写入到磁盘的过程叫持久化。原创 2024-03-02 22:52:20 · 1115 阅读 · 0 评论 -
Redis--事务机制的详解及应用
Redis事务就是将一系列命令包装成一个队列,在执行时候按照添加的顺序依次执行,中间不会被打断或者干扰,在执行事务中,其他客户端提交的命令不可以插入到执行事务的队列中,简单来说Redis事务就是一次性、顺序性、排他性的执行一些列命令。取消watch命令监视的key,如果再执行unwatch命令之前,已经执行了exec或者discard命令,那就无需执行unwatch命令了。总体来说Redis事务在实际业务中使用较少,且Redis事务不支持回滚,需要谨慎使用。如有不正确的地方请各位指出纠正。原创 2024-03-01 11:10:41 · 986 阅读 · 0 评论 -
Redis数据类型--布隆过滤器类型详解及应用
概述:布隆过滤器(Bloom Filter)是 1970 年由布隆提出的,Redis 4.0版本已插件的形式引入到Redis中,布隆过滤器是一种占用空间非常小的概率数据结构,效率高,有一定的误判率,而且无法删除元素,主要用于去重场景。Redis无论什么数据类型,存储的时候都是以键值对key-value形势存储,并且所有的key都是String类型,本文讨论的数据类型是value的数据类型。如有不正确的地方请各位指出纠正。原创 2024-03-04 09:30:00 · 443 阅读 · 0 评论 -
Redis数据类型--HyperLogLog类型详解及应用
数据结构Redis无论什么数据类型,存储的时候都是以键值对key-value形势存储,并且所有的key都是String类型,本文讨论的数据类型是value的数据类型。Hyperloglog概述:Hyperloglog数据类型是Redis 2.8.9版本引入的,是用来做数据基数计算的,因为做基数计算,不保存原始数据,故占用内存很少,但有一定的误差,标准是误差0.81%,适用于对数据准确度要求不是函告的场景。什么是基数?基数就是元素不重复的个数,比如有数据集合{1,2,4,2,5,6,5},去重后{1原创 2024-03-01 09:30:00 · 345 阅读 · 0 评论 -
Redis数据类型--GEO类型详解及应用
由于经纬度由经度和纬度组成,而Sorted Set中的value值是float类型,则需要把经纬度最终转换为一个value值,需要对经纬度进行编码,GEO哈希编码的实现原理就是分别对经度和纬度进行编码,再将经纬度的编码合成一个最终的编码,将最终生成的编码值存入value。Redis无论什么数据类型,存储的时候都是以键值对key-value形势存储,并且所有的key都是String类型,本文讨论的数据类型是value的数据类型。如有不正确的地方请各位指出纠正。原创 2024-02-29 09:30:00 · 431 阅读 · 0 评论 -
Redis数据类型--ZSet类型详解及应用
概述:ZSet集合是一种有序不重复的数据结构,对比Set集合多了一个排序属性(分数:score),集合的元素按分数递增的顺序排序,分数相同则按字典顺序排序,这里的不重复指的是成员不重复,分数可以重复。Redis无论什么数据类型,存储的时候都是以键值对key-value形势存储,并且所有的key都是String类型,本文讨论的数据类型是value的数据类型。skiplist是一种可以快速查找的有序数据结构,其本质还是链表,它通过维护多级索引来实现快速查找,跳表的查找复杂度就是 O(logN)。原创 2024-02-28 09:30:00 · 1319 阅读 · 2 评论 -
Redis数据类型--Set类型详解及应用
如果我们的intSet使用的是int16_t类型的编码,此时新增一个元素类型int32_t,此时整数集合就要升级,先把contents [] 扩展为int32_t,然后再把新元素加入到intSet中,升级过程中是有序的,且是在原来的数组上操作。原创 2024-02-27 09:30:00 · 1733 阅读 · 0 评论 -
Redis数据类型--List类型详解及应用
概述:list类型可以存储一个有序的字符串列表,为了方便理解我把他类比于于Java中的LinkedList(双向链表),既然是链表,那就可以链表两端快速插入或删除,因为是双向链表结构,就注定了查询较慢。Redis无论什么数据类型,存储的时候都是以键值对key-value形势存储,并且所有的key都是String类型,本文讨论的数据类型是value的数据类型。如有不正确的地方请各位指出纠正。原创 2024-02-26 09:15:00 · 2113 阅读 · 0 评论 -
Redis数据类型--Hash类型详解及应用
*概述:**hash叫散列类型,hash的键是一个String类型,value是一个键值对集合,为了方便理解,我把他类比为Java中的双层Map结构。hash类型的操作命令和String类型有着明显区别,hash类型都有一个h前缀,表示操作的是hash类型,而且一般也多了一个filed字段,这跟hash类型的数据结构有关系。Redis无论什么数据类型,存储的时候都是以键值对key-value形势存储,并且所有的key都是String类型,本文讨论的数据类型是value的数据类型。原创 2024-02-23 22:00:10 · 1124 阅读 · 0 评论 -
Redis数据类型--String类型详解及应用
因为Redis是使用C语言实现的,C语言中空间分配是一个开销比较大的操作,Redis作为一个高性能的缓存数据库,对于性能要求十分高, 且会有频繁的修改操作,如果每次修改修改字符串都要重新分配内存,这样会对性能影响很大,那我们多出一块空间,就会省掉内存重新分配的工作,这就是free存在的意义,也叫空间预分配。Redis无论什么数据类型,存储的时候都是以键值对key-value形势存储,并且所有的key都是String类型,本文讨论的数据类型是value的数据类型。如有不正确的地方请各位指出纠正。原创 2024-02-25 10:56:46 · 352 阅读 · 0 评论 -
什么是Redis?Redis的应用场景?
Redis是一款,是一种Key-Value的存储系统,支持丰富的数据类型,如:String、list、set、zset、hash等。原创 2024-02-21 17:47:24 · 347 阅读 · 0 评论 -
缓存击穿、缓存雪崩、缓存穿透的区别及解决方案?
在设置缓存过期时间的时候,使用了相同的过期时间,导致缓存在某个时间段集中过期,而恰好在该时间有超高并发访问,因缓存全部过期了,请求全部被转发到数据库,数据库压力过大发生雪崩。对于一些设置了过期时间的key,如果这些key刚好在某个时间点被超高并发访问,而恰好这个时间点这些key过期了,这时候请求会直接穿过缓存,请求到数据库,导致数据库崩溃。设计缓存失效时间的时候,让失效时间分算开,可以在原有的失效时间上加一个比较小的随机值,这样就可以让失效时间分算开,避免集体失效发生雪崩。原创 2024-02-07 17:49:42 · 326 阅读 · 1 评论