Redis 介绍: Redis 服务
Redis (REmote Dictionary Server) 是一个由Salvatore Sanfilippo 完成的key-value存储系统,是跨平台的非关系型数据库。
Redis 是一个开源的使用ANSI C语言编写、遵循BSD 协议的、支持网络、可基于内存、分布式、可选择持久性的键值对存储数据库,并提供多语言的API。
Redis 通常被认为是数据结构服务器,其值可以是字符串、哈希、列表、集合以及有序集合。
Redis 优点
异常快,每秒可以执行大约110000次写(set)操作
每秒可执行大约81000次读(get)操作
支持丰富的数据结构
操作具有原子性, 所有Redis 操作都是原子操作,这确保了两个客户端并发访问,Redis 服务器能接收更新的值。
多使用工具,缓存,消息队列(Redis 本地支持发布/订阅),应用程序中的任何短期数据。
Redis 安装
下载地址:
https://github.com/MSOpenTech/redis/releases
Redis 支持32位和64 位,下载完成后,解压后,文件夹下面包含许多子文件,打开cmd 窗口,将其切换到redis 目录下,输入命名:
D:\sdk\Redis-x64-5.0.9 redis-server.exe redis.windows.conf
如果想使用redis 启动更加容易的话,可以使用 将redis 安装路径加入到环境变量中,直接点击 redis-server.exe 即可启动redis 服务。
SpringBoot 集成Redis 过程
1. 在pom.xml 中配置相关依赖 jar
-
<dependency>
-
<groupId>org.springframework.boot
</groupId>
-
<artifactId>spring-boot-starter-data-redis
</artifactId>
-
</dependency>
2.在SpringBoot 中配置核心文件
在application.properties 文件下添加配置redis 信息
-
# 配置redis
-
spring.redis.host:localhost
-
spring.redis.password=
-
spring.redis.port=6379
3. Redis 配置类及其使用
Redis 配置类
-
-
// RedisConfig redisconfig 配置
-
@Configuration
-
public class RedisConfig {
-
/**
-
* key redis serializer: {@link StringRedisSerializer} and
-
* key redis serializer: {@link Jackson2JsonRedisSerializer}
-
**/
-
@Bean
-
public RedisTemplate
<String, Object> redisTemplate(RedisConnectionFactory factory) {
-
// 创建对象
-
RedisTemplate
<String, Object> template = new RedisTemplate
<>();
-
Jackson2JsonRedisSerializer valueRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
-
//设置Redis的value为json格式,并存储对象信息的序列化类型
-
ObjectMapper objectMapper = new ObjectMapper();
-
objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
-
objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
-
valueRedisSerializer.setObjectMapper(objectMapper);
-
-
// 创建一个keyRedisSerializer
-
RedisSerializer keyRedisSerializer = new StringRedisSerializer();
-
// 设置信息
-
template.setKeySerializer(keyRedisSerializer);
-
template.setValueSerializer(valueRedisSerializer);
-
template.setHashKeySerializer(keyRedisSerializer);
-
template.setHashValueSerializer(valueRedisSerializer);
-
template.setConnectionFactory(factory);
-
template.afterPropertiesSet();
-
return template;
-
}
-
-
// redisUtils() 方法
-
@Bean
-
public RedisUtils redisUtils(@Autowired RedisTemplate redisTemplate) {
-
return new RedisUtils(redisTemplate);
-
}
-
}
-
Redis 工具类, 首先redis 的增删改查等操作,针对多种数据类型的数据
-
-
/**
-
* redis工具类
-
*
-
* @author Jone
-
*/
-
// RedisUtils
-
@Slf4j
-
public class RedisUtils {
-
-
// 初始化变量
-
private static Logger logger = LoggerFactory.getLogger(RedisUtils.class);
-
-
-
private static RedisTemplate redisTemplate;
-
-
public RedisUtils(RedisTemplate redisTemplate) {
-
this.redisTemplate = redisTemplate;
-
}
-
-
// =============================common============================
-
-
-
/**
-
* 判断key是否存在
-
*
-
* @param key 键
-
* @return true 存在 false不存在
-
*/
-
public Boolean hasKey(String key) {
-
try {
-
return redisTemplate.hasKey(key);
-
} catch (Exception e) {
-
logger.error("判断key是否存在异常: {}", e);
-
return false;
-
}
-
}
-
-
/**
-
* 普通缓存获取
-
*
-
* @param key 键
-
* @return 值
-
*/
-
public Object get(String key) {
-
return key == null ? null : redisTemplate.opsForValue().get(key);
-
}
-
-
/**
-
* 删除
-
* @param key
-
* @return
-
*/
-
public boolean del(String ... key){
-
if(key!=null&&key.length>0){
-
-
redisTemplate.delete(key[0]);
-
return true;
-
}else{
-
redisTemplate.delete(CollectionUtils.arrayToList(key));
-
return true;
-
}
-
}
-
return false;
-
}
-
-
// SET JIHE
-
public Set getKeys(){
-
return redisTemplate.keys("*");
-
}
-
-
/**
-
* 普通缓存放入
-
*
-
* @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) {
-
logger.error("set异常: {}", e);
-
return false;
-
}
-
}
-
}
配置完备之后,自动配置RedisTemplate ,需要操作redis 的类中注入redisTeplate,如下所示:
-
// 使用RedisTemplate
-
@Autowired
-
private RedisTemplate
<String, String> redisTemplate;
-
-
@Autowired
-
private RedisTemplate
<Object, Object> redisTemplate;
转载:https://blog.csdn.net/it_lxg123/article/details/117425653