Redis
文章平均质量分 66
本人学习Redis或解决Redis相关问题的心得体会
Kom19
多多重复 百练成钢
展开
-
Redis的五种常用数据结构以及其底层实现
Redis中列表是用于存储多个有序的字符串的,这些字符串被称作元素,一个列表最多可以存储2^32 - 1个元素。这些元素是有序的,同时这些元素也是可以重复的。字符串作为Redis中最基础的数据结构,他存储的值可以是任何东西,可以是字符串,数字,二进制,但是字符串存储的值不能超过512M。相比较与集合,有序集合增加了分数,帮助集合来进行排序操作,提供了指定分数,元素范围查询,计算排名等等操作。在Redis中所有的数据都是以键值对的方式存储的,那么哈希在Redis中指的是值以键值对的方式进行存储。原创 2024-01-28 16:50:21 · 731 阅读 · 0 评论 -
解决Redis序列化乱码问题
如果我们使用原生的JDK序列化,那么当我们将数据存储到Redis中就会出现乱码的情况。为了解决这个问题我们需要重写RedisTemplate从而解决序列化乱码问题。添加完这个配置类以后再使用RedisTemplate就不会出现乱码的情况了。原创 2024-01-03 20:01:48 · 691 阅读 · 0 评论 -
Redis实现分布式锁
分布式锁是满足分布式环境或者集群环境下多进程可见并且互斥的锁,分布式锁的核心思想就是让,这样就能够锁住线程,让线程能够执行分布式锁满足一些条件:可见性/高性能/互斥/高可用/安全性。原创 2023-10-23 20:07:31 · 249 阅读 · 0 评论 -
Redis实现消息队列
消费者可以订阅一个或者多个Channel,从Channel中获取数据,当生产者向Channel发送数据的时候,所有的消费者都可以接收数据。但是使用list作为消息队列也有弊端 - 不能实现广播功能,只能单对单的进行消息队列。但是使用PubSub作为消息队列也有弊端 - 当消息堆积以后会造成消息的丢失。stream是Redis引入的新的消息队列,是功能比较完善的消息队列。可以从头部插入数据然后从尾部取出数据,从而实现消息队列的效果。当然我们也可以创建一个消息组,利用消息组来处理消息。下面来演示一下怎么使用。原创 2023-10-25 11:00:09 · 347 阅读 · 0 评论 -
Redis常见问题的解决方案(缓存穿透/缓存击穿/缓存雪崩/数据库缓存数据不一致)
加互斥锁或分布式锁:在访问热点数据时,可以引入互斥锁或分布式锁,保证只有一个线程去访问后端服务或数据库,其他线程等待结果。虽然还是会有线程安全问题 比如 假设此时缓存刚好失效了 线程1 查询缓存失败 从数据库读取了旧数据 还没写入缓存的时候 被调度到 线程2执行。 对于一些热点数据,可以将其设置为永不过期,或者设置一个较长的过期时间,确保热点数据在缓存中可用,减少因为过期而触发的缓存击穿。线程2操作完了以后执行线程1 线程1将读到的旧数据写入到缓存 此时九出现了缓存不一致。的 所以说可以忽略不记。原创 2023-10-22 20:06:57 · 671 阅读 · 0 评论