数据库
首页 > 数据库> > spring boot——集成redis——参考转载

spring boot——集成redis——参考转载

作者:互联网

原文连接:

 

(1)、https://blog.csdn.net/weixin_39025362/article/details/105042476?spm=1001.2101.3001.6650.4&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-4-105042476-blog-117926658.pc_relevant_scanpaymentv1&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-4-105042476-blog-117926658.pc_relevant_scanpaymentv1&utm_relevant_index=9

 

 

(2)、https://blog.csdn.net/XinhuaShuDiao/article/details/84906538

 

 

 

 

 

 

1. 先了解RedisTemplate和StringRedisTemplate之间的关系:

 

 

RedisTemplate是Spring对于Redis的封装,而StringRedisTemplate继承RedisTemplate。

 

 

两者的数据是不共通的;也就是说StringRedisTemplate只能管理StringRedisTemplate里面的数据,

 

 

RedisTemplate只能管理RedisTemplate中的数据。

 

 

StringRedisTemplate默认采用的是String的序列化策略,保存的key和value都是采用此策略序列化保存的。

 

 

RedisTemplate默认采用的是JDK的序列化策略,保存的key和value都是采用此策略序列化保存的。

 

 

 

2. RedisTemplate和StringRedisTemplate使用上的差别

 

RedisTemplate:

 

 

 

redisTemplate中定义了对几种常用数据结构操作:

 

 

redisTemplate.opsForList();    //操作list


redisTemplate.opsForValue();    //操作字符串


redisTemplate.opsForCluster();    //集群时使用


redisTemplate.opsForGeo();    //地理位置时使用


redisTemplate.opsForHash();    //操作hash


redisTemplate.opsForSet();    //操作set


redisTemplate.opsForZSet();    //操作有序set

 

 

 

 

 

 

StringRedisTemplate中定义的5中数据结构,其实和redisTemplate一样,只是参数改成了String,

 

两者的使用就看大家的业务场景了,对笔者来说stringRedisTemplate也够用了

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5. RedisConfig配置类,相当于配置了RedisTemplate、和StringRedisTemplate

 

@Configuration
public class RedisConfig{

    @Autowired
    RedisConnectionFactory redisConnectionFactory;

    @Bean
    public RedisTemplate<String, Object> functionDomainRedisTemplate() {
        RedisTemplate<String, Object> redisTemplate = new RedisTemplate<String, Object>();
        initDomainRedisTemplate(redisTemplate, redisConnectionFactory);
        return redisTemplate;
    }
	/*
	*设置redisTemplate序列化策略,否则在使用redisTemplate的时候在redis的客户端查看会出现乱码
	*/
    private void initDomainRedisTemplate(RedisTemplate<String, Object> redisTemplate, RedisConnectionFactory factory) {
        redisTemplate.setKeySerializer(new StringRedisSerializer());
        redisTemplate.setHashKeySerializer(new StringRedisSerializer());
        redisTemplate.setHashValueSerializer(new JdkSerializationRedisSerializer());
        redisTemplate.setValueSerializer(new JdkSerializationRedisSerializer());
        redisTemplate.setConnectionFactory(factory);
    }
}

  

 

 

 

 

 

 

6、到这一步就可以在代码上就使用redis了,下面简单演示StringRedisTemplate方法使用,如设置过期时间600秒

 

 //先引入StringRedisTemplate
 @Autowired
 private StringRedisTemplate stringRedisTemplate;



//向redis里存入数据和设置缓存时间  
stringRedisTemplate.opsForValue().set("redis", "100", 60 * 10, TimeUnit.SECONDS);
//val做-1操作  
stringRedisTemplate.boundValueOps("redis").increment(-1);
//根据key获取缓存中的val  
stringRedisTemplate.opsForValue().get("redis")
//val +1  
stringRedisTemplate.boundValueOps("redis").increment(1);
//根据key获取过期时间  
stringRedisTemplate.getExpire("redis");
//根据key获取过期时间并换算成指定单位  
stringRedisTemplate.getExpire("redis",TimeUnit.SECONDS);
//根据key删除缓存  
stringRedisTemplate.delete("redis");
//检查key是否存在,返回boolean值  
stringRedisTemplate.hasKey("redis");
//向指定key中存放set集合  
stringRedisTemplate.opsForSet().add("redis", "1","2","3");
//设置过期时间  
stringRedisTemplate.expire("redis",1000 , TimeUnit.MILLISECONDS);
//根据key查看集合中是否存在指定数据  
stringRedisTemplate.opsForSet().isMember("redis", "1");
//根据key获取set集合  
stringRedisTemplate.opsForSet().members("redis");
//验证有效时间
Long expire = stringRedisTemplate.boundHashOps("redis").getExpire();
System.out.println("redis有效时间:"+expire+"秒");

 

 

 

 

 

 

 

=====================================================================================

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

标签:spring,boot,redis,StringRedisTemplate,RedisTemplate,key,stringRedisTemplate,redi
来源: https://www.cnblogs.com/xiaobaibailongma/p/16311621.html