SpringBoot操作redis

一、导入依赖

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

二、配置application.yml

spring:
  # redis配置
  redis:
    host: localhost
    port: 6379
    #password: 123456
    database: 0 #默认连接0号数据库
    jedis:
      # jedis连接池配置
      pool:
        max-active: 8 #最大连接数
        max-wait: 1ms #等待时间
        max-idle: 4 #最大空闲时间连接数
        min-idle: 0 #最小空闲时间连接数

三、编写配置文件类

因为springboot中默认的key序列化器是JdkSerializationRedisSerializer,导致在本地redis-cli.exe中查看key时会出现乱码。配置该类主要是为了在本地的redis-cli.exe中查看key时不会乱码

/*
 * redis配置类
 * */
@Configuration
public class RedisConfig extends CachingConfigurerSupport {
    @Bean
    public RedisTemplate<Object,Object> redisTemplate(RedisConnectionFactory connectionFactory){
        RedisTemplate<Object,Object> redisTemplate = new RedisTemplate<>();
        //默认的key序列化器为:JdkSerializationRedisSerializer
        redisTemplate.setKeySerializer(new StringRedisSerializer());
        redisTemplate.setHashKeySerializer(new StringRedisSerializer());
        redisTemplate.setConnectionFactory (connectionFactory);
        return redisTemplate;

    }
}

四、使用

只需要在使用reids做缓存的类中自动注入一个由IOC容器管理的RedisTemplate,然后调用相应的类型方法即可。

1.操作String类型

@SpringBootTest
@RunWith(SpringRunner.class)
public class RedisTest {
    @Autowired
    private RedisTemplate redisTemplate;
    /*
    * 操作String类型数据
    * */
    @Test
    public void testString(){
        //设置key,value
        redisTemplate.opsForValue().set("city","四川");
        String city = (String) redisTemplate.opsForValue().get("city");
        System.out.println(city);
        //设置超时时间
        redisTemplate.opsForValue().set("key1","value1",10, TimeUnit.SECONDS);
        //setex,当key不存在时才会创建,key存在不做任何操作
        Boolean aBoolean = redisTemplate.opsForValue().setIfAbsent("city", "value2");
        System.out.println(aBoolean);//输出false
    }
}

2.操作Hash类型

@SpringBootTest
@RunWith(SpringRunner.class)
public class RedisTest {
    @Autowired
    private RedisTemplate redisTemplate;
    /*
    * 操作Hash类型数据
    * */
    @Test
    public void testHash(){
        HashOperations hashOperations = redisTemplate.opsForHash();
        //存值
        hashOperations.put("001","name","zhangsan");
        hashOperations.put("001","age","20");
        hashOperations.put("001","addr","beijing");
        //取值
        String name = (String) hashOperations.get("001", "name");
        System.out.println(name);
        //获取hash结构中的所有字段
        Set keys = hashOperations.keys("001");
        for (Object key : keys) {
            System.out.println(key);
        }
        //获取hash结构中的所有值
        List values = hashOperations.values("001");
        for (Object value : values) {
            System.out.println(value);
        }
    }
}

3.操作List类型

@SpringBootTest
@RunWith(SpringRunner.class)
public class RedisTest {
    @Autowired
    private RedisTemplate redisTemplate;
/*
    * 操作List类型数据
    * */
    @Test
    public void testList(){
        ListOperations listOperations = redisTemplate.opsForList();
        //存值
        listOperations.leftPushAll("mylist","a","b","c");
        //取值
        List<String> mylist = listOperations.range("mylist", 0, -1);
        for (String s : mylist) {
            System.out.println(s);
        }
        //获取列表长度
        Long size = listOperations.size("mylist");
        int lsize = size.intValue();
        for (int i = 0; i < lsize; i++) {
            //出队列
            String element = (String) listOperations.rightPop("mylist");
            System.out.println(element);
        }
    }
}

4.操作Set类型的数据

@SpringBootTest
@RunWith(SpringRunner.class)
public class RedisTest {
    @Autowired
    private RedisTemplate redisTemplate;
    /*
    * 操作Set类型的数据
    *
    * */
    @Test
    public void testSet(){
        SetOperations<String,String> setOperations = redisTemplate.opsForSet();
        //存值
        setOperations.add("myset","a","b","c","d");
        //取值
        Set<String> myset = setOperations.members("myset");
        for (String s : myset) {
            System.out.println(s);
        }
        //删除
        setOperations.remove("myset","a");
    }
}

5.操作ZSet类型的数据

@SpringBootTest
@RunWith(SpringRunner.class)
public class RedisTest {
    @Autowired
    private RedisTemplate redisTemplate;
    /*
    * 操作ZSet类型的数据
    * */
    @Test
    public void testZset(){
        ZSetOperations zSetOperations = redisTemplate.opsForZSet();
        //存值
        zSetOperations.add("myZset","a",1);
        zSetOperations.add("myZset","b",2);
        zSetOperations.add("myZset","c",3);
        //取值
        Set<String> myZset = zSetOperations.range("myZset", 0, -1);
        for (String s : myZset) {
            System.out.println(s);
        }
        //修改分数
        zSetOperations.incrementScore("myZset","a",3);
        //删除成员
        zSetOperations.remove("myZset","a");
    }
}

6.通用操作

@SpringBootTest
@RunWith(SpringRunner.class)
public class RedisTest {
    @Autowired
    private RedisTemplate redisTemplate;
        /*
    * 通用操作
    * */
    @Test
    public void testCommon(){
        //获取Redish中的所有key
        Set<String> keys = redisTemplate.keys("*");
        for (String key : keys) {
            System.out.println(key);
        }
        //判断某个key是否存在
        Boolean myset = redisTemplate.hasKey("myset");
        System.out.println(myset);
        //删除指定key
        redisTemplate.delete("myset");
        //获取指定key对应的value的数据类型
        DataType myZset = redisTemplate.type("myZset");
        System.out.println(myZset.name());
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蓝朽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值