
redis
文章平均质量分 77
衡与墨
福建98生人,爱好GO、Java、JS、TS、Python、Rust、C语言,前后端均精通,熟悉linux、docker、k8s使用,擅长Vue、Java Web开发、GO 微服务和web开发,兴趣广泛,爱好开源,目标是2025年前具有百万级别系统的架构师能力,我是一个追求纯粹的程序员,欢迎工作邀请
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
godis 运行原生redis命令
我们可能会遇到需要运行的某些命令在godis中不存在的情况,这个时候我们可以使用其原生的方式运行命令,为了方便使用,封装了一个方法,用于简化这个过程。需要注意的是,执行命令的返回结果返回的是interface{},需要对其进行解析成可读的实体结构。传递的参数logger是用来打印日志的:// RunRedisCmd 运行redis命令func RunRedisCmd(redis *godis.Redis, logger *log.Logger, cmd string, args ...string)原创 2022-05-01 10:50:29 · 695 阅读 · 0 评论 -
Redis是如何实现高性能的?
Redis作为应对高并发场景的利器,它是如何实现高性能的呢?IO多路复用传统对于并发情况,假如一个进程不行,那搞多个进程不就可以同时处理多个客户端连接了么?多进程是可以解决一些并发问题,但是还是有一些问题,上下文切换开销,线程循环创建,从PCB来回恢复效率较低。随着客户端请求增多,那么线程也随着请求数量直线上升,如果是并发的时候涉及到数据共享访问,有时候涉及到使用锁来控制范围顺序,影响其他线程执行效率。在学NIO之前得先去了解IO模型(1)同步阻塞IO(Blocking IO):即传统的IO模型转载 2022-05-01 10:26:53 · 828 阅读 · 0 评论 -
linux系统或者windows WSL安装redis最新版本
概述因为windows的最新版本redis已经在16年就停止更新了,目前最新的版本只到redis3,很多redis新增的特性都无法使用。例如redis5的stream,windows版本就没有。这篇文章通过使用wsl来为windows提供最新版本redis的支持,而免于去启动虚拟机的麻烦事了。主要安装的流程和linux上一般无异。1、下载redis打开 https://redis.io/download/ 查看可用版本。截至这篇文章写作时,redis目前的稳定版本是6,预计今年会更新7,目前还在原创 2022-04-27 18:58:33 · 1616 阅读 · 0 评论 -
redis实现消息队列的几种方式及其优劣
概述常用的消息队列有,rabbitMq、kafka、RocketMq、ActiveMq等。这些消息队列需要独立安装部署,作为一个中间件来提供服务,虽然有着高性能、高可靠的优点,但是额外部署这些中间件也会增加运维成本,和服务器成本。本篇文章探讨了一下如何使用redis实现消息队列。使用redis无需额外的部署,如果原先就有使用redis的话。此外redis更为轻量也更容易维护。但是redis实现消息队列有多种方案,这些方案有其优点也有其缺点,适用于不同的应用场景。以下从“实时性”、“可靠性”、“功能性”这原创 2022-04-27 18:45:56 · 19695 阅读 · 4 评论 -
java 实现的数据查询缓存通用模型——SPEL表达式支持(6)
收录于墨的2020~2021开发经验总结接续上文(java 实现的数据查询缓存通用模型——那些我在缓存模型中用到的工具类(5))7、SPEL表达式支持spel表达式,SpEL(Spring Expression Language),即spring 表达式语言,它是一种轻量的、灵活的语言,通过spring的解析工具进行解析。在前文中,我们搭建实现的数据查询缓存通用模型,是通过cacheKeyCreater的机制来生成key的,这种方式可以实现很高的定制化,但是也有个缺点,那就是要写的代码更多,也不够直原创 2021-07-13 11:37:54 · 564 阅读 · 0 评论 -
基于Redis实现的日志记录组件——超实用(5)前端页面和后端接口
收录于墨的2020~2021开发经验总结上一篇 基于Redis实现的日志记录组件——超实用(4)AOP和SPEL实现六、前端页面前端页面采用H5 + 原生js6语法写成,界面设计以简洁轻量实用为主。顶部是组件列表,列出了所有的日志组件,对每个组件都可以进行清空、选中、编辑。清空会清空redis里对应组件的日志。选中会将该组件的日志实时的在底下列出来。编辑可以修改组件的各项信息,修改保存之后就会实时应用。中间部分是日志的显示区间控制,和刷新频率。显示区间的索引和redis 的lrang原创 2021-07-12 12:39:11 · 460 阅读 · 0 评论 -
基于Redis实现的日志记录组件——超实用(4)AOP和SPEL实现
收录于墨的2020~2021开发经验总结上一篇 基于Redis实现的日志记录组件——超实用(3)核心类描述四、AOP实现以下是日志记录的核心切面代码:Slf4j@Aspect@Order(0) // 越小越先执行public class RedisLogOptAspect { @Resource private RedisLogSpelHandler redisLogSpelHandler; @Resource private RedisLogServi原创 2021-07-09 12:36:01 · 444 阅读 · 0 评论 -
基于Redis实现的日志记录组件——超实用(1)概述
1、概述该组件的开发目的,是试图制造一个,能够实时查阅的、高性能的、轻量级、易于使用的日志组件。在我们的系统开发中,日志无疑是极其重要的一环。没有日志,排查错误、分析用户使用情况、追溯业务事件就无从谈起。通常,Java web开发中,使用的日志一般是Slf4j。private final static Logger log = LoggerFactory.getLogger(ProductService.class);通过使用debug、info、warn、error等方法打印日志。并通过配置x原创 2021-06-30 21:10:48 · 981 阅读 · 1 评论 -
基于Redis实现的日志记录组件——超实用(2)类图和基本结构
收录于墨的2020~2021开发经验总结上一篇 基于Redis实现的日志记录组件——超实用(1)概述2、类图和基本结构其中 RedisComponent是日志组件类,用于存储组件信息:RedisLogger用于操作redis,进行组件的注册、清空、删除,以及日志查询、日志写入。RedisLogService 是一个中间服务类,通过操作RedisLogger实现更多上层功能,向RedisController提供接口。RedisLogController用于向外部提供Api接口,进行组件的更原创 2021-07-03 11:46:50 · 388 阅读 · 0 评论 -
基于Redis实现的日志记录组件——超实用(3)核心类描述
收录于墨的2020~2021开发经验总结上一篇 基于Redis实现的日志记录组件——超实用(2)类图和基本结构三、核心类介绍1、RedisLogComponentRedisComponent是日志组件类,用于存储组件信息,使用了lombok的注解,来减少编码量:这里的@NoArgsConstructor增加了一个无参构造,因为redis反序列化json为java类时,要求这个java类具有无参构造函数,并且还要有对应属性的getter和setter。@NoArgsConstructor@Set原创 2021-07-03 12:25:16 · 443 阅读 · 0 评论 -
Redis 分布式锁的两种写法你会吗
1、概述在并发编程中,锁是用来保证数据同步的重要举措,Java 自带了多种锁的实现,如synchronized、ReentrantLock、ReentrantReadWriteLock等。但这些锁只在该进程内有效。一但跨进程就会不起作用。然而在当下的技术趋势下,微服务,单服务多实例,多实例间负载均衡已经成为常见的架构基础。在这样的多进程情况下,要保证同步,那么分布式锁就尤为重要。这篇文章,描述了两种Redis分布式锁的实现方式。希望对大家有用。2、原理锁的原理来自于其“唯一持有性”,因此只要能保证这原创 2021-06-16 00:15:58 · 546 阅读 · 0 评论 -
java 实现的数据查询缓存通用模型——那些我在缓存模型中用到的工具类(5)
收录于墨的2020~2021开发经验总结接续上文(Redis 实现的数据查询缓存通用模型(5))6、那些我在缓存模型中用到的工具类本篇是这个系列的最后一篇,Redis 实现的数据查询缓存通用模型这个系列,标题虽然是Redis 实现的数据查询缓存通用模型,但是实际上却不是以Redis为主,如果再取一个更合适的标题,我觉得是Java的通用数据查询缓存模型会更为恰当一些。使用到的工具类,主要是Ehcache的工具类和Redis的工具类为主。6.1 Ehcache的工具类Ehcache的工具类6.2原创 2021-06-13 21:36:02 · 324 阅读 · 0 评论 -
超实用的Redis的工具类
这个工具类最早是在网络上找的,现在已经找不到出处了,后边自己改了很多地方,也加了很多新的东西。现在将其公开出来,希望对大家有用。需要导入包: compile 'org.springframework.data:spring-data-redis:2.3.2.RELEASE'maven的话是:<!-- https://mvnrepository.com/artifact/org.springframework.data/spring-data-redis --><depe原创 2021-06-13 21:29:32 · 673 阅读 · 0 评论 -
java 实现的数据查询缓存通用模型——缓存组件设计(4)
收录于墨的2020~2021开发经验总结接续上文(Redis 实现的数据查询缓存通用模型(3))5、缓存组件设计5.1 整体架构先上一张类图,这张类图包含了Dawn缓存架构设计的整体结构:其中DawnCache是一个缓存组件的通用接口,包含了获取缓存、设置缓存、清除缓存三个方法,而DawnRedisCache是它的Redis实现,DawnEhcacheCache是它的Ehcache实现,DawnSimpleCache是它的基于Java Map 的实现。三种缓存组件分别适用不同情况下的使用。Da原创 2021-06-13 20:47:16 · 2114 阅读 · 1 评论 -
java 实现的数据查询缓存通用模型——缓存模型核心AOP实现(3)
收录于墨的2020~2021开发经验总结接续上文(Redis 实现的数据查询缓存通用模型(2))4、缓存模型核心AOP实现4.1 概述在上两篇文章中,我们主要分析了 @DawnCacheable 实现的缓存,和@DawnCacheEvict实现的缓存清除,之前是从模型上分析的,还没有介绍如何实现这个模型,这篇文章就是分析这两个注解背后的实现。Spring拥有两个核心,一个是IOC,控制反转和依赖注入,还有一个就是AOP,面向切面编程。在我这几年的编程生涯中,确实也意味到了,AOP是大部分框架的实现原创 2021-06-13 14:23:00 · 515 阅读 · 0 评论 -
java 实现的数据查询缓存通用模型——缓存清除cacheEvict(2)
收录于墨的2020~2021开发经验总结接续上文(Redis 实现的数据查询缓存通用模型(1))3、缓存清除cacheEvict3.1 基本原理在实际应用中,缓存并非是一成不变的,我们写入缓存之后还需要更新缓存。这常常存在于一些更新操作和删除操作中。例如我们查询了一个产品列表的第一页,之后缓存写入了这一页,在缓存中我们有这样一个映射:key : DAWN-CACHE.cn.hengyumo.dawn.example.service.ProductService.searchProduct.siz原创 2021-06-11 21:12:27 · 1207 阅读 · 0 评论 -
java 实现的数据查询缓存通用模型——概述和注解设计(1)
1、缓存的意义在经济学中,有一个定律叫做二八定律,含义是社会上百分之20的人却占了百分之80的财富。这一定律同样在计算机学科中适用,少部分的资源在计算中会被频繁使用,因此计算机的存储设计中,从低到高,从快到慢,设计了多级缓存。从CPU的一级、二级、三级缓存,到内存,到磁盘,到远程的分布式文件系统。它们的容量从小到大,速度从快到慢。常用的数据会被优先存放在高速的缓存上。在网站的架构设计中,也要考虑到缓存的使用,因为大部分网站的实际运行中,对数据的访问也是呈现出二八定律,百分之八十的业务会集中到百分之二原创 2021-06-10 22:49:18 · 955 阅读 · 0 评论 -
Redis 使用lua脚本最全教程
1、redis 使用lua脚本的语法Redis Eval 命令 - 执行 Lua 脚本redis 127.0.0.1:6379> eval "return {KEYS[1],KEYS[2],ARGV[1],ARGV[2]}" 2 key1 key2 first second1) "key1"2) "key2"3) "first"4) "second"其中script: 参数是一段 Lua 5.1 脚本程序。脚本不必(也不应该)定义为一个 Lua 函数。numkeys: 用于指定键名原创 2021-06-05 13:29:14 · 26891 阅读 · 3 评论 -
分享两年前整理的redis笔记
一、redis 安装官网redis.io 下载源码linux上确保安装了gcc之后对源码进行编译:解压 tar zxvf redis-5.05.tar.gzcd redis-5.05编译 make安装 sudo make PREFIX=/usr/local/redis install启动cd /usr/local/redis/bin服务端 ./redis-server客户端 ./redis-cli 输入ping响应PONG则安装连接成功windo原创 2021-02-05 11:07:04 · 215 阅读 · 0 评论