1. pom.xml添加依赖
<dependencies>    <dependency>        <groupid>org.springframework.boot</groupid>        <artifactid>spring-boot-starter</artifactid>    </dependency>    <dependency>        <groupid>org.springframework.boot</groupid>        <artifactid>spring-boot-starter-web</artifactid>    </dependency>    <dependency>        <groupid>org.projectlombok</groupid>        <artifactid>lombok</artifactid>        <optional>true</optional>    </dependency>    <dependency>        <groupid>org.springframework.boot</groupid>        <artifactid>spring-boot-starter-test</artifactid>        <scope>test</scope>    </dependency>    <!--集成redis-->    <dependency>        <groupid>org.springframework.boot</groupid>        <artifactid>spring-boot-starter-data-redis</artifactid>    </dependency></dependencies>
2. application-dev.xml配置
#单机模式spring:    redis:    host: 192.168.56.101 # redis服务器地址    database: 0 # redis数据库索引(默认为0)    port: 6379 # redis服务器连接端口    password: redis # redis服务器连接密码(默认为空)    timeout: 300ms # 连接超时时间(毫秒)
# 哨兵模式
spring:  redis:    sentinel:      master: mymaster      nodes: 192.168.56.101:26379,192.168.56.102:26379,192.168.56.103:26379      password: redis
3. java config配置(单节点)
package com.powertrade.redis.common.config;import com.fasterxml.jackson.annotation.jsonautodetect;import com.fasterxml.jackson.annotation.propertyaccessor;import com.fasterxml.jackson.databind.objectmapper;import com.fasterxml.jackson.databind.jsontype.impl.laissezfairesubtypevalidator;import org.springframework.cache.annotation.enablecaching;import org.springframework.context.annotation.bean;import org.springframework.context.annotation.configuration;import org.springframework.data.redis.cache.rediscacheconfiguration;import org.springframework.data.redis.cache.rediscachemanager;import org.springframework.data.redis.cache.rediscachewriter;import org.springframework.data.redis.connection.redisconnectionfactory;import org.springframework.data.redis.core.redistemplate;import org.springframework.data.redis.serializer.jackson2jsonredisserializer;import org.springframework.data.redis.serializer.redisserializationcontext;import org.springframework.data.redis.serializer.redisserializer;import org.springframework.data.redis.serializer.stringredisserializer;import java.time.duration;/** * redis单机配置 */@enablecaching@configurationpublic class baseredisconfig {    @bean    public redistemplate<string, object> redistemplate(redisconnectionfactory redisconnectionfactory) {        redisserializer<object> serializer = redisserializer();        redistemplate<string, object> redistemplate = new redistemplate<>();        redistemplate.setconnectionfactory(redisconnectionfactory);        redistemplate.setkeyserializer(new stringredisserializer());        redistemplate.setvalueserializer(serializer);        redistemplate.sethashkeyserializer(new stringredisserializer());        redistemplate.sethashvalueserializer(serializer);        redistemplate.afterpropertiesset();        return redistemplate;    }    @bean    public redisserializer<object> redisserializer() {        //创建json序列化器        jackson2jsonredisserializer<object> serializer = new jackson2jsonredisserializer<>(object.class);        objectmapper objectmapper = new objectmapper();        objectmapper.setvisibility(propertyaccessor.all, jsonautodetect.visibility.any);        //必须设置,否则无法将json转化为对象,会转化成map类型        objectmapper.activatedefaulttyping(laissezfairesubtypevalidator.instance,objectmapper.defaulttyping.non_final);        serializer.setobjectmapper(objectmapper);        return serializer;    }    @bean    public rediscachemanager rediscachemanager(redisconnectionfactory redisconnectionfactory) {        rediscachewriter rediscachewriter = rediscachewriter.nonlockingrediscachewriter(redisconnectionfactory);        //设置redis缓存有效期为1天        rediscacheconfiguration rediscacheconfiguration = rediscacheconfiguration.defaultcacheconfig()                .serializevalueswith(redisserializationcontext.serializationpair.fromserializer(redisserializer())).entryttl(duration.ofdays(1));        return new rediscachemanager(rediscachewriter, rediscacheconfiguration);    }}
4. 哨兵机制 (多节点配置)
package com.powertrade.redis.common.config;import com.fasterxml.jackson.annotation.jsonautodetect;import com.fasterxml.jackson.annotation.propertyaccessor;import com.fasterxml.jackson.databind.objectmapper;import com.fasterxml.jackson.databind.jsontype.impl.laissezfairesubtypevalidator;import org.springframework.beans.factory.annotation.value;import org.springframework.cache.annotation.enablecaching;import org.springframework.context.annotation.bean;import org.springframework.context.annotation.configuration;import org.springframework.data.redis.cache.rediscacheconfiguration;import org.springframework.data.redis.cache.rediscachemanager;import org.springframework.data.redis.cache.rediscachewriter;import org.springframework.data.redis.connection.redisconnectionfactory;import org.springframework.data.redis.connection.redisnode;import org.springframework.data.redis.connection.redispassword;import org.springframework.data.redis.connection.redissentinelconfiguration;import org.springframework.data.redis.core.redistemplate;import org.springframework.data.redis.serializer.jackson2jsonredisserializer;import org.springframework.data.redis.serializer.redisserializationcontext;import org.springframework.data.redis.serializer.redisserializer;import org.springframework.data.redis.serializer.stringredisserializer;import java.time.duration;/** * redis哨兵机制配置 */@enablecaching@configurationpublic class baseredisconfig {    @value("${spring.redis.sentinel.nodes}")    private string redisnodes;    @value("${spring.redis.sentinel.master}")    private string master;    @value("${spring.redis.sentinel.password}")    private string password;    /**     * redis哨兵配置     */    @bean    public redissentinelconfiguration redissentinelconfiguration(){        redissentinelconfiguration configuration = new redissentinelconfiguration();        string[] host = redisnodes.split(",");        for(string redishost : host){            string[] item = redishost.split(":");            string ip = item[0];            string port = item[1];            configuration.addsentinel(new redisnode(ip, integer.parseint(port)));        }        configuration.setpassword(redispassword.of(password));        configuration.setmaster(master);        return configuration;    }    @bean    public redistemplate<string, object> redistemplate(redisconnectionfactory redisconnectionfactory) {        redisserializer<object> serializer = redisserializer();        redistemplate<string, object> redistemplate = new redistemplate<>();        redistemplate.setconnectionfactory(redisconnectionfactory);        redistemplate.setkeyserializer(new stringredisserializer());        redistemplate.setvalueserializer(serializer);        redistemplate.sethashkeyserializer(new stringredisserializer());        redistemplate.sethashvalueserializer(serializer);        redistemplate.afterpropertiesset();        return redistemplate;    }    @bean    public redisserializer<object> redisserializer() {        //创建json序列化器        jackson2jsonredisserializer<object> serializer = new jackson2jsonredisserializer<>(object.class);        objectmapper objectmapper = new objectmapper();        objectmapper.setvisibility(propertyaccessor.all, jsonautodetect.visibility.any);        //必须设置,否则无法将json转化为对象,会转化成map类型        objectmapper.activatedefaulttyping(laissezfairesubtypevalidator.instance,objectmapper.defaulttyping.non_final);        serializer.setobjectmapper(objectmapper);        return serializer;    }    @bean    public rediscachemanager rediscachemanager(redisconnectionfactory redisconnectionfactory) {        rediscachewriter rediscachewriter = rediscachewriter.nonlockingrediscachewriter(redisconnectionfactory);        //设置redis缓存有效期为1天        rediscacheconfiguration rediscacheconfiguration = rediscacheconfiguration.defaultcacheconfig()                .serializevalueswith(redisserializationcontext.serializationpair.fromserializer(redisserializer())).entryttl(duration.ofdays(1));        return new rediscachemanager(rediscachewriter, rediscacheconfiguration);    }    }
5. redis工具类
package com.powertrade.redis.common.utils;import lombok.requiredargsconstructor;import org.springframework.data.redis.core.boundsetoperations;import org.springframework.data.redis.core.hashoperations;import org.springframework.data.redis.core.redistemplate;import org.springframework.data.redis.core.valueoperations;import org.springframework.stereotype.component;import java.util.collection;import java.util.iterator;import java.util.list;import java.util.map;import java.util.set;import java.util.concurrent.timeunit;@component@requiredargsconstructorpublic class rediscache{    public final redistemplate redistemplate;    /**     * 缓存基本的对象,integer、string、实体类等     *     * @param key 缓存的键值     * @param value 缓存的值     */    public <t> void setcacheobject(final string key, final t value)    {        redistemplate.opsforvalue().set(key, value);    }    /**     * 缓存基本的对象,integer、string、实体类等     *     * @param key 缓存的键值     * @param value 缓存的值     * @param timeout 时间     * @param timeunit 时间颗粒度     */    public <t> void setcacheobject(final string key, final t value, final integer timeout, final timeunit timeunit)    {        redistemplate.opsforvalue().set(key, value, timeout, timeunit);    }    /**     * 设置有效时间     *     * @param key redis键     * @param timeout 超时时间     * @return true=设置成功;false=设置失败     */    public boolean expire(final string key, final long timeout)    {        return expire(key, timeout, timeunit.seconds);    }    /**     * 设置有效时间     *     * @param key redis键     * @param timeout 超时时间     * @param unit 时间单位     * @return true=设置成功;false=设置失败     */    public boolean expire(final string key, final long timeout, final timeunit unit)    {        return redistemplate.expire(key, timeout, unit);    }    /**     * 获得缓存的基本对象。     *     * @param key 缓存键值     * @return 缓存键值对应的数据     */    public <t> t getcacheobject(final string key)    {        valueoperations<string, t> operation = redistemplate.opsforvalue();        return operation.get(key);    }    /**     * 删除单个对象     *     * @param key     */    public boolean deleteobject(final string key)    {        return redistemplate.delete(key);    }    /**     * 删除集合对象     *     * @param collection 多个对象     * @return     */    public long deleteobject(final collection collection)    {        return redistemplate.delete(collection);    }    /**     * 缓存list数据     *     * @param key 缓存的键值     * @param datalist 待缓存的list数据     * @return 缓存的对象     */    public <t> long setcachelist(final string key, final list<t> datalist)    {        long count = redistemplate.opsforlist().rightpushall(key, datalist);        return count == null ? 0 : count;    }    /**     * 获得缓存的list对象     *     * @param key 缓存的键值     * @return 缓存键值对应的数据     */    public <t> list<t> getcachelist(final string key)    {        return redistemplate.opsforlist().range(key, 0, -1);    }    /**     * 缓存set     *     * @param key 缓存键值     * @param dataset 缓存的数据     * @return 缓存数据的对象     */    public <t> boundsetoperations<string, t> setcacheset(final string key, final set<t> dataset)    {        boundsetoperations<string, t> setoperation = redistemplate.boundsetops(key);        iterator<t> it = dataset.iterator();        while (it.hasnext())        {            setoperation.add(it.next());        }        return setoperation;    }    /**     * 获得缓存的set     *     * @param key     * @return     */    public <t> set<t> getcacheset(final string key)    {        return redistemplate.opsforset().members(key);    }    /**     * 缓存map     *     * @param key     * @param datamap     */    public <t> void setcachemap(final string key, final map<string, t> datamap)    {        if (datamap != null) {            redistemplate.opsforhash().putall(key, datamap);        }    }    /**     * 获得缓存的map     *     * @param key     * @return     */    public <t> map<string, t> getcachemap(final string key)    {        return redistemplate.opsforhash().entries(key);    }    /**     * 往hash中存入数据     *     * @param key redis键     * @param hkey hash键     * @param value 值     */    public <t> void setcachemapvalue(final string key, final string hkey, final t value)    {        redistemplate.opsforhash().put(key, hkey, value);    }    /**     * 获取hash中的数据     *     * @param key redis键     * @param hkey hash键     * @return hash中的对象     */    public <t> t getcachemapvalue(final string key, final string hkey)    {        hashoperations<string, string, t> opsforhash = redistemplate.opsforhash();        return opsforhash.get(key, hkey);    }    /**     * 获取多个hash中的数据     *     * @param key redis键     * @param hkeys hash键集合     * @return hash对象集合     */    public <t> list<t> getmulticachemapvalue(final string key, final collection<object> hkeys)    {        return redistemplate.opsforhash().multiget(key, hkeys);    }    /**     * 获得缓存的基本对象列表     *     * @param pattern 字符串前缀     * @return 对象列表     */    public collection<string> keys(final string pattern)    {        return redistemplate.keys(pattern);    }}
以上就是springboot集成redis的方法的详细内容。
   
 
   