前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java 和 Redis 的示例(2)

Java 和 Redis 的示例(2)

作者头像
张云飞Vir
发布2021-07-20 11:32:27
2970
发布2021-07-20 11:32:27
举报
文章被收录于专栏:写代码和思考写代码和思考

1. 背景

在 java 开发中集成 redis。

我们用到 Spring Data Redis 。

2.知识

Spring Data Redis 是更大的 Spring Data 系列的一部分,它提供了从 Spring 应用程序对 Redis 的轻松配置和访问。

它支持 两种 Redis 驱动程序:

Spring Data Redis 实现了对底层的抽象, 无论是那一种驱动,使用起来是一样的。

3. 示例

3.1 导入依赖包

代码语言:javascript
复制
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>

3.2 配置数据源

在配置文件 application.yml 里:

代码语言:javascript
复制
spring:
  redis:
    host: localhost
    port: 6379
    password: 123456
    database: 0

3.3 配置一个 RedisTemplate 对象

Springboot 强大的自动化配置会把 RedisConnectionFactory 对象配置好,直接用就好了。它会按 上一步的配置文件的参数配置好数据源。

RedisTemplate 是Spring 的模板方法,提供了对 redis 的抽象,我们注入一个配置,后续就可以自动装载了。

代码语言:javascript
复制
@Configuration
public class RedisConfig {


    /**
     * 通过 Spring 注入 一个 RedisTemplate
     *
     * @param redisConnectionFactory
     * @return
     */
    @Bean
    public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory) {
        StringRedisTemplate redisTemplate = new StringRedisTemplate();
        redisTemplate.setValueSerializer(jackson2JsonRedisSerializer());
        redisTemplate.setConnectionFactory(redisConnectionFactory);
        return redisTemplate;
    }

    /**
     * 注入一个 json 序列化转换器
     *
     * @return
     */
    @Bean
    public Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer() {
        ObjectMapper objectMapper = new ObjectMapper();
        objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
        objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);

        Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<>(Object.class);
        jackson2JsonRedisSerializer.setObjectMapper(objectMapper);
        return jackson2JsonRedisSerializer;
    }

}

3.3 可以使用自动装载了

代码语言:javascript
复制
    @Autowired
    private RedisTemplate redisTemplate;

代码使用:

代码语言:javascript
复制
ValueOperations<String, String> valueOperations = redisTemplate.opsForValue();
final String KEY = String.format("users:%s", id);
String result = valueOperations.get(KEY);

4. 扩展

4.1 可以操作 hash结构

写入:

代码语言:javascript
复制
 // 同时按 email 存一个id 的引用
final String KEY_MAIL = "users:by:email";
HashOperations<String, String, String> hashOperations = redisTemplate.opsForHash();
hashOperations.put(KEY_MAIL, email, result.getId() + "");

读取:

代码语言:javascript
复制
final String KEY_MAIL = "users:by:email";
HashOperations<String, String, String> hashOperations = redisTemplate.opsForHash();
String id = hashOperations.get(KEY_MAIL, email);
if (id != null) {
    return getEntity(Integer.parseInt(id));
}
return null;

5.参考:

https://spring.io/projects/spring-data-redis#overview https://docs.spring.io/spring-data/redis/docs/2.5.3/reference/html/#reference

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 背景
  • 2.知识
  • 3. 示例
    • 3.1 导入依赖包
      • 3.2 配置数据源
        • 3.3 配置一个 RedisTemplate 对象
          • 3.3 可以使用自动装载了
          • 4. 扩展
            • 4.1 可以操作 hash结构
            • 5.参考:
            相关产品与服务
            云数据库 Redis
            腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档