目录

Spring Data Redis 快速指南

目录
@Configuration
class RedisConfiguration {

  @Bean
  public JedisConnectionFactory redisConnectionFactory() {

    RedisStandaloneConfiguration config = new RedisStandaloneConfiguration("server", 6379);
    return new JedisConnectionFactory(config);
  }
}

模板为Redis交互提供了一个高级抽象。RedisConnection提供接受和返回二进制值(字节数组)的低级方法,而模板负责序列化和连接管理,使用户不必处理这些细节。此外,模板还提供了operations视图(根据Redis命令参考中的分组),它提供了丰富的、泛型的接口,用于处理特定类型或特定键(通过键绑定接口)。

一旦配置好,模板就是线程安全的,可以跨多个实例重用。

RedisTemplate的大部分操作都使用基于java的序列化程序。这意味着由模板写入或读取的任何对象都将通过Java进行序列化和反序列化。

k-v都是String类型,官方建议符合这种格式的推荐使用 StringRedisTemplate。

由于Redis中存储的键和值通常是java.lang.String,因此Redis模块提供了RedisConnection和RedisTemplate的两个扩展,分别是StringRedisConnection(及其DefaultStringRedisConnection实现)和StringRedisTemplate,这是一种便捷的一站式解决方案 用于密集的String操作。

public class Person {
  String firstname;
  String lastname;

  // …
}

public class HashMapping {

  @Autowired
  HashOperations<String, byte[], byte[]> hashOperations;

  HashMapper<Object, byte[], byte[]> mapper = new ObjectHashMapper();

  public void writeHash(String key, Person person) {

    Map<byte[], byte[]> mappedHash = mapper.toHash(person);
    hashOperations.putAll(key, mappedHash);
  }

  public Person loadHash(String key) {

    Map<byte[], byte[]> loadedHash = hashOperations.entries("key");
    return (Person) mapper.fromHash(loadedHash);
  }
}

Jackson2JsonRedisSerializer可以将对象转换成JSON格式。

Interface Description
Key Type Operations
GeoOperations Redis geospatial operations, such as GEOADD, GEORADIUS,…
HashOperations Redis hash operations
HyperLogLogOperations Redis HyperLogLog operations, such as PFADD, PFCOUNT,…
ListOperations Redis list operations
SetOperations Redis set operations
ValueOperations Redis string (or value) operations
ZSetOperations Redis zset (or sorted set) operations
Key Bound Operations
BoundGeoOperations Redis key bound geospatial operations
BoundHashOperations Redis hash key bound operations
BoundKeyOperations Redis key bound operations
BoundListOperations Redis list key bound operations
BoundSetOperations Redis set key bound operations
BoundValueOperations Redis string (or value) key bound operations
BoundZSetOperations Redis zset (or sorted set) key bound operations

由于在RedisTemplate中,ValueOperationsBoundValueOperations这种都是一一对应的关系。BoundValueOperations只不过是先绑定key,再进行操作的,所以本文会着重分析ValueOperations这样的操作类的API。

@SpringBootTest
public class RedisTests {

  @Autowired
  private StringRedisTemplate redisTemplate;

  @Test
  public void testHashOps() {
    System.out.println(redisTemplate.toString());
    HashOperations<String,String,String> ops = redisTemplate.opsForHash();
    ops.put("id","refreshToken","token");
    Object aa = ops.get("id","refreshToken");
    System.out.println(aa);
  }
}

官方:Spring Data Redis 2.2.6

Spring Data Redis的基本使用和应用场景

SpringBoot利用spring-boot-starter-data-redis整合Redis