目录
3.1.在pom.xml导入spring data redis的坐标
1.Redis服务端环境搭建
以
docker
的形式搭建
Redis
服务
docker run -di --name=tensquare_redis -p 6379:6379 redis
2.SpringDataRedis简介
Spring-data-redis
是
spring
大家族的一部分,提供了在
srping
应用中通过简单的配置访问
redis服务,对reids
底层开发包
(Jedis,JRedis,andRJC)
进行了高度封装,
RedisTemplate
提供了
redis各种操作。
3.SpringDataRedis代码实现
3.1.在pom.xml导入spring data redis的坐标
<!-- 此处引入redis-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
3.2.在application.yml添加redis配置
server:
port: 9004
spring:
application:
name: tensquare-article #指定服务名
redis:
host: 此处填写你的redis——ip地址
port: 6379
database: 2
3.3.RedisTemplate实际应用
/**
* 根据ID查询实体
*
* @param id
* @return
*/
public Article findById(String id) {
//1.先redis查询有没有文章数据
/*BoundValueOperations bound = redisTemplate.boundValueOps("a");
bound.set("value1");
bound.set("value2");*/
Article article = (Article) redisTemplate.opsForValue().get("article_" + id);
//2.1.如果没有,查询数据库,获取文章,把文章存入redis
if (article == null) {
article = articleDao.findById(id).get();
//把文章存入redis
// redisTemplate.opsForValue().set("article_"+id,article);
//设置过期时长
redisTemplate.opsForValue().set("article_" + id, article, 20, TimeUnit.SECONDS);
}
//2.2.如果有,直接返回redis数据
return article;
}
4operation接口
关于spring-redis
1. 连接池自动管理,提供了一个高度封装的“RedisTemplate”类
2. 针对jedis客户端中大量api进行了归类封装,将同一类型操作封装为operation接口
operation接口
ValueOperations:简单K-V操作
SetOperations:set类型数据操作
ZSetOperations:zset类型数据操作
HashOperations:针对map类型的数据操作
ListOperations:针对list类型的数据操作
3. 提供了对key的“bound”(绑定)便捷化操作API,可以通过bound封装指定的key,然后进行一系列的操作而无须“显式”的再次指定Key,即BoundKeyOperations: BoundValueOperations BoundSetOperations BoundListOperations BoundSetOperations BoundHashOperations
4. 将事务操作封装,有容器控制。
5. 针对数据的“序列化/反序列化”,提供了多种可选择策略(RedisSerializer)
5.常用方法
String类型
/*stirng类型*/
// 有则取出key值所对应的值
redisTemplate.opsForValue().get(key);
// 设置当前的key以及value值
redisTemplate.opsForValue().set(key, value);
// 设置当前的key以及value值并且设置过期时间
redisTemplate.opsForValue().set(key, value, timeout, unit);
// 返回key中字符串的子字符
redisTemplate.opsForValue().get(key, start, end);
// 将旧的key设置为value,并且返回旧的key
redisTemplate.opsForValue().getAndSet(key, value);
// 将值 value 关联到 key,并将 key 的过期时间设为 timeout
redisTemplate.opsForValue().set(key, value, timeout, unit);
// 删除单个key值
redisTemplate.delete(key);
// 设置过期时间
redisTemplate.expire(key, timeout, unit);
redisTemplate.expireAt(key, date);
// 修改redis中key的名称
redisTemplate.rename(oldKey, newKey);
// 返回传入key所存储的值的类型
redisTemplate.type(key);
// 如果旧值存在时,将旧值改为新值
redisTemplate.renameIfAbsent(oldKey, newKey);
// 从redis中随机取出一个key
redisTemplate.randomKey();
// 返回当前key所对应的剩余过期时间
redisTemplate.getExpire(key);
// 返回剩余过期时间并且指定时间单位
redisTemplate.getExpire(key, unit);
// 将key持久化保存
redisTemplate.persist(key);
// 将当前数据库的key移动到指定redis中数据库当中
redisTemplate.move(key, dbIndex);
其他方法懒得写,参考链接
https://blog.csdn.net/sinat_22797429/article/details/89196933