redis
文章平均质量分 62
干了这杯柠檬多
运气是实力的一部分,但我运气向来不好,所以只能靠实力去弥补!
展开
-
批量查询接口如何巧妙利用单查询接口中的@Cacheable
如标题所述,本文是为了探讨在已有jvm缓存的单查询接口的基础上增加批量查询接口功能,要如何实现,如何优化,如何抉择。spring-cache用法请自行查询。demo:单查询接口如下:@Servicepublic class BizCacheServiceImpl implements BizCacheService { /** * 单查询接口 * * @param id * @return */ @Cacheable(k原创 2022-04-29 19:11:08 · 1592 阅读 · 0 评论 -
redis分布式锁实战由浅入深解决并发超卖问题
redis分布式锁是为了解决什么问题?为了解决synchronized在分布式情况下无法实现同步的问题,因为synchronized同步的是一个jvm的方法,多个jvm的话是做不到的。1. 实现redis 基本业务减库存场景Integer stock = (Integer)redisTemplate.opsForValue().get("stock");log.info("还剩"+stock);if (stock<=0){ log.info("抢购失败");}redisT原创 2021-05-06 12:02:01 · 979 阅读 · 0 评论 -
基于redis实现抢红包功能(包括余额退回处理)
本文将讲述使用redis实现抢红包功能,采用发红包时将红包拆好存储,解决红包金额平衡问题(两种算法)、解决超发现象、将数据通过消息队列传递给另一个服务写入数据库。框架为:使用springboot框架实现,springboot搭建、maven配置略。一个简单的前端页面模拟并发量:两个功能:一个发红包和一个抢红包<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>原创 2020-07-22 17:17:03 · 2122 阅读 · 4 评论 -
使用jedis实现抢购功能,解决超发现象
抢购功能:在极短的时间内有大量的并发请求,出现因为并发所引起的问题。实例:一个商品100件,一个用户一次购买3件,100个用户同时购买。使用redis的String类型实现:通过WATCH命令在事务执行之前监控了多个Keys,倘若在WATCH之后有任何Key的值发生了变化,EXEC命令执行的事务都将被放弃第一种:String /* redis实现,String方式 */ public void redis(int num,int i){原创 2020-07-17 16:23:22 · 254 阅读 · 0 评论 -
随笔 redis由于aof错误无法启动
闲来无事将一个aof文件复制到自己的redis服务器上,修改配置后,重启redis发现启动失败。想必是aof的原因,就使用redis自带的检查工具进行清理了一下。redis-check-aof --fix appendonly.aof清理完毕,启动成功...原创 2020-06-17 11:58:16 · 701 阅读 · 0 评论 -
springboot使用注解实现redis缓存
在springboot中两种方式使用缓存,一种是直接通过 RedisTemplate 来使用,另一种是使用 Spring Cache 集成 Redis(也就是注解的方式)。RedisTemplate 方式不作说明,详细说明实现一下注解方式。核心三个注解: @Cachable @CachePut @CacheEvict 1.@Cachable根据方法的请求参数对其结果进行缓存: Key:缓存的 Key,可以为空,如果指定要按照 SPEL 表达式编写,如果不指定,原创 2020-06-02 18:41:09 · 1159 阅读 · 0 评论 -
springboot集成redis哨兵模式
本文侧重于springboot集成,redis哨兵模式的搭建请参考其他文章。前置条件一主二从redis和三个哨兵,springboot环境。连接测试先写一个小demo来测试一个哨兵模式是否能够访问。public class test1 { public static void main(String[] args) throws Exception { test1.testSentinel(); } public static void tes原创 2020-05-26 17:49:16 · 1295 阅读 · 2 评论 -
redis哨兵模式
1.Sentinel(哨兵)是Redis 的高可用性解决方案。通过一个或多个Sentinel 实例组成的Sentinel 系统可以监视多个主服务器和下属的所有从服务器,当主服务器进入下线状态时,自动将主服务器下的从服务器升级为新的主服务器。2.sentinel哨兵的作用(1)Master 状态监测,如果Master 异常,则会进行Master-slave 转换,将其中一个Slave作为Master,将之前的Master作为Slave ;(2)Master-Slave切换后,master_redi原创 2020-05-25 16:16:45 · 248 阅读 · 0 评论 -
redis主从复制
准备工作在windows上安装服务,为了在一台主机上模拟主从复制、集群等环境redis-server.exe --service-install redis.windows.conf --service-name redis6379 --loglevel verbose 安装服务redis-server.exe --service-start --service-name redis6379 启动服务redis-server.exe --service-stop --service-name原创 2020-05-25 15:46:32 · 119 阅读 · 0 评论 -
redis高级数据类型
reids高级数据类型是基于五种基本数据类型的,是为了针对某些特定的业务而衍生出来的数据类型。一、Bitmapsbitmaps事实上并不是一种新的数据类型,而是基于字符串位操作的集合,由于字符串是二进制安全的,并且最长可支持512M,所以它们可以用来存储2的32次方(512 * 1024 * 1024 * 8 )不同位的数据。bitmaps的位操作分成两组:1.固定时间的单个位操作,比...原创 2020-04-02 18:10:10 · 212 阅读 · 0 评论 -
redis事务、锁、删除策略
一、redis事务事务命令multi 开启事务,将接下来的命令存在一个列表里exec 执行事务,将存在列表里的依次执行。注意:命令书写格式有误错误将取消这次事务执行;命令格式正确,但是无法正确的执行。例如对list进行incr操作 ,能够正常执行事务,只是对错误的不执行而已。discard 取消事务 将列表销毁二、redis锁锁命令watch key [key...原创 2020-04-01 17:24:39 · 485 阅读 · 0 评论 -
redis持久化存储
一.持久化是什么从redis角度来说,redis是基于内存操作的,断电后数据清空,而要想保存该部分数据就需要将之存在硬盘上,使之永久性保存就是持久化。二.持久化保存的方式1.RDB(Redis database,快照)将当前数据状态进行保存,快照形式,存储数据结果,存储格式简单,关注点在数据save指令命令save,前台保存RDB文件。配置指令dbfilename...原创 2020-03-28 16:50:39 · 250 阅读 · 0 评论 -
redis业务请求控制次数
使用jedis实现不同等级在一定时间内请求次数控制。package jedis;import org.junit.Test;import redis.clients.jedis.Jedis;import redis.clients.jedis.exceptions.JedisDataException;public class Demo { private String l...原创 2020-03-23 16:10:11 · 596 阅读 · 0 评论 -
redis通用指令
redis通用指令key通用指令操作del key 删除keyexists key 判断key是否存在type key 获取key的类型expire key s 设置key的有效期 秒为单位pexpire key millis设置key的有效期 毫秒为单位expireat key timestamp设置key的有效期 秒为单位,时间戳pexpireat key ...原创 2020-03-23 10:57:37 · 160 阅读 · 0 评论 -
redis五种数据类型及用法
Redis简介(nosql)Redis 是完全开源免费的,分布式的,高性能的key-value数据库。Redis 与其他 key - value 缓存产品有以下三个特点: Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。 Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,...原创 2018-09-13 17:34:53 · 778 阅读 · 0 评论 -
【转】硬核!16000 字 Redis 面试知识点总结,建议收藏!
Redis 是什么面试官:你先来说下 Redis 是什么吧!我:(这不就是总结下 Redis 的定义和特点嘛)Redis 是 C 语言开发的一个开源的(遵从 BSD 协议)高性能键值对(key-value)的内存数据库,可以用作数据库、缓存、消息中间件等。它是一种 NoSQL(not-only sql,泛指非关系型数据库)的数据库。我顿了一下,接着说,Redis 作为一个内存...转载 2020-03-13 15:28:51 · 169 阅读 · 0 评论