Redis
文章平均质量分 67
Crystalqy
这个作者很懒,什么都没留下…
展开
-
Redis源码解析 - eventloop(redis调度的核心)
相信大家在很多关于Redis的文章里面都看过一句话:redis是单进程的,所以它不用考虑那么多多进程编程带来的麻烦。这话其实不完全正确。如果你读过Redis源码,你肯定知道,Redis存在一个主进程,同时还会有多个子进程。只是它的子进程通常是用于处理某个临时性的任务(比如RDB持久化过程、AOF的rewrite、主备之间的全同步等等,都是比较耗时的任务),一旦任务处理完就销毁了。今天,我们要讨论的问题是,在这个主进程里面,它的调度核心 - eventloop。写过C语言的都清楚,任何一个C语言程序的转载 2020-12-05 14:51:39 · 323 阅读 · 0 评论 -
增强Spring @CacheEvict实现key模糊匹配清除
系统中集成了Spring cache 使用@CacheEvict进行缓存清除,@CacheEvict可以清除指定的key,同时可以指定allEntries = true清空namespace下的所有元素,现在遇到一个问题使用allEntries = true清空namespace的值只能是常量,但是我现在需要将缓存根据租户的唯一TelnetID进行分离,这就导致allEntries = true不能使用了,否则一旦触发清除缓存,将会导致全部的缓存清空,而我只想清空当前租户的缓存,熟悉re...原创 2020-12-05 14:47:41 · 26340 阅读 · 9 评论 -
硬核!15张图解Redis为什么这么快
作为一名服务端工程师,工作中你肯定和 Redis 打过交道。Redis为什么快,这点想必你也知道,至少为了面试也做过准备。很多人知道Redis快仅仅因为它是基于内存实现的,对于其它原因倒是模棱两可。那么今天就和小莱一起看看:基于内存实现这点在一开始就提到过了,这里再简单说说。Redis 是基于内存的数据库,那不可避免的就要与磁盘数据库做对比。对于磁盘数据库来说,是需要将数据读取到内存里的,这个过程会受到磁盘 I/O 的限制。而对于内存数据库来说,本身数据就存在于内存里,也就没有...转载 2020-10-26 15:21:54 · 152 阅读 · 0 评论 -
Redis五大数据结构的操作
Redis五大基本数据结构字符串 string 哈希类型 hash 列表类型 list 集合类型 set 有序集合类型 sortedset基本操作字符串 string存储 set key value 例:set username tom 获取 get key 例:get username 删除 del key 例:del username如下图所示:哈希类型 hash存储 hset key field value 例:hset user username to转载 2020-08-24 13:14:44 · 152 阅读 · 0 评论 -
Redis为什么又引入了多线程?难道作者也逃不过“真香定理”?
相信你一定不止一次见过Redis是单线程模式,不过说实话那只是个老版本,这个问题是一位老哥的大厂面试题,跟我分享了一下。想着自己就知道redis6.0以前一直都是单线程,到了6的版本才加入了多线程,还不是很清楚,在多方打听并且搜索之下总结了这篇文章。一、问题概述Redis 6.0 之后的版本抛弃了单线程模型这一设计,原本使用单线程运行的 Redis 也开始选择性使用多线程模型,乍一看Redis的作者这么牛,也逃不过“真香定律”,仔细想想,这个问题其实可以拆分,拆分为两个主要的问题:(1)为什转载 2020-08-21 10:14:33 · 248 阅读 · 0 评论 -
Redis集群介绍
Redis集群介绍Redis 集群是一个提供在多个Redis间节点间共享数据的程序集。Redis集群并不支持处理多个keys的命令,因为这需要在不同的节点间移动数据,从而达不到像Redis那样的性能,在高负载的情况下可能会导致不可预料的错误.Redis 集群通过分区来提供一定程度的可用性,在实际环境中当某个节点宕机或者不可达的情况下继续处理命令. Redis 集群的优势:自动分割数...转载 2019-06-19 15:43:57 · 211 阅读 · 0 评论 -
Spring Boot 2.0+使用Redis做缓存,@Cacheable注解的unless参数详解
需求概述在Spring boot 中,用Redis作为缓存,在指定方法上使用@Cacheable注解,并且在缓存时,排除特定返回值结论@Cacheable中,unless参数的作用是:函数返回值符合表达式条件的,veto(否决)、不缓存换句话说,函数返回值符合条件的排除掉、只缓存其余不符合条件的高效一些,我先把结论写在前面。感兴趣的朋友可以继续阅读具体的论证过程。部分代码实现具体...转载 2019-06-20 09:15:35 · 3122 阅读 · 0 评论 -
Redlock:Redis分布式锁最牛逼的实现
普通实现说道Redis分布式锁大部分人都会想到:setnx+lua,或者知道set key value px milliseconds nx。后一种方式的核心实现命令如下:- 获取锁(unique_value可以是UUID等)SET resource_name unique_value NX PX 30000- 释放锁(lua脚本中,一定要比较value,防止误解锁)if red...原创 2019-06-24 13:43:13 · 16872 阅读 · 0 评论 -
springboot 2.x redis 实现消息队列
一. 常用消息队列工具 目前常用的消息队列大概有三种类型,RabbitMQ等AMQP系列, Kafka, Redis等kev value系列,它们的使用场景分别是: 1.RabbitMQ: 相对重量级高并发的情况,比如数据的异步处理 任务的串行执行等. 2.Kafka: 基于Pull的模式来处理,具体很高的吞吐量,一般用来进行 日志的存储和收集. 3.Redis: 轻...原创 2019-07-20 16:22:38 · 7532 阅读 · 0 评论