![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
redis
文章平均质量分 53
好大的月亮
一只奔跑的菜鸡
展开
-
空间搜索geohash概述;redis的geo命令
空间搜索geohash概述原创 2024-06-07 18:35:03 · 298 阅读 · 0 评论 -
redisson的延时队列机制简述
redisson的延时队列机制简述原创 2024-01-19 22:10:44 · 1144 阅读 · 0 评论 -
redis集群hashTag简述
redis集群hashTag简述原创 2023-09-13 23:16:38 · 510 阅读 · 0 评论 -
redis的key过期策略;主动/被动
redis的key过期策略;主动/被动原创 2023-07-13 16:46:38 · 793 阅读 · 0 评论 -
redis使用pipeline查询大量key
redis使用pipeline查询大量key原创 2023-05-31 09:58:55 · 1450 阅读 · 0 评论 -
redis的key过期事件不建议实现延时消息的原因
redis的key过期事件不建议实现延时消息的原因原创 2022-12-06 09:57:30 · 1491 阅读 · 0 评论 -
redis持久化RDB和AOF的区别;以及AOF的重写
redis的持久化原创 2022-09-02 09:05:20 · 654 阅读 · 0 评论 -
使用redis的BitMap使用入门;统计签到
redis的bitmap来统计签到原创 2022-07-29 17:18:01 · 1155 阅读 · 0 评论 -
控制Redis的hash的field中的过期时间
需求场景在业务中有些数据因为历史原因用的hash结构存储数据,但是后期需求要求其中某个field需要按照一些规则去过期,这个时候原来的逻辑懒得改,可以利用redis的Zset或者mq的延时队列去做过期设置.方案一使用redis的Zset配置定时任务捞个图demo需要清缓存的redis的hash结构如下然后我们再每次往Agent这个hash结构存储数据的时候,同时向AgentExpire为key的ZSET数据结构存储一份数据(在存数据的时候可以在当前时间上增加过期时间),这个数据的key是hash原创 2022-04-27 11:39:26 · 17340 阅读 · 0 评论 -
spring-data-redis连接池
连接池使用原因在某些业务场景中使用了redis作为分布式缓存,在做业务活动的时候,比如秒杀活动,会一时间涌入大量的流量,这个时候和redis server进行网络连接的话就比较耗费资源和时间,直接影响接口的响应时间。针对这种某一时刻的突发性流量,使用连接池是比较合适的。ps:spring-boot-starter-redis默认是不使用连接池的连接池SpringBoot 1.x 默认采用 Jedis 作为 redis 客户端连接池SpringBoot 2.x spring-data-redis原创 2022-04-21 16:42:00 · 4688 阅读 · 3 评论 -
使用redisTemplate-geo计算经纬度距离
简介业务中常有需求是计算经纬度之间的距离,redis是使用较多的缓存中间件,正好有关于geo位置计算的api,可以直接拿来用.demo展示直接上demo代码package com.felix.spring_cloud_one.service;import com.felix.spring_cloud_one.params.SaveGeoPointVO;import org.springframework.beans.factory.annotation.Autowired;import or原创 2022-03-14 13:33:13 · 2617 阅读 · 1 评论 -
SpringCachemanager使用Cache(redis作为缓存中间件)
cacheManager原创 2022-02-24 09:52:54 · 3085 阅读 · 2 评论 -
使用redis-cell模块实现令牌桶限流
令牌桶限流原创 2022-01-16 11:33:23 · 667 阅读 · 0 评论 -
redistemplate查询大量key,单机scan扫描;RedisTemplate和StringRedisTemplate的区别
RedisTemplate和StringRedisTemplate的区别StringRedisTemplate是继承RedisTemplate,但是两者的数据是不共通的;也就是说StringRedisTemplate只能管理StringRedisTemplate里面的数据,RedisTemplate只能管理RedisTemplate中的数据。序列化策略两者也不同StringRedisTemplate默认采用的是String的序列化策略,保存的key和value都是采用此策略序列化保存的。Redis原创 2021-12-31 14:03:26 · 3407 阅读 · 0 评论 -
springSessionDemo
准备安装一个redis使用Redis作为底层Session的存储介质,实现分布式session。redis和session相关依赖<dependencies> <!--redis 依赖--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-re原创 2021-12-21 14:19:00 · 163 阅读 · 0 评论 -
搭建redis集群/主从/单节点;redis集群扩容;热修改redis配置
从官网下载redis压缩包https://redis.io/解压安装解压到指定路径tar -zxvf ./xxxx.tar.gz -C /xxx然后cd进入目录编译安装redis需要gcc环境,没有的自行安装一下make && make install安装完了默认的redis-server在/usr/local/bin/redis-server或者在安装的时候指定路径 prefix单节点单节点最简单,直接把编译后目录里的redis.conf的端口改改,后台运行原创 2021-10-10 22:13:11 · 1797 阅读 · 1 评论 -
redission读写锁解决db和缓存双写不一致
db和缓存双写不一致多线程访问环境下,在更新完db后再去更新缓存,不加锁显而易见的就会出现缓存被覆盖的问题。线程1修改完db去更新缓存的时候慢了一拍。此时线程2在线程1之后修改完db更新成功了缓存。此时线程1更新缓存的操作恢复了,然后去更新了缓存。那么此时的缓存其实是个脏数据。有什么办法呢?方案一直接加redission的普通Rlock分布式锁,比如对一个sku的缓存更新都排着队串行操作。这样也行,但是性能损失大。方案二Redisson其实还有读写锁.操作过db的都知道,写锁是互斥的,读原创 2021-09-08 23:57:38 · 1213 阅读 · 0 评论 -
判断一个key在redis集群的哪一个节点(分片)
redis的集群模式下去需要确定一个key在哪个节点上的话,简单粗暴的就是一个个节点找过去。但是这样明显是费时费力的。其实可以直接确定这个key在redis的哪个节点上,然后直接去这个节点找这个key就可以了.1-先查看集群的几个节点的分片范围情况./redis-cli -h ip -p port查看集群节点cluster nodes或者合并成一句命令./redis-cli -h ip -p port cluster nodes或者更为直观的(推荐这种)./redis-cli -c原创 2021-09-01 08:43:37 · 8743 阅读 · 0 评论 -
使用RedisAtomicLong和redisTemplate实现redis的计数器INCR原子加
默认引入了redis依赖,这里就不上依赖了。这里需要的是生成一个huize20171027100140000001这种格式的字符串,可以看到前面大致是字符串+年月日时间分秒毫秒+三位自增num接单表述一下基本思路:这里先用时间(年月日)生成一个key,然后,利用RedisAtomicLong的incrementAndGet方法调用redis的INCR原子加,之后给这个key设置一个24小时+随机数的过期时间,最后获取的INCR结果再对999进行取余,使得最终获取的结果肯定是小于999的,因为只需要三位原创 2021-08-30 10:57:09 · 6753 阅读 · 0 评论 -
redis设置已文件夹形式展示key,value
存储key时候可以使用 : 将其隔开,就是冒号之前的建立文件夹执行命令set 1:2:3:4 v执行效果 其实key就是1:2:3:4 值是v 只是在RDM中可以按文件夹显示就是转载 2021-04-12 16:50:43 · 1344 阅读 · 0 评论 -
springboot下Redission实现redis分布式锁
直接使用redisson实现分布式锁加锁原理线程一去获取锁,获取成功,执行lua脚本,保存数据到redis数据库。线程二去获取锁,获取失败,一直通过while循环尝试获取锁。获取成功后,执行lua脚本,保存数据到redis数据库。Watch dog所起到的作用就是当锁的有效时间要到了当业务逻辑却还没有执行完成时,延长锁的有效时间。注:正常这个看门狗线程是不启动的,还有就是这个看门狗启动后对整体性能也会有一定影响,所以不建议开启看门狗。将复杂的业务逻辑封装在lua脚本中发送给redis,且re原创 2021-01-06 01:00:38 · 727 阅读 · 2 评论 -
redis的不同的数据结构的key和value的大小限制
String结构的上限官方文档https://redis.io/topics/data-types字符串值的最大长度为512MBredis的key的最大长度为512MB综上所述,即string结构的key和value两者的最大长度限制都为512MBredis的set操作还可以做一些有意思的操作在set命令后面加上 nx 意味着当值不存在的时候可以 set 成功,但是当 key 存在的时候,那么就会set失败在set命令后面加上 xx 意味着直接替换掉 key 的值,也就是和默认的 s原创 2020-06-10 17:46:31 · 8122 阅读 · 1 评论 -
redis的发布订阅模式,ubuntu命令行demo以及springboot下使用spring-data-redis进行发布订阅
我们平时用的rabbitMq和kafka消息都可以实现这种发布订阅模式,但是其实redis也可以实现在ubuntu中用命令行演示下发布订阅订阅 test 频道我这里是用docker部署的redisdocker exec -it redis bash登录进redis然后在/usr/local/bin路径下redis-cli -p 6379新建连接SUBSCRIBE test也订阅test这个频道再同样新建2个连接,发送消息的时候可以看到2个订阅的连接都接收到了消息(前面我单开一个连接的时候原创 2020-06-07 21:28:12 · 191 阅读 · 0 评论 -
springboot中在方法上使用@Cacheable注解实现redis缓存
简介平时大家使用redis一般都是直接存储key,value.spring全家桶肯定帮大家想到了这一点.可以让大家方便的使用注解操作redis节省代码量.把总结放前面:总共有三种方式,底层利用了spring的aop,并且方法返回的对象一定要实现序列化@Cacheable:注解于方法上,第一次会把后面的cacheNames+key 拼接为key,把返回值序列化后作为value set到redis中去.后面再一次访问相同的key的时候就直接从redis中取值了,不会再访问这个方法@Overrid原创 2020-06-07 02:44:23 · 4893 阅读 · 0 评论 -
java+springboot使用StringRedisTemplate实现redis的并发锁
redis的依赖先引入<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId></dependency>并发锁相关命令介绍说到redis的并发锁就要先介绍一下这两个redis命令先上一波中文翻译官网http:/原创 2020-05-26 00:14:18 · 1231 阅读 · 0 评论 -
redis存储中的五种基本数据结构string,hash,list,set,zset,以及每种结构的常用操作,
五种基本数据结构对redis进行批量插入数据和批量查找数据其实操作的时候就是类似传一个数组进去demo如下这个是我在控制台直接敲的127.0.0.1:6379[1]> mset user:2:111 test1 user:2:222 test2OK127.0.0.1:6379[1]> mget user:2:111 user:2:2221) "test1"2) "test2"...原创 2020-05-13 15:59:00 · 513 阅读 · 0 评论