自学内容网 自学内容网

Springboot整合redis

引入依赖

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

修改配置文件

//单机模式配置
spring.redis.host=172.16.7.21//ip地址
spring.redis.port=6379//端口号
spring.redis.database=1//几号数据库
spring.redis.jedis.pool.max-active=100//最大活跃数
spring.redis.jedis.pool.max-wait=1000//超过最大值的等待时间
spring.redis.jedis.pool.max-idle=10//休息时间到达后即销毁

//集群模式配置
spring.redis.cluster.nodes=172.16.7.21:7006,172.16.7.21:7001,172.16.7.21:7002,172.16.7.21:7003,172.16.7.21:7004,172.16.7.21:7005

使用(springboot整合redis时封装了两个工具类:springRedisTemplate和RedisTemplate)

StringRedisTemplate(springRedisTemplate是RedisTemplate的子类,只能存放字符串内容)

注入

@Autowired  //注入StringRedisTemplate
private StringRedisTemplate stringRedisTemplate;

hash操作

HashOperations<String, Object, Object> hash = stringRedisTemplate.opsForHash();//得到操作hash的类对象
hash.put("user", "name", "张三");//存放单个数据
Map<String, String> hashMap = new HashMap<>();
hashMap.put("age","18");
hashMap.put("sex","男");
hash.putAll("user",hashMap);//存放多个数据
hash.get("user", "name");//获取key为user的name的值
hash.entries("user");//获取user的所有的键值对
hash.keys("user");//获取key为user的所有的key的值
hash.values("user");//获取key为user的所有的value的值

String操作

ValueOperations<String, String> val = stringRedisTemplate.opsForValue();//得到操作字符串的类对象
val.set("k1","v1");//存放数据
val.set("k2","200",2,TimeUnit.MINUTES);//存放数据设置过期时间为两分钟
val.setIfAbsent("k3","v3",2,TimeUnit.MINUTES);//如果没有key为k3的数据则存入,并设置两分钟过期时间
val.get("k1");//获取key为k1的value
val.increment("k2",20)//为key为k2的value递增20

key操作

stringRedisTemplate.keys("*");//查看所有的key名
stringRedisTemplate.delete("k1");//删除指定的key
stringRedisTemplate.hasKey("k1");//判断是否存在key为k1的数据
stringRedisTemplate.expire("k2", 100, TimeUnit.SECONDS);//为指定的key设置过期时间
RedisTemplate(属于StringRedisTemplate的父类,它的泛型默认都是Object。可以存储任意类型的key和value)

编写config配置

@Configuration
public class RedisConfig {
 @Bean
 public RedisTemplate<String,Object> redisTemplate(RedisConnectionFactory factory){
     RedisTemplate<String,Object> template = new RedisTemplate<>();
     RedisSerializer<String> redisSerializer = new StringRedisSerializer();
     Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
     ObjectMapper om = new ObjectMapper();
     om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
     om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
     jackson2JsonRedisSerializer.setObjectMapper(om);
     template.setConnectionFactory(factory);
//        key序列化方式
     template.setKeySerializer(redisSerializer);
//        value序列化
     template.setValueSerializer(jackson2JsonRedisSerializer);
     template.setHashValueSerializer(jackson2JsonRedisSerializer);
//        value hashmap序列号 filed value
     template.setHashKeySerializer(redisSerializer);
     template.setHashValueSerializer(jackson2JsonRedisSerializer);
     return template;
 }
}

使用

@Autowired
private RedisTemplate redisTemplate;//注入
ValueOperations val = redisTemplate.opsForValue();//获取类对象
val.set("k11","v11");//存放数据
val.set("k12",new User("aaa",19));//存放对象数据
val.get("k12");//获取指定key的value
HashOperations hash = redisTemplate.opsForHash();//获取操作hash类对象
hash.put("b","a","哈哈哈");//存放key为b的hashkey为a的val为哈哈哈的键值对


原文地址:https://blog.csdn.net/Baizeh/article/details/140671926

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!