spring-data-redis配置和使用

1、引入坐标:

1)gradle

compile(
    // redis
    'redis.clients:jedis:2.9.0',
    'org.springframework.data:spring-data-redis:1.7.5.RELEASE'
)

2)spring中maven坐标

     <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>2.9.0</version>
        </dependency>
        
        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-redis</artifactId>
            <version>1.7.5.RELEASE</version>
        </dependency>

3)spring boot 中maven 坐标

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

需要在application.properties中指定redis的地址:
spring.redis.host=192.168.0.115

2、设置properties文件存储reids信息,spring boot 只需要上面3)中设置即可

redis.ip                = 192.168.0.115
redis.port              = 6379
redis.pool.maxIdle      = 200
redis.pool.maxTotal     = 1024
redis.pool.testOnBorrow = true
redis.pool.maxWait      = 1000

3、spring 和 gradle中的配置

<!-- 创建redis连接池 -->
	<bean name="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig" >
		<property name="maxIdle" value="${redis.pool.maxIdle}" />
		<property name="maxTotal" value="${redis.pool.maxTotal}" />
		<property name="maxWaitMillis" value="${redis.pool.maxWait}" />
		<property name="testOnBorrow" value="${redis.pool.testOnBorrow}" />
	</bean>
	<!-- redis连接工厂 -->
	<bean name="jedisConnectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">
		<property name="poolConfig" ref="jedisPoolConfig"></property>
		<property name="hostName" value="${redis.ip}"></property>
		<property name="port" value="${redis.port}"></property>
	</bean>

	<!-- spring提供的模板对象 -->
	<bean name="redisTemplate" class="org.springframework.data.redis.core.StringRedisTemplate">
		<property name="connectionFactory" ref="jedisConnectionFactory"></property>
	</bean>

4、使用:封装redis的工具类

package cn.j0.app.shuoba.redis;

import com.alibaba.fastjson.JSON;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.ss.formula.functions.T;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeUnit;

/**
 * FileName: StringDateRedisUtils
 * Author:   
 * Date:     2019/7/29 11:18
 * Description: redis工具类
 */

@Service
public class StringDateRedisUtils {
    @Autowired
    private StringRedisTemplate stringRedisTemplate;


    /**
     * 设置reids值
     *
     * @param hashKey 大key
     * @param key     小key
     * @param seconds 缓存的秒值
     * @param value   要缓存的值
     * @param <T>
     * @return
     */
    public <T> boolean setHashValue(String hashKey, String key, int seconds, T value) {
        try {
            String strValue = RedisService.beanToString( value );
            if (strValue == null || strValue.length() <= 0) {
                return false;
            }
            stringRedisTemplate.boundHashOps( hashKey ).put( key, strValue );
            if (seconds > 0) {
                stringRedisTemplate.expire( hashKey, seconds, TimeUnit.SECONDS );
            }
            return true;
        } catch (Exception ex) {
            return false;
        }
    }

    /**
     * 获取值
     * @param hashKey
     * @param key
     * @return
     */
    public List<T> getHashRedisList(String hashKey, String key, Class<T> clazz){
        try{
            List<T> list = new ArrayList();
            Object object = stringRedisTemplate.boundHashOps( hashKey).get( key );
            List objectlist = JSON.parseObject( object.toString(), List.class );
            for (Object obj : objectlist) {
                T vo = JSON.parseObject( obj.toString(), clazz );
                list.add( vo ) ;
            }
            return list;
        }catch (Exception e){
            return null;
        }

    }

    /**
     * 获取值
     * @param hashKey
     * @param key
     * @return Object
     */
    public Object getHashRedisList(String hashKey, String key){
        try{
           return stringRedisTemplate.boundHashOps( hashKey).get( key );
        }catch (Exception e){
            return null;
        }
    }

    /**
     * 删除
     */
    public boolean deleteHashRedis(String hashKey, String key) {
        try {
            if(StringUtils.isNotEmpty(key)){
                stringRedisTemplate.boundHashOps( hashKey ).delete( key );
            }else{
                stringRedisTemplate.delete( hashKey );
            }
            return true;
        } catch (Exception e){
            return false;
        }
    }




}

模板对象提供了两种操作redis的模式

一种是opsForXXX方式获取Operations对象,通过对象再来操作

另一种是boundHashOps(XXX)直接获取指定key的redis数据对象,进行操作

发布了69 篇原创文章 · 获赞 52 · 访问量 14万+

猜你喜欢

转载自blog.csdn.net/xzj80927/article/details/103360807