redis
文章平均质量分 84
redis
氵奄不死的鱼
日拱一卒,功不唐捐
展开
-
Redission作为分布式锁使用与原理
比如:如果上锁成功了,还没释放呢,服务宕机了,这把锁将永驻,服务起来后再去抢占锁的时候发现已经有锁了,无法抢占,但是这把锁又永远得不到释放,死锁了。所以记得要用setnx设置过期时间,或者set+expire放到lua里进行设置。为什么需要续期?假设锁设置了3s,但是业务代码执行了4s还没执行完,那锁过期了,其他线程在请求接口的时候又加上了锁(redis里又setnx值了),这时候不就并发执行了吗?相当于还是线程不安全!原创 2023-05-13 14:24:49 · 1570 阅读 · 0 评论 -
Redisson看门狗原理
redission锁原理scheduleExpirationRenewal 中会调用renewExpiration。这里我们可以看到是启用一个timeout定时,去执行延期动作,原创 2023-05-13 14:18:21 · 2160 阅读 · 0 评论 -
什么是Redisson
Redis支持多种语言客户端,支持的客户端可以从官网查看,这里列举一系列常见的客户端:Redis采用单线程方式处理多个客户端连接,作为程序开发者应该了解 Redis 服务端和客户端的通信协议,以及主流编程语言的 Redis 客户端使用方法,同时还需要了解客户端管理的相应 API 以及开发运维中可能遇到的问题。原创 2023-05-07 16:43:53 · 579 阅读 · 0 评论 -
Redis过期策略和内存淘汰策略
redis作为内存数据库,虽然提供了远快与关系型数据库IO的速度,但是内存显然是珍贵的 ,因此在使用redis作为时要注意缓存的数据量,并且设置过期时间,保证不被使用到的数据被淘汰。原创 2023-02-09 11:44:51 · 286 阅读 · 0 评论 -
Redis作为缓存应用场景分析
Redis的应用场景非常广泛。虽然Redis是一个key-value的内存数据库,但在实际场景中,Redis经常被作为缓存来使用,如面对数据高并发的读写、海量数据的读写等。原创 2023-01-16 16:15:08 · 1594 阅读 · 0 评论 -
redis Lettuce客户端
与Jedis相比,Lettuce则完全克服了其线程不安全的缺点:Lettuce是一个可伸缩的线程安全的Redis客户端,支持同步、异步和响应式模式。多个线程可以共享一个连接实例,而不必担心多线程并发问题。它基于优秀Netty NIO框架构建,支持Redis的高级功能,如Sentinel,集群,流水线,自动重新连接和Redis数据模型。Jedis在实现上是直接连接的redis server,如果在多线程环境下是非线程安全的,这个时候只有使用jedis pool连接池,为每个Jedis实例增加物理连接。原创 2022-09-17 16:11:07 · 940 阅读 · 0 评论 -
redis分布式锁
为什么使用分布式锁web应用中防止特别事务并发,或者需要保证业务操作顺序在事务中,redis锁和数据库读写共同作用,达到线程安全例如事务切面下事务开始//方法开始redis.lockselect * from aupdate aredis.unlock//方法结束事务提交那么可能就会发生事务A先占有锁并执行,执行完毕后释放锁,但是未提交,此时事务B也开始执行了,但是注意由于事务A未提交,a上的写锁未解锁,B事务依然卡在select * from a,因此依然达到了串行的效果最简易原创 2022-03-15 18:53:33 · 1657 阅读 · 0 评论 -
redis数据结构
SDS动态字符串SDS数据结构分别记录了free未使用内存,总长度,和数组,数组就是c语言的字符数组,最后依然为\0结尾,但其实并没有什么用,因为有记录长度,可以根据长度进行读取数据SDS的优势1.获取数组长度常数时间复杂度c语言数组,依赖结尾\0判断长度,每次获取长度都需要遍历数组。而sds本身属性就记录了长度,直接取出就行了2.防止缓冲区溢出在使用C语言concat函数时 ,需要程序员自己保证内存空间是足够,否则就会溢出sds的api,可以保证拼接前,将buf数组扩容,因此原创 2022-03-05 18:01:24 · 926 阅读 · 0 评论