暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

SpringBoot中 集成 redisTemplate 对 Redis 的操作(一)

TC 谈 2019-08-25
790

在Java 操作redis 时,有很多工具。Redis 官网中,就有很多操作,

目前主流开发框架SpringBoot ,当然也有集成好的操作redis的工具--redisTemplate,下面就来说一说它的基本操作。

依赖包
  1. <dependency>

  2. <groupId>org.springframework.boot</groupId>

  3. <artifactId>spring-boot-starter-data-redis</artifactId>

  4. </dependency>

  5. <dependency>

  6. <groupId>org.springframework.boot</groupId>

  7. <artifactId>spring-boot-starter-web</artifactId>

  8. </dependency>

redisTemplate 序列化规则

Spring Data JPA 提供的序列化 Serializer:

1、GenericToStringSerializer

2、Jackson2JsonRedisSerializer

3、JacksonJsonRedisSerializer

4、JdkSerializationRedisSerializer

5、OxmSerializer

6、StringRedisSerializer

我们通过操作

  1. User user = new User(1, "su", new Date());

  2. redisTemplate.opsForValue().set("name","su");

  3. redisTemplate.opsForValue().set("user",user);

查看 redis 可以发现

redisTemplate 默认的是 JdkSerializationRedisSerializer 序列化方法。

如果说 我们想以json 的方法进行 序列化 可以自定义redisTemplate

  1. @Configuration

  2. public class RedisTemplateConfig {


  3. [@Bean](https://my.oschina.net/bean)

  4. public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory) {

  5. RedisTemplate<Object, Object> redisTemplate = new RedisTemplate<>();

  6. redisTemplate.setConnectionFactory(redisConnectionFactory);

  7. //定义key 序列化 方式

  8. redisTemplate.setKeySerializer(new StringRedisSerializer());

  9. //定义value 序列化 方式

  10. redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());

  11. return redisTemplate;

  12. }

  13. }

操作 可以发现

String 类型的操作

1⃣️ 添加数据

  1. User user = new User(1, "su", new Date());

  2. redisTemplate.opsForValue().set("name","su");

  3. redisTemplate.opsForValue().set("user",user);

2⃣️ 添加数据,并设置过期时间

  1. redisTemplate.opsForValue().set("age",18,10000, TimeUnit.MILLISECONDS);

3⃣️ 批量添加数据

  1. HashMap<Object, Object> map = new HashMap<>();

  2. map.put("name", "susu");

  3. map.put("age", 18);

  4. map.put("address", "shanghai");

  5. redisTemplate.opsForValue().multiSet(map);

4⃣️ 原子操作数据

  1. Long num = (Long) redisTemplate.opsForValue().getAndSet("num", 1);

5⃣️ 追加数据

  1. Integer num = redisTemplate.opsForValue().append("name", "susu");

6⃣️ 根据key 获取数据

  1. User user = (User) redisTemplate.opsForValue().get("user");

7⃣️ 批量获取数据

  1. List<Object> list = new ArrayList<>();

  2. list.add("name");

  3. list.add("address");

  4. list.add("user");

  5. List listResult = redisTemplate.opsForValue().multiGet(list);

8⃣️ 自增运算 并设置自增步长 (默认是1)

  1. Long num = redisTemplate.opsForValue().increment("num", 2);

9⃣️ 自减运算,并设置步长 (默认是1)

  1. redisTemplate.opsForValue().decrement("num");

由于篇幅有限 ,redisTemplate 的操作就先说到这里,我们下期再见。

                                    【    完    】

谢谢大家持续关注TC

    

你们的每一个交流和都是TC持续更新的动力

我是TC,可以叫我阿七一个才华与美貌于一身的美男子。欢迎来打扰

文章转载自TC 谈,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论