SpringBoot和ssm整合Redis

本文介绍了如何在SpringBoot和SSM中整合Redis,包括使用Jedis进行基本操作,如键值设置、列表、哈希、集合和有序集合的管理。此外,还展示了如何配置Jedis连接池以优化性能。进一步,文章详细讲解了SpringBoot中的StringRedisTemplate和RedisTemplate的使用,以及如何自定义序列化方式。最后提到了SpringBoot连接Redis集群的配置方法。
摘要由CSDN通过智能技术生成

SpringBoot和ssm整合Redis

(1)引入依赖
在这里插入图片描述
(2)测试

    jedis包含很多对redis操作的方法--而这些方法和原来我们使用的命令一样。
@SpringBootTest
public class RedisDemo02 {
@Test
    public void test01(){
    Jedis jedis = new Jedis("192.168.153.128", 6379);
    Set<String> keys = jedis.keys("*");
    System.out.println(keys);
 
    //对String数据类型操作
    String set = jedis.set("k3", "hello 蔡徐坤");
    System.out.println("set:"+set);
    String k3 = jedis.get("k3");
    System.out.println(k3);
//list队列数据类型操作
    jedis.lpush("k6","蔡徐坤","王源","鼎正","虎哥","刀哥");
    List<String> k6  =jedis.lrange("k6",0,-1);
    System.out.println(k6);
    //hash数据类型操作
    Map<String,String> map = new HashMap<>();
    map.put("name","菜徐琨");
    map.put("age","66");
    jedis.hset("k5",map);
 
    Map<String,String> mp1 = jedis.hgetAll("k5");
    System.out.println(mp1);
//set数据类型
    jedis.sadd("set1","aaa");
    jedis.sadd("set1","bbb");
    jedis.sadd("set1","ccc");
    System.out.println(jedis.smembers("set1"));
    //zset数据类型
    jedis.zadd("zset",99,"a");
    jedis.zadd("zset",55,"b");
    jedis.zadd("zset",33,"c");
    System.out.println(jedis.zrangeWithScores("zset",0,-1));
 
}
}

(3)运行结果
在这里插入图片描述

2.jedis使用连接池

        JedisPoolConfig config=new JedisPoolConfig();
        config.setMaxTotal(100);//最多的连接个数
        config.setMaxIdle(10); //最多空闲的连接个数
        config.setMinIdle(2); //最小的空闲个数
        config.setTestOnBorrow(true);//在获取连接对象时是否验证该连接对象的连通性
        //创建连接池对象
        JedisPool jedisPool=new JedisPool(config,"192.168.153.128",6379);

3.springboot整合redis

springboot在整合redis时提高两个模板类,StringRedisTemplate和RedisTemplate.以后对redis的操作都在该模板类中。StringRedisTemplate是RedisTemplate的子类。

(1)引入依赖
在这里插入图片描述
(2)修改配置文件
在这里插入图片描述
(3) 测试

@Autowired
    private StringRedisTemplate redisTemplate;
    @Test
    public void contesxt(){
        Set<String> keys = redisTemplate.keys("*");
        System.out.println(keys);
        redisTemplate.delete("l1");
        //操作字符串===StringRedisTemplate会把对每一种数据的操作单独封装成一个类。
        ///添加
        ValueOperations<String, String> forValue = redisTemplate.opsForValue();
        forValue.set("k1","蔡徐坤打篮球");
        String s = forValue.get("k1");
        System.out.println(s);
        //删除
        redisTemplate.delete("k1");
 
//hash
        HashOperations<String, Object, Object> forHash = redisTemplate.opsForHash();
        forHash.put("h1","name","蔡徐坤");
        forHash.put("h1","age","99");
        forHash.put("h1","address","北京");
        HashMap<String,String> map = new HashMap<>();
        map.put("name","顶真");
        map.put("age","77");
        map.put("address","西藏");
        forHash.putAll("h2",map);
        Map<Object, Object> h1 = forHash.entries("h1");
        System.out.println(h1);
        Map<Object, Object> h2 = forHash.entries("h2");
        System.out.println(h2);
        //list
        ListOperations<String, String> forList = redisTemplate.opsForList();
        forList.leftPush("l1","蔡徐坤L");
        forList.leftPush("l1","rap");
        forList.rightPush("l1","88");
        forList.rightPush("l1","北京");
        System.out.println(forList.range("l1", 0, -1));
        //set
        SetOperations<String, String> forSet = redisTemplate.opsForSet();
        forSet.add("name","蔡徐坤","鼎正","王源");
        Set<String> set =  forSet.members("name");
        System.out.println(set);
        //zset
        ZSetOperations<String, String> forZSet = redisTemplate.opsForZSet();
        forZSet.add("zset","菜徐琨",1);
        forZSet.add("zset","篮球",9);
        forZSet.add("zset","and",3);
        forZSet.add("zset","鸡",4);
        forZSet.add("zset","rap",8);
 
        Set<String> zset = forZSet.range("zset",0,-1);
        System.out.println(zset);
    }

测试结果
在这里插入图片描述
4.RedisTemplate
redisTemplate是StringRedisTemplate的父类,它类可以存储任意数据类型,但是任意类型必须序列化,默认采用的是jdk的序列化方式。jdk序列化方式阅读能力差,而且占用空间大. 我们在使用是一般需要人为指定序列化方式。

配置文件

@Configuration
public class config {
    @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);
        //value hashmap序列化
        template.setHashValueSerializer(jackson2JsonRedisSerializer);
        //field序列化  key field  value
        template.setHashKeySerializer(redisSerializer);
        return template;
    }
}

5.SpringBoot连接集群

spring.redis.cluster.nodes=192.168.223.166:7001,192.168.223.166:7002,192.168.223.166:7003,192.168.223.166:7004,192.168.223.166:7005,192.168.223.166:7006

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值