SpringbootプロジェクトredisTemplate快速有効操作redis

5398 ワード

このredisTemplateを簡単に紹介しましょう.今のところ私も小さな塊にしか触れていませんが、プロジェクトでは実際にokを操作しています.
今回の共有では、springBootでredisTemplateを統合し、一時的に文字列のみを操作することを紹介します.

RedisTemplateの紹介


SpringはRedisTemplateオブジェクトをカプセル化してredisに対する様々な操作を行い,すべてのredisオリジナルapiをサポートする.

RedisTemplateでは、5つのデータ構造に対する操作が定義されています。

redisTemplate.opsForValue();//     
redisTemplate.opsForHash();//  hash
redisTemplate.opsForList();//  list
redisTemplate.opsForSet();//  set
redisTemplate.opsForZSet();//    set

くだらないことは言わないで、直接コードを貼り始めました.
pom maven redis依存性の追加


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


1.springBootでのredisの構成
spring:
  session:
    store-type: redis
  redis:
    database: 0
    host: **.**.**.**
    port: 6379
    #password: **********

2.RedisConfig構成
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.alibaba.fastjson.support.config.FastJsonConfig;
import com.alibaba.fastjson.support.spring.FastJsonRedisSerializer;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cache.CacheManager;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.cache.interceptor.KeyGenerator;
import org.springframework.cache.jcache.config.JCacheConfigurerSupport;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.cache.RedisCacheManager;
import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.StringRedisTemplate;

import java.util.HashMap;
import java.util.Map;

/**
 * Created by wdd on 2019/3/18.
 *
 * @author wdd
 */

@Configuration
@EnableCaching
public class RedisConfig extends JCacheConfigurerSupport {

    @Value("${spring.redis.host}")
    private String host;
    @Value("${spring.redis.port}")
    private int port;
    @Value("${spring.redis.database}")
    private int database;
    //@Value("${cache.redis.password}")
    //private String password;

    @Bean
    @Override
    public KeyGenerator keyGenerator() {
        return (target, method, params) -> {
            StringBuilder sb = new StringBuilder();
            sb.append(target.getClass().getSimpleName()).append(".");
            sb.append(method.getName()).append(".");
            for (Object obj : params) {
                if (obj != null) {
                    sb.append(obj.toString());
                }
            }
            return sb.toString();
        };
    }

    @SuppressWarnings("rawtypes")
    @Bean
    public CacheManager cacheManager(RedisTemplate redisTemplate) {
        RedisCacheManager rcm = new RedisCacheManager(redisTemplate);
        //        s
        //rcm.setDefaultExpiration(120);// 
        //           30 
        //rcm.setDefaultExpiration(2592000);
        Map expires = new HashMap<>(2);
        expires.put("CommonService", 2592000L * 2);
        rcm.setExpires(expires);
        return rcm;
    }

    @Bean
    public RedisTemplate redisTemplate() {
        JedisConnectionFactory factory = new JedisConnectionFactory();
        factory.setHostName(host);
        //factory.setPassword(password);
        factory.setPort(port);
        factory.setDatabase(database);
        factory.afterPropertiesSet();
        StringRedisTemplate template = new StringRedisTemplate(factory);
        FastJsonRedisSerializer fastJsonRedisSerializer = new FastJsonRedisSerializer(Object.class);
        FastJsonConfig fastJsonConfig = new FastJsonConfig();
        fastJsonConfig.setSerializerFeatures(SerializerFeature.WriteClassName);
        fastJsonRedisSerializer.setFastJsonConfig(fastJsonConfig);
        template.setValueSerializer(fastJsonRedisSerializer);
        template.afterPropertiesSet();
        return template;
    }

}

実際の操作を開始し、ここでは2つの方式(1.注釈方法方式。2.k-value方式で記憶と取得)を紹介する。


一、k-value方式:
先にRedisTemplateを注入して、newの方式が呼び出すことができないことを覚えていて、さもなくば注入が失敗して、操作が失敗します
import org.springframework.data.redis.core.RedisTemplate;//   
@Resource
private RedisTemplate redisTemplate;

データをredisに保存
                        
//    :key,value,    ,    (TimeUnit   , , , ,  )
//set void set(K key, V value, long timeout, TimeUnit unit);
//TimeUnit.DAYS        
//TimeUnit.HOURS        
//TimeUnit.MINUTES        
//TimeUnit.SECONDS        
//TimeUnit.MILLISECONDS        
redisTemplate.opsForValue().set("registerMobiles:sendSms"+mobiles,code,3*60, TimeUnit.SECONDS);

 //           
 Object verificationCodeRedis = redisTemplate.opsForValue().get("registerMobiles:sendSms"+mobiles);
//      180   ,180        ,180      null

二、方法注釈方式:
@CacheConfig(cacheNames = "CommonService")//Service       ;


    @Override
    @Cacheable
    public String influencePersons() {
        //      。。。
		//        redis 
        return "";
    }

コードはこれだけです
もし問題があるならば直ちに伝言を残してください、私は第1時間のフィードバックができて、私のqqを追加することができます:983469079