
Redis
文章平均质量分 51
redis入门
简单随风
这个作者很懒,什么都没留下…
展开
-
Redis的通信协议
Redis的通信协议全称是 REdis Serialization Protocol(RESP)它有5种通信格式。原创 2022-12-02 16:47:47 · 1375 阅读 · 0 评论 -
Redis内置lua脚本实现限流
Lua脚本其实比较简单,这里以1r/s的案例为例传入一个key和限流的阈值limit,每当有请求时,如果超出限流标准则返回false,如果未超出限流标准,在methodKey上进行自增+1,同时给methodKey设置1s过期时间。-- 获取方法签名特征local methodKey = KEYS[1]redis.log(redis.LOG_DEBUG, 'key is', methodKey)-- 限流的阈值local limit = tonumber(ARGV[1])-- 当前流量大小原创 2022-02-18 16:36:24 · 1350 阅读 · 0 评论 -
GO + Redis 使用KeyspaceNotifications完成延时任务
在使用之前需要先开启Redis的键空间通知开关,可参考 《Redis 键空间通知》,另外java版本的可以查看《Springboot + Redis:整合键消息通知》我们利用redis键空间通知,订阅string的过期时间,来完成延时任务的操作import ( "fmt" "github.com/gomodule/redigo/redis" "strconv" "time" "unsafe")type PSubscribeCallback func (pattern, channel,原创 2021-06-18 11:24:23 · 373 阅读 · 0 评论 -
Redis+SpringBoot:实现分布式锁
原理利用NX的原子性,多个线程并发时,只有一个线程可以设置成功set resource_name my_random_value NX PX 30000resource_name:资源名称,可根据不同的业务区分不同的锁my_random_value:随机值,每个线程的随机值都不同,用于释放锁时的校验NX:key不存在时设置成功,key存在则设置不成功PX:自动失效时间,出现异常情况,锁可以过期失效实现我们新建一个接口,用以测试redis的锁@Autowiredprivate Red原创 2020-07-30 17:38:18 · 292 阅读 · 0 评论 -
Springboot + Redis:整合键消息通知
首先请确保redis已经成功开启了通知功能,可参考《Redis 键空间通知》。Springboot demo文件目录如下:pom<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId></dependency>application.yml配置r原创 2020-06-12 10:50:06 · 1129 阅读 · 0 评论 -
Redis 键空间通知
对于每个修改数据库的操作,键空间通知都会发送两种不同类型的事件:键空间通知(key-space)和键事件通知(key-event)。当执行 del key1 命令时:键空间频道的订阅者将接收到被执行的事件的名字,在这个例子中,就是 del键事件频道的订阅者将接收到被执行事件的键的名字,在这个例子中,就是 key1Redis配置只需修改配置文件redis.conf中的notify-keyspace-events参数,参数可以是以下字符的任意组合, 它指定了服务器该发送哪些类型的通知:# K原创 2020-06-12 08:54:24 · 758 阅读 · 0 评论 -
Linux离线安装Redis
下载官网:https://redis.io/download选择下载稳定版本,不稳定版本可以尝鲜,但是不推荐在生产使用。上传至linux安装 Redis解压redis:tar -zxvf redis-5.0.5.tar.gz得到:安装gcc编译环境,如果已经安装过了,那么就是 nothing to doyum install gcc-c++ 进入到 redis-5.0.5 目录,进行安装:make && make install执行完毕后安装成功修改配原创 2020-05-20 14:59:59 · 5999 阅读 · 2 评论 -
Redis构建集群 - cluster
redis.conf 配置# 开启集群模式cluster-enabled yes# 每一个节点需要有一个配置文件,需要6份。每个节点处于集群的角色都需要告知其他所有节点,彼此知道,这个文件用于存储集群模式下的集群状态等信息,这个文件是由redis自己维护,我们不用管。如果你要重新创建集群,那么把这个文件删了就行cluster-config-file nodes-201.conf# 超时时间,超时则认为master宕机,随后主备切换cluster-node-timeout 5000# 开启AOF原创 2020-05-15 15:59:10 · 356 阅读 · 0 评论 -
Redis的哨兵模式
引子Master挂了,如何保证可用性,实现继续读写什么是哨兵Sentinel(哨兵)是用于监控Redis集群中Master状态的工具,是 Redis 高可用解决方案,哨兵可以监视一个或者多个redis master服务,以及这些master服务的所有从服务;当某个master服务宕机后,会把这个master下的某个从服务升级为master来替代已宕机的master继续工作。示例图配置哨兵监控master创建并且配置sentinel.conf:普通配置port 26379pidfile原创 2020-05-15 09:40:17 · 207 阅读 · 0 评论 -
Redis 缓存过期处理与内存淘汰机制
引子计算机内存有限,越大越贵,Redis的高并发高性能都是基于内存的,用硬盘的话GG。已过期的key如何处理?设置了expire的key缓存过期了,但是服务器的内存还是会被占用,这是因为redis所基于的两种删除策略redis有两种策略:(主动)定时删除定时随机的检查过期的key,如果过期则清理删除。(每秒检查次数在redis.conf中的hz配置)(被动)惰性删除当客户端请求一个已经过期的key的时候,那么redis会检查这个key是否过期,如果过期了,则删除,然后返回一个nil。这种策原创 2020-05-15 09:34:51 · 365 阅读 · 0 评论 -
Redis主从复制的搭建
我们以一主二从为例:准备工作先准备三台虚拟机:192.168.170.101、192.168.170.102、192.168.170.103这里以192.168.170.101为主服务器,另外两台为从服务器修改redis.conf在两台从服务器中,修改redis.conf文件的以下内容replicaof 192.168.170.101masterauth 123456 # 主服务器的redis密码replica-read-only yes重启数据库#停止/etc/init.d/原创 2020-05-15 09:09:56 · 256 阅读 · 0 评论 -
Redis的持久化机制 - RDB 与 AOF
RDB: Redis DataBaseAOF: Append Only File什么是RDB每隔一段时间,把内存中的数据写入磁盘的临时文件,作为快照,恢复的时候把快照文件读进内存。如果宕机重启,那么内存里的数据肯定会没有的,那么再次启动redis后,则会恢复。备份与恢复内存备份 --> 磁盘临时文件临时文件 --> 恢复到内存RDB优劣势优势每隔一段时间备份,全量备份灾备简单,可以远程传输子进程备份的时候,主进程不会有任何io操作(不会有写入修改或删除)原创 2020-05-14 17:58:57 · 247 阅读 · 0 评论 -
SpringBoot 封装Redis操作类
package com.imooc.utils;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.dao.DataAccessException;import org.springframework.data.redis.connection.RedisConnection;import org.springframework.data.redis.connection.原创 2020-05-14 16:48:44 · 616 阅读 · 0 评论 -
SpringBoot 整合 Redis
POM 引入 redis 依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId></dependency>application.yml配置redisspring: redis: database: 0 host.原创 2020-05-14 16:24:14 · 246 阅读 · 0 评论 -
Redis的数据类型
String最简单的字符串类型键值对缓存,也是最基本的get/set/del:查询/设置/删除set rekey data:设置已经存在的key,会覆盖setnx rekey data:设置已经存在的key,不会覆盖set key value ex time:设置带过期时间的数据expire key:设置过期时间ttl:查看剩余时间,-1永不过期,-2过期append key:合并字符串strlen key:字符串长度incr key:累加1decr key:类减1incr.原创 2020-05-14 15:47:50 · 172 阅读 · 0 评论