redis
redis
小哇666
专注web/大数据
展开
-
使用SpringBoot自定义注解+AOP+redisson锁来实现防接口幂等性重复提交
自定义注解,注解的作用是标记一个方法是否支持防重提交。需要防重提交的方法,加上注解。原创 2024-10-22 22:19:24 · 316 阅读 · 0 评论 -
SpringBoot中使用Redis实现排行榜功能,并考虑到 当用户积分相同时,要求按最后更新时间升序
由于时间戳的长度是13位,除以10的13次方,可以将其移到小数点的右边。可以将zset中的score设置为一个浮点数,其中整数部分为积分,小数部分为最后更新时间时间戳。zset中可以存储不重复的元素集合,并为每个元素关联一个浮点数分数(score),| 用户id | 积分 | 最后更新时间时间戳(毫秒) | score || 用户id | 积分 | 最后更新时间时间戳(毫秒) | score |score = 积分 + (1 - 时间戳/10的13次方)对上面表格,处理之后,变成了下面这样。原创 2024-10-07 21:54:00 · 639 阅读 · 0 评论 -
redis-RedisTemplate.opsForGeo 的geo地理位置相关的方法演示
获取元素经纬度坐标经过geohash算法生成的base32编码值。: 获取集合中任意元素的经纬度坐标,可以一次获取多个。:查询某个坐标或某个成员,附近范围的成员。: 计算两个元素之间的距离。: 添加一个地理位置。原创 2024-08-18 11:18:22 · 385 阅读 · 0 评论 -
redisTemplate 中 boundValueOps、boundHashOps、boundListOps、boundSetOps、boundZSetOps 使用详解
一旦绑定,所有操作都针对同一个键,适合在一个操作序列中。:每次调用方法时都可以使用不同的键名,适合在不同键之间灵活切换的场景。原创 2024-07-19 14:38:04 · 491 阅读 · 0 评论 -
redis 使用互斥锁或逻辑过期两种方案解决缓存击穿,和缓存穿透(用缓存空值 或布隆过滤器)的解决方案
缓存击穿是指一个被频繁访问(高并发访问并且缓存重建业务较复杂)的缓存键因为过期失效,同时又有大量并发请求访问此键,导致请求直接落到数据库或后端服务上,增加了系统的负载并可能导致系统崩溃。缓存穿透是指在缓存中查找一个不存在的值,由于缓存一般不会存储这种无效的数据,所以每次查询都会落到数据库上,导致数据库压力增大,严重时可能会导致数据库宕机。4 做好数据的基础格式校验。缓存空值 (本文此方案。5 做好热点参数的限流。3 增强id的复杂度。原创 2024-04-28 19:51:22 · 1049 阅读 · 0 评论 -
RedisTemplate-opsForStream实现消息队列,主要演示 xgroup,xreadgroup,xpending,xack,xinfo的用法
【代码】RedisTemplate-opsForStream实现消息队列api使用。原创 2024-04-26 23:01:12 · 875 阅读 · 0 评论 -
redis 结合Lua脚本实现 秒杀、防止超卖
同1商品单个用户限购1件,库存不会超卖。原创 2024-04-26 11:35:26 · 917 阅读 · 1 评论 -
redis中使用pipeline批量执行命令,提升性能
提交到pipeline中,pipeline一次性的将数据发送给服务器,服务器再逐条执行命令。RedisCallback更接近redis原生命令。SessionCallback对操作进行了封装。,可以根据操作不同的数据类型进行转换,将一批要执行的redis命令。注意:此操作非原子性。将键和值都转换为字节码。中已经提供了对应方法。原创 2024-04-25 16:56:43 · 963 阅读 · 0 评论 -
redis基于Stream类型实现消息队列,命令操作,术语概念,个人总结等
1 在Redis Stream中,即使消息被消费者确认(acknowledged,ACK),消息也不会自动从Stream数据结构中删除。这与Kafka或RabbitMQ等传统消息队列系统的做法不同,在那些系统中,一旦消息被消费并确认,通常会被从队列中移除以释放存储空间。2 若一个Stream中有5条消息,并且存在两个消费者组,这两个消费者组可以各自独立地消费这些消息,即所有消息对于不同消费者组来说是“广播”的,这一点类似于Kafka中的逻辑。原创 2024-04-24 22:29:52 · 666 阅读 · 0 评论 -
redis-RedisTemplate.opsForGeo 的geo地理位置及实现附近的人的功能
【代码】redis-RedisTemplate.opsForGeo 的geo地理位置及实现附近的人的功能。原创 2024-02-28 15:45:15 · 1332 阅读 · 0 评论 -
基于redisson-Topic实现发布订阅功能
另外maven 依赖中redisson 3.8.2版本的RTopic是支持范型的,发送监听pojo很容易,高版本的反而去掉了,所以高版本的发送监听pojo还没有跑通。测试发送string可以跑通,pojo无法监听到消息,原创 2023-11-24 17:24:34 · 903 阅读 · 0 评论 -
基于redisson-RDelayedQueue实现延迟队列
使用redisson的延迟队列时,千万要注意的地方是放入消息是使用的RDelayedQueue队列,获取消息是使用RQueue队列。消费者消费消息----【核心方法】,启动类上别忘记添加 @EnableAsync ,@EnableScheduling。编写生产者,往延迟队列放消息----【核心方法】重点看步骤3和步骤5。原创 2023-11-24 00:01:06 · 1233 阅读 · 0 评论 -
redis 实现分布式全局唯一id
全局唯一id必须具备什么特点?1. 全局唯一性:不能出现重复的ID,最基本的要求。2. 单调递增:保证下一个ID一定大于上一个ID。3. 趋势递增:在一段时间内,生成的ID是递增的趋势。如:在一段时间内生成的ID在【0,1000】之间,过段时间生成的ID在【1000,2000】之间。 但在【0-1000】区间内的时候,ID生成有可能第一次是12,第二次是10,第三次是14。 4. 信息安全:如果ID是连续递增的,恶意用户就可以很容易的窥见订单号的规则,从而猜出下一个订单号, 如果是...原创 2021-06-02 13:34:14 · 3456 阅读 · 0 评论 -
SpringBoot整合Redis之@Cacheable、@CachePut、@CacheEvict注解的使用
1 添加maven依赖 <!--redis--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> &l.原创 2021-06-02 11:27:34 · 1021 阅读 · 1 评论 -
redis 基本概述 [文档]
讲到redis不得不讲nosqlNoSQL是不同于传统的关系数据库的数据库管理系统的统称。其两者最重要的区别是NoSQL不使用 SQL作为查询语言。 NoSQL数据存储可以不需要固定的表格模式。NoSQL是基于键值对的,可以想象 成表中的主键和值的对应关系。NoSQL:redis、memcached、mongodb、guava(loadingCache)redis的定义:Redis 是...原创 2020-04-27 16:53:48 · 122 阅读 · 0 评论 -
RedisTemplate-opsForSet集合操作api
1、add(K key, V... values) 向变量中批量添加值。redisTemplate.opsForSet().add("setValue","A","B","C","B","D","E","F"); 2、members(K key) 获取变量中的值。Set set = redisTemplate.opsForSet().members("setValue...原创 2019-12-25 16:50:12 · 1401 阅读 · 0 评论 -
RedisTemplate-opsForZSet集合有分数-api
1、add(K key, V value, double score)添加元素到变量中同时指定元素的分值。redisTemplate.opsForZSet().add("zSetValue","A",1); redisTemplate.opsForZSet().add("zSetValue","B",3); redisTemplate.opsForZSet().add("zSetVa...原创 2019-12-25 15:56:06 · 5013 阅读 · 0 评论 -
RedisTemplate类-opsForHash哈希表操作api
1、put(H key, HK hashKey, HV value) 新增hashMap值 redisTemplate.opsForHash().put("hashValue","map1","map1-1"); redisTemplate.opsForHash().put("hashValue","map2","map2-2"); 2、values(H key) 获取指定...原创 2019-12-25 12:16:30 · 2998 阅读 · 0 评论 -
RedisTemplate类-opsForList 列表操作api
1、leftPush(K key, V value) 在变量左边添加元素值。redisTemplate.opsForList().leftPush("list","a"); redisTemplate.opsForList().leftPush("list","b"); redisTemplate.opsForList().leftPush("list","c"); 2、i...原创 2019-12-25 11:34:02 · 7811 阅读 · 0 评论 -
RedisTemplate类-opsForValue 字符操作api
1、set(K key, V value)新增一个字符串类型的值,key是键,value是值。2、get(Object key)获取key键对应的值。3、append(K key, String value)在原有的值基础上新增字符串到末尾。4、get(K key, long start, long end)截取key键对应值得字符串,从开始下标位置开始到结束下标的位...原创 2019-12-23 21:01:06 · 1369 阅读 · 0 评论 -
springboot 采用redis实现 session共享
首先将springboot集成redis的环境先搭建好可参考文档:https://blog.csdn.net/qq_41712271/article/details/103665054<dependency> <groupId>org.springframework.session</groupId> ...原创 2019-12-23 19:45:48 · 126 阅读 · 0 评论 -
springboot 整合redis
**redis实现序列化的方法2. JdkSerializationRedisSerializer(默认使用是这个)7. 自定义序列化*/@Bean// 使用Jackson2JsonRedisSerialize 替换默认序列化// 设置value的序列化规则和 key的序列化规则//设置hash key序列化方式string//设置hash value的序列化方式json/**必须执行这个函数,初始化RedisTemplate*/原创 2019-12-23 14:52:57 · 192 阅读 · 1 评论