栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java整合Redis

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java整合Redis

简介

Spring-Data-Redis是spring大家族的一部分,通过简单的配置访问Redis服务,对Reids底层开发包(Jedis, JRedis, and RJC)进行了高度封装,RedisTemplate提供了Redis各种操作、异常处理及序列化,支持发布订阅。

RedisTemplate介绍

Spring封装了RedisTemplate对象来进行对Redis的各种操作,它支持所有的Redis原生的api。

RedisTemplate中定义了对5种数据结构操作

redisTemplate.opsForValue();//操作字符串
redisTemplate.opsForHash();//操作hash
redisTemplate.opsForList();//操作list
redisTemplate.opsForSet();//操作set
redisTemplate.opsForZSet();//操作有序set
StringRedisTemplate与RedisTemplate

两者的关系是StringRedisTemplate继承RedisTemplate。两者的数据是不共通的;也就是说StringRedisTemplate只能管理StringRedisTemplate里面的数据,RedisTemplate只能管理RedisTemplate中的数据。SDR默认采用的序列化策略有两种,一种是String的序列化策
略,一种是JDK的序列化策略。
StringRedisTemplate默认采用的是String的序列化策略,保存的key和value都是采用此策略序列化保存的。RedisTemplate默认采用的是JDK的序列化策略,保存的key和value都是采用此策略序列化保存的。 pom.xml添加依赖


        
            org.springframework.boot
            spring-boot-starter-data-redis-reactive
        
        
            org.springframework.boot
            spring-boot-starter-web
        

        
            org.springframework.boot
            spring-boot-starter-test
            test
        
        
            io.projectreactor
            reactor-test
            test
        
    
在application.properties中配置
#redis服务器连接地址
spring.redis.host=192.168.134.130
#redis服务器连接端口
spring.redis.port=6379
#连接池最大连接数
spring.redis.pool.max-active=8
#连接池最大阻塞等待时间(使用负值表示没有限制)
spring.redis.pool.max-wait=-1
#连接池中的最大空闲连接
spring.redis.pool.max-idle=8
#连接池中的最小空闲连接
spring.redis.pool.min-idle=0
#连接超时时间(毫秒)
spring.redis.timeout=30000
自定义序列化
package com.neu.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;


@Configuration
public class RedisConfig {
    @Bean
    public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory){
        RedisTemplate redisTemplate = new RedisTemplate<>();
        //添加序列化机制
        redisTemplate.setKeySerializer(new StringRedisSerializer());
        redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());
        redisTemplate.setHashKeySerializer(new StringRedisSerializer());
        redisTemplate.setHashValueSerializer(new GenericJackson2JsonRedisSerializer());
        redisTemplate.setConnectionFactory(redisConnectionFactory);
        return redisTemplate;
    }
}

使用redisTemplate进行各类型的CURD操作
package com.neu;

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.redis.core.RedisTemplate;

import java.util.Set;

@SpringBootTest
class SpringDataRedisApplicationTests {

    @Autowired
    RedisTemplate redisTemplate;

    
    @Test
    void contextLoads() {
        //保存数据
        redisTemplate.opsForValue().set("k1","v1");
        //获取数据
        redisTemplate.opsForValue().get("k1");
    }
    
    @Test
    void listTest(){
        //添加元素
        redisTemplate.opsForList().rightPush("l1","v1");
        redisTemplate.opsForList().rightPush("l2","v2");
        //获取元素
        System.out.println(redisTemplate.opsForList().rightPop("l1"));
    }
    
    @Test
    void hashTest(){
        //添加hash元素
        redisTemplate.opsForHash().put("user","name","科比");
        redisTemplate.opsForHash().put("user","age",18);
        //获取元素
        String o = (String) redisTemplate.opsForHash().get("user", "name");
        System.out.println(o);
    }
    
    @Test
    void setTest(){
        //添加元素
        redisTemplate.opsForSet().add("s1","v1");
        redisTemplate.opsForSet().add("s1","v1");
        redisTemplate.opsForSet().add("s1","v2");
        //获取元素
        Set s = redisTemplate.opsForSet().members("s1");
        for (Object o:s){
            System.out.println(o);
        }
        //获取set集合的长度
        System.out.println(redisTemplate.opsForSet().size("s1"));
    }
    
    @Test
    void zsetTest(){
        //添加元素
        redisTemplate.opsForZSet().add("z1","z1",67);
        redisTemplate.opsForZSet().add("z1","z2",68);
        redisTemplate.opsForZSet().add("z1","z3",88);
        //获取元素
//        Set z1 = redisTemplate.opsForZSet().range("z1", 0, -1);
        Set z1 = redisTemplate.opsForZSet().rangeByScore("z1",50,80);
        for (Object o:z1){
            System.out.println(o);
        }
    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/786292.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号