
Redis
文章平均质量分 90
第七个香粽
学无止境~
展开
-
Redis - 分布式锁和事务
使用命令保证加锁操作的原子性,同时设置过期时间。锁的过期时间要大于操作共享资源的时间,避免锁被提前释放。每个线程加锁的时候,需要判断释放的锁是否和加锁的设置值一致,避免自己的锁被别的线程释放。可以塞入uuid作为value。释放锁可以使用Lua脚本,保证操作的原子性基于多个Redis节点的分布式锁,可以使用Redlock,一般是加锁超过半数的节点,并且加锁耗时不超过锁的有效期就认为操作成功。Redlock释放锁的时候,要对所有节点都释放。...原创 2022-08-13 17:00:42 · 1851 阅读 · 0 评论 -
Redis 缓存相关 - Reids 缓存淘汰机制和缓存异常问题处理
对于Redis优先使用策略。把最近最常访问的数据留在缓存中,提升应用的访问性能。尤其是那些有明显的冷热数据划分的应用缓存。否则,倘若数据没有明显的冷热划分,可以使用策略,随机淘汰。Redis通过淘汰机制将需要淘汰的数据进行删除的时候,无论这个数据在当前状态下是否是干净的,它都会删除。干净的数据:和数据库(比如Mysql)中的数据保持一致。脏数据:和数据库中的数据不一致。不是最新的数据。因此在使用Redis。......原创 2022-08-13 12:49:35 · 489 阅读 · 0 评论 -
Redis 性能影响 - 内存碎片和缓冲区
通过命令查看内存的使用情况。,如果超过了1.5,建议可以考虑进行内存碎片的清理了。内存碎片的清理可以开启自动清理内存碎片机制,是主线程执行的,会发生阻塞。需要合理配置对应的参数,保证Redis的高性能。,如果值小于1,说明物理内存不够真实数据的保存了,此时机器应该开启了swap机制,会导致Redis性能的严重下降。应该考虑增加机器的内存配置了,或者搞集群。文章提到了4个缓冲区。输入缓冲区:保存客户端发送的命令。输出缓冲区:保存服务端返回的数据。复制缓冲区:用于全量复制时,保存新写入的命令。......原创 2022-08-12 17:21:01 · 3906 阅读 · 0 评论 -
Redis 性能影响 - 异步机制和响应延迟
上文说了不少,那么在发现Redis变慢的时候,可以按照以下几个步骤来排查问题。1.使用slowlog查看是否存在一些复杂度比较高或全量查询的命令(sort,suion等)。用分批查询替代全量查询。复杂命令可以放到客户端做。2.排查bigkey。./redis-cli --bigkeys -a 你的Redis密码结果如下:这时候就可以优化业务了,避免存储bigkey。倘若Redis版本在4.0以后,可以开启lazy-free机制。3.给key增加一个随机的过期时间。避免大量key集中过期。...原创 2022-08-10 18:32:41 · 3765 阅读 · 0 评论 -
Redis系列文章导航
性能相关:(待更新)原创 2022-08-08 20:22:22 · 256 阅读 · 0 评论 -
Redis - 时间序列数据类型的保存方案和消息队列实现
但是,这样的存储是针对于一个时间戳而言的,而实际环境中,往往需要记录非常多的这样的数据,甚至可能需要对这种数据进行统计、聚合、范围查找等操作。虽然我们用了两个数据类型来保存相同的一份数据,但是整体的内存消耗,是比全部用。我们应该保证两个数据结构中的数据是完全一样的,不能出现哪个结构中的数据有少或者不一致的情况。对于消息的重复消费问题,我们只需要提供一个唯一标识,然后消费的时候做判断即可。但是仅仅这样是无法满足数据的一些范围查询或者操作的。但是光凭这样的操作并不满足一个合格的消息中间件具备的条件。......原创 2022-08-08 20:13:39 · 1573 阅读 · 1 评论 -
Redis - String内存开销问题以及基本/扩展数据类型的使用
中类型保存值的时候,有两个选择:可见,它本身并不傻,如果在类型中,存储的值是一个整数,它会自动进行编码。而保存的数据中若包含了字符,即采用简单动态字符串结构体来保存。,即。低版本的结构如图(版本以下):总共有三个部分:对于的类型而言,还涉及到结构。该结构体主要用于记录一些元数据记录(最后一次的访问时间,被引用的次数等等)包含了8个字节大小的元数据和8个字节大小的指针,共16字节。同时该结构体还指向实际的数据。如图:意思就是,每当往中插入一个类型的键值对后,就会构建出对于的结构(若是字符类型),以及一原创 2022-08-05 14:28:11 · 1257 阅读 · 2 评论 -
Redis - Redis主从数据一致性和哨兵机制
在这之前,主要复习了Redis的AOF日志还有RDB快照。它是高可用的一个重要保障,就是数据尽量少丢失。而高可用还有一点就是服务尽量少中断,那么这里就需要通过增加副本的冗余了。也就是Redis的主从架构了。到目前为止主要说了Redis主从库之间第一次建立连接:全量复制。因此建议一个Redis的实例不要太大,否则在RDB文件传输和创建的过程会比较耗时。同时避免只有一个主库和多个从库建立主从关系,可以建立主从从模式来缓解主库的压力。主从库基于长连接进行命令的传播。若主从库之间连接发生断开,Redis。.....原创 2022-08-02 18:56:38 · 3032 阅读 · 0 评论 -
Redis - 数据结构和持久化机制
Redis这块的复习,看的是蒋德钧老师的相关文章,主要是想Redis实战相关的一些理论知识和解决方案。Redis是一种典型的键值数据库,即Key-Value形式的一种存储关系。Redis是一种内存数据库,数据都保存在内存上。5种数据类型,6种数据结构。(左侧为数据类型,右侧为数据结构组成)String简单动态字符串。List双向链表+压缩列表。Hash压缩列表+哈希表。Set哈希表+整数数组。SortedSet跳表+压缩列表。RedisKey计算出的hash值相等Key的hash。.........原创 2022-07-29 16:47:44 · 641 阅读 · 0 评论