当前位置:   article > 正文

使用SpringDataRedis操作Redis_spring-boot-start-data-redis使用

spring-boot-start-data-redis使用

Redis的java客户端

  • jedis
  • Lettuce
  • Spring Data Redis

Spring Data redis 是Spring的一部分,对 Redis 底层开发包进行了高度封装。在Spring项目中,可以使用Spring Data Redis来简化操作。

Spring Data Redis使用方式

操作步骤:

  • 导入Spring Data Redis 的 maven 坐标
  • 配置Redis的数据源
  • 编写配置类,创建RedisTemplate对象
  • 通过RedisTemplate对象操作Redis

1、导入Spring Data Redis 的 maven 坐标

  1. <dependency>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-data-redis</artifactId>
  4. </dependency>

2、配置Redis的数据源

  1. spring:
  2. redis:
  3. host: 127.0.0.1
  4. port: 6379
  5. database: 1

3、编写配置类,创建RedisTemplate对象

  1. package top.suweijie.redis.config;
  2. import cn.hutool.db.nosql.redis.RedisDS;
  3. import lombok.extern.slf4j.Slf4j;
  4. import org.springframework.context.annotation.Bean;
  5. import org.springframework.context.annotation.Configuration;
  6. import org.springframework.data.redis.connection.RedisConnectionFactory;
  7. import org.springframework.data.redis.core.RedisTemplate;
  8. import org.springframework.data.redis.serializer.StringRedisSerializer;
  9. /**
  10. * @Author suweijie
  11. * @Date 2024/1/9 17:01
  12. * @Description: TODO
  13. * @Version 1.0
  14. */
  15. @Slf4j
  16. @Configuration
  17. public class RedisConfig {
  18. @Bean
  19. public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory) {
  20. log.info("redisTemplate init...");
  21. RedisTemplate redisTemplate = new RedisTemplate();
  22. redisTemplate.setKeySerializer(new StringRedisSerializer());
  23. redisTemplate.setConnectionFactory(redisConnectionFactory);
  24. return redisTemplate;
  25. }
  26. }

4、通过RedisTemplate操作Redis

  1. package top.suweijie.redis;
  2. import jdk.nashorn.internal.runtime.regexp.joni.constants.OPSize;
  3. import lombok.extern.slf4j.Slf4j;
  4. import org.junit.Test;
  5. import org.junit.runner.RunWith;
  6. import org.springframework.beans.factory.annotation.Autowired;
  7. import org.springframework.boot.test.context.SpringBootTest;
  8. import org.springframework.data.redis.core.*;
  9. import org.springframework.test.context.junit4.SpringRunner;
  10. import java.util.List;
  11. import java.util.concurrent.TimeUnit;
  12. /**
  13. * @Author suweijie
  14. * @Date 2024/1/9 17:05
  15. * @Description: TODO
  16. * @Version 1.0
  17. */
  18. @Slf4j
  19. @SpringBootTest
  20. @RunWith(SpringRunner.class)
  21. public class RedisTest {
  22. @Autowired
  23. private RedisTemplate redisTemplate;
  24. @Test
  25. public void test1() {
  26. ValueOperations stringObjectValueOperations = redisTemplate.opsForValue();
  27. HashOperations stringObjectObjectHashOperations = redisTemplate.opsForHash();
  28. ListOperations stringObjectListOperations = redisTemplate.opsForList();
  29. SetOperations setOperations = redisTemplate.opsForSet();
  30. ZSetOperations zSetOperations = redisTemplate.opsForZSet();
  31. }
  32. }

操作字符串

  1. @Test
  2. public void dealString() {
  3. //set key value
  4. redisTemplate.opsForValue().set("name","suweijie");
  5. //get key
  6. String name = (String)redisTemplate.opsForValue().get("name");
  7. //setex key seconds value
  8. redisTemplate.opsForValue().set("name","suweijie",60,TimeUnit.SECONDS);
  9. //setnx key value
  10. redisTemplate.opsForValue().setIfAbsent("name","suweijie");
  11. redisTemplate.delete("name");
  12. }

操作哈希

  1. @Test
  2. public void dealHash() {
  3. //hset key field value
  4. redisTemplate.opsForHash().put("user","name","suweijie");
  5. redisTemplate.opsForHash().put("user","age","20");
  6. //hget key field
  7. String name = (String)redisTemplate.opsForHash().get("user","name");
  8. log.info(name);
  9. //hdel key field
  10. redisTemplate.opsForHash().delete("user","age");
  11. //hkeys key
  12. Set keys = redisTemplate.opsForHash().keys("user");
  13. keys.forEach(System.out::println);
  14. //hvals key
  15. List values = redisTemplate.opsForHash().values("user");
  16. values.forEach(System.out::println);
  17. }

操作列表

  1. @Test
  2. public void dealList() {
  3. //lpush key value1 value2
  4. redisTemplate.opsForList().leftPushAll("list","4","3","2","1");
  5. //lrange key start end
  6. List list = redisTemplate.opsForList().range("list", 0, -1);
  7. list.forEach(System.out::println);
  8. //rpop key
  9. String rightPop = (String) redisTemplate.opsForList().rightPop("list");
  10. log.info(rightPop);
  11. //llen key
  12. Long size = redisTemplate.opsForList().size("list");
  13. log .info(size + "");
  14. }

操作集合

  1. @Test
  2. public void dealSet() {
  3. //sadd key member1 member2
  4. redisTemplate.opsForSet().add("set1","1","2","3","2");
  5. redisTemplate.opsForSet().add("set2","1","2","2","4");
  6. log.info("-------------------------------------------------");
  7. //smembers key
  8. Set set = redisTemplate.opsForSet().members("set1");
  9. set.forEach(System.out::println);
  10. log.info("-------------------------------------------------");
  11. //scard key
  12. Long size = redisTemplate.opsForSet().size("set2");
  13. log.info(size + "");
  14. log.info("-------------------------------------------------");
  15. //sinter key1 key2
  16. Set intersect = redisTemplate.opsForSet().intersect("set1", "set2");
  17. intersect.forEach(System.out::println);
  18. log.info("-------------------------------------------------");
  19. Set union = redisTemplate.opsForSet().union("set1", "set2");
  20. union.forEach(System.out::println);
  21. }

操作有序集合

  1. @Test
  2. public void dealZset() {
  3. //zadd score1 member1 socre2 member2
  4. redisTemplate.opsForZSet().add("zset1","swj",1);
  5. redisTemplate.opsForZSet().add("zset1","zat",2);
  6. //zrange key start end withscores
  7. Set zset1 = redisTemplate.opsForZSet().rangeByScoreWithScores("zset1", 0, 3);
  8. zset1.forEach(System.out::println);
  9. //zincryby key increment memer
  10. redisTemplate.opsForZSet().incrementScore("zset1","zat",1);
  11. //zrem key member1 member2
  12. redisTemplate.opsForZSet().remove("zset1","swj");
  13. }
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/代码探险家/article/detail/890886
推荐阅读
相关标签
  

闽ICP备14008679号