SpringBoot 整合 Redis

依赖

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<!-- 对象转map是需要 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-json</artifactId>
</dependency>

配置文件

spring.redis.host=127.0.0.1
spring.redis.port=6379

RedisTemplate

@Service
public class RedisService {

    @Autowired
    private RedisTemplate redisTemplate;

    public void redisTemplateTest(){
        ValueOperations valueOperations = redisTemplate.opsForValue();
        valueOperations.set("key1","value1");
        Object key1 = valueOperations.get("key1");
        System.out.println(key1);

        RedisConnection redisConnection = redisTemplate.getConnectionFactory().getConnection();
        redisConnection.set("key2".getBytes(),"value2".getBytes());
        byte[] bytes = redisConnection.get("key2".getBytes());
        String value = bytes == null ? null : new String(bytes);
        System.out.println(value);

    }

}

StringRedisTemplate

@Configuration
public class MyRedisTemplate {

    //自定义StringRedisTemplate
    @Bean(name = "myStringRedisTemplate")
    public StringRedisTemplate myStringRedisTemplate(RedisConnectionFactory factory, ObjectMapper objectMapper){
        StringRedisTemplate stringRedisTemplate = new StringRedisTemplate(factory);
        //设置序列化器
        stringRedisTemplate.setHashValueSerializer(new Jackson2JsonRedisSerializer<Object>(Object.class));
        return stringRedisTemplate;
    }

}
@Service
public class RedisService {

    @Autowired
    @Qualifier("myStringRedisTemplate")
    private StringRedisTemplate stringRedisTemplate;

    @Autowired
    private ObjectMapper objectMapper;

    public void stringRedisTemplateTest(){
        //存入string
        ValueOperations<String, String> valueOperations = stringRedisTemplate.opsForValue();
        valueOperations.set("key1","value1");
        Object key1 = valueOperations.get("key1");
        System.out.println(key1);

        //存入hash
        HashOperations<String, Object, Object> hashOperations = stringRedisTemplate.opsForHash();
        hashOperations.put("hashKey1","vk","vv");
        Object o = hashOperations.get("hashKey1", "vk");
        System.out.println(o);

        //map存入hash
        HashMap<String, String> map = new HashMap<>();
        map.put("123","aaa");
        map.put("456","bbb");
        hashOperations.putAll("hashKey2",map);
        Set<Object> hashKey2 = hashOperations.keys("hashKey2");
        hashKey2.forEach(obj ->{
            System.out.println(o);
        });

        //对象转map存入hash
        Jackson2HashMapper jackson2HashMapper = new Jackson2HashMapper(objectMapper, false);
        MyUser myUser = new MyUser("admin", "123456");
        Map<String, Object> objectMap = jackson2HashMapper.toHash(myUser);
        //设置序列化器,使用自定义StringRedisTemplate则不需要
        //stringRedisTemplate.setHashValueSerializer(new Jackson2JsonRedisSerializer<Object>(Object.class));
        hashOperations.putAll("hashKey3",objectMap);

        //发布消息
        stringRedisTemplate.convertAndSend("xxxx","message");

        //订阅消息
        RedisConnection connection = stringRedisTemplate.getConnectionFactory().getConnection();
        connection.subscribe(new MessageListener() {
            @Override
            public void onMessage(Message message, byte[] bytes) {

            }
        },"xxxx".getBytes());

    }

}
posted @ 2022-03-07 18:04  叕叕666  阅读(54)  评论(0)    收藏  举报