编辑
2023-02-21
实用工具
00
请注意,本文编写于 772 天前,最后修改于 748 天前,其中某些信息可能已经过时。

目录

介绍
Redis的特征
目的:
下载安装
简单使用
配置application文件中redis的信息
引入maven
RedisUtil工具类
具体代码演示

介绍

Redis就是个能够将信息\数据保存在内存中的缓存数据库

Redis是一个使用ANSI C编写的开源、支持网络、基于内存、可选持久性的键值对存储数据库。目前Redis的开发由Redis Labs赞助。根据月度排行网站DB-Engines.com的数据,Redis是最流行的键值对存储数据库。

Redis的特征

  • Redis是个内存(缓存)数据库,因为数据保存在内存中,所以速度快每秒执行10万次读写操作

  • 虽然Redis是一个内存数据库,但是它允许将数据保存在硬盘上,以便出现运行异常时恢复(Redis数据保存到硬盘上的策略有两种AOF和RDB可同时开启)

  • Redis保存数据使用key-value的格式,类似java中的Map类型集合

    这样使用key-value保存数据的数据库统称为"非关系型数据库" 英文"no-sql"

  • Redis的value支持各种类型 string,list,set,zset,hash

  • Redis支持微服务系统需要的分布式部署,支持master-slave(一主多从)的模式,以达到"高并发,高可用,高性能"的目的

目的:

解决缓存冗余,避免造成内存浪费,服务器直接从Redis中获取 节省内存,提高服务器性能

下载安装

官网下载地址,选择合适的版本,下载解压安装,运行redis-server.exe ,即可启动,redis可视化管理功能下载

简单使用

保存字典列表到redis,提升用户的使用体验

配置application文件中redis的信息

spring: redis: # Redis数据库索引(默认为0) database: 0 host: 127.0.0.1 port: 6379 password: # 数据库连接超时时间,2.0 中该参数的类型为Duration,这里在配置的时候需要指明单位 timeout: 10s # 连接池配置,2.0中直接使用jedis或者lettuce配置连接池 jedis: pool: # 最大空闲连接数 max-idle: 50 # 最小空闲连接数 min-idle: 5 # 等待可用连接的最大时间,负数为不限制 max-wait: -1s # 最大活跃连接数,负数为不限制 max-active: -1

引入maven

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency>

RedisUtil工具类

下载地址 主要用到以下功能

/** * 判断key是否存在 * @param key 键 * @return true 存在 false不存在 */ public boolean hasKey(String key) { try { return redisTemplate.hasKey(key); } catch (Exception e) { e.printStackTrace(); return false; } }
/** * 普通缓存获取 * @param key 键 * @return 值 */ public Object get(String key) { return key == null ? null : redisTemplate.opsForValue().get(key); }
/** * 普通缓存放入 * @param key 键 * @param value 值 * @return true成功 false失败 */ public boolean set(String key, Object value) { try { redisTemplate.opsForValue().set(key, value); return true; } catch (Exception e) { e.printStackTrace(); return false; } }
/** * 指定缓存失效时间 * @param key 键 * @param time 时间 * @param timeUnit 时间单位 * @return true/false */ public boolean expire(String key, long time, TimeUnit timeUnit) { try { if (time > 0) { redisTemplate.expire(key, time, timeUnit); } return true; } catch (Exception e) { e.printStackTrace(); return false; } }

具体代码演示

private static final String DIAGNOSIS_PROVINCE_DICT_LIST = "RecManage:DiagnosisProvinceDictList:"; @Autowired private RedisUtil redisUtil; @Override public List<DiagnosisProvinceDictEntity> getDiagnosisProvinceDictList(DiagnosisProvinceDictRequest request) { String key; if (request.getDiagnosisType()!=null){ key =DIAGNOSIS_PROVINCE_DICT_LIST+ MessageFormat.format("{0}{1}{2}","DiagnosisType",request.getDiagnosisType(),":")+ request.getInputCode(); }else { key =DIAGNOSIS_PROVINCE_DICT_LIST+ request.getInputCode(); } if(redisUtil.hasKey(key)){ List<DiagnosisProvinceDictResponse> cache = (List<DiagnosisProvinceDictResponse>) redisUtil.get(key); return cache; } List<DiagnosisProvinceDictEntity> list = baseMapper.getDiagnosisProvinceList(request); if(list==null || list.size()==0){ throw new BusinessException(ResultCodeEnum.ERR_0x1004); } redisUtil.set(key,list ); redisUtil.expire(key, 1, TimeUnit.HOURS);//redis缓存24小时 return list ; }

解释说明:根据类型设置不同的key,如果缓存中找到这个key就直接返回,没有找到就去数据库获取,并且添加到缓存中去,同时设置缓存的时间

本文作者:Weee

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!