黑马十次方项目day02-14之使用SpringDataRedis从Redis存取数据

pom

在tensquare_article工程中加入redis的依赖jar包

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

yml

在yml中,配置redis的地址

注入redis的模板

在com.tensquare.article.service.ArticleService中,注入redis的模板类

@Service
@Transactional
public class ArticleService {

	@Autowired
	private ArticleDao articleDao;
	
	@Autowired
	private IdWorker idWorker;

	@Autowired
    private RedisTemplate redisTemplate;

    /**
     * 根据ID查询实体
     * @param id
     * @return
     */
    public Article findById(String id) {
        // 先从redis缓存中获取文章对象
        Article article = (Article) redisTemplate.opsForValue().get("article_" + id);
        if (article == null) {
            //如果article为null,代表缓存中没有存该值,那么去数据库中查询,并把数据存入redis,之后的查询就从redis中拿值
            article= articleDao.findById(id).get();
            //把数据存入redis
            redisTemplate.opsForValue().set("article_"+id,article);
        }
        return article;
    }
}

测试

写完上面的代码后, 可以运行ArticleApplication类开启服务器.
发送get请求http://localhost:9004/article/1
当第一次请求时,控制台有sql语句,第二次请求时,控制台无sql语句.代表第二次是从redis中获取数据了.

SpringDataRedis 常用api说明

以下的api用的不多, 了解即可. 主要还是redisTemplate.opsForValue()用得最多.

stringRedisTemplate.opsForValue().set("test", "100",60*10,TimeUnit.SECONDS);//向redis里存入数据和设置缓存时间
stringRedisTemplate.opsForValue().get("test")//根据key获取缓存中的val
stringRedisTemplate.boundValueOps("test").increment(-1);//val做-1操作  注意increment中的值,只能为整型,不能为字符串
stringRedisTemplate.boundValueOps("test").increment(1);//val +1
stringRedisTemplate.getExpire("test")//根据key获取过期时间
stringRedisTemplate.getExpire("test",TimeUnit.SECONDS)//根据key获取过期时间并换算成指定单位
stringRedisTemplate.delete("test");//根据key删除缓存
stringRedisTemplate.hasKey("546545");//检查key是否存在,返回boolean值
stringRedisTemplate.expire("red_123",1000 , TimeUnit.MILLISECONDS);//设置过期时间
stringRedisTemplate.opsForSet().add("red_123", "1","2","3");//向指定key中存放set集合
stringRedisTemplate.opsForSet().isMember("red_123", "1")//根据key查看集合中是否存在指定数据
stringRedisTemplate.opsForSet().members("red_123");//根据key获取set集合
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值