Springcloud +redis 实现缓存

 

1.Springboot操作redis

引用pom

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

<dependency>
    <
groupId>org.springframework.data</groupId>
    <
artifactId>spring-data-redis</artifactId>
    <
version>2.0.13.RELEASE</version>
</
dependency>

<dependency>
    <
groupId>redis.clients</groupId>
    <
artifactId>jedis</artifactId>
</
dependency>

 

增加配置文件

spring.redis.host=localhost
spring.redis.port=6379
spring.redis.database=0

这里做了最简单的配置,超时,密码自己可以按需求设置

#redis连接密码
    password:
    #redis连接池设置
    pool:
      #最大空闲连接
      max-idle : 100
      #最小空闲连接
      min-idle : 1
      #最大连接数(负数表示没有限制)
      max-active : 1000
      #最大阻塞等待时间(负数表示没有限制)
      max-wait : -1
      #连接超时时间(毫秒)
      timeout : 0

 

以上基本配置完成了。可以在项目中使用redis了。

这里我用了一个例子

@Autowired
private StringRedisTemplate stringRedisTemplate;

 

这个类集成RedisTemplate类。因为大多数针对Redis的操作都是基于字符串的,所以这个类提供一个专门的类,它最小化了更通用的配置。

StringRedisTemplate RedisTemplate在序列化方式上有这不通,

public StringRedisTemplate() {
   RedisSerializer<String> stringSerializer = new StringRedisSerializer();
   setKeySerializer(stringSerializer);
   setValueSerializer(stringSerializer);
   setHashKeySerializer(stringSerializer);
   setHashValueSerializer(stringSerializer);
}

使用RedisTemplate序列化的时候会二进制保存键值,具体下面缓存中还会遇到。

 

上述是集成redis的最简单的应用,

 

2.下面我们看下如何利用注解实现缓存

 

springboot中使用缓存注解,主要是这几个注解

1.  @EnableCaching:申明应用开启缓存

2.  @Cacheable:通常定已在方法头部,用来申明此方法可缓存,将返回结果缓存,并下次调用直接从缓存,不执行方法内容。常见的参数有以下几个,

value:缓存的名称,至少需要一个,可以配置多个@Cacheable(value=”user”) 或者
@Cacheable(value={”user1”,”user2”}

key存的key,可以

condition缓存的条件,可以为空

sync:缓存同步,锁住底层操作。保证缓存数据安全性

 

3.@CachePut:通常定义在方法头部,用来申明此方法可缓存,将返回结果缓存,该方法用来更新缓存,每次执行方法内容,不从缓存中读取数据返回。常见参数和@Cacheable类似

4. @CacheEvict通常定义在方法投标部,用来申明此方法可缓存,并根据条件删除缓存。每次都会执行方法内容,常见参数和@Cacheable类似。

上面的参数内容都支持SpringEL

需要注意的几个地方,

1.如果使用默认序列法方式的话, 缓存对象实现Serializable接口,否则会提示下面异常

Cannot serialize; nested exception is
org.springframework.core.serializer.support.SerializationFailedException:
Failed to serialize object using DefaultSerializer;

同时会发生keyvalue值显示:\xAC\xED\x00\x05t\x00\x011这样的现象,因为

spring-data-redisRedisTemplate<K, V>模板类在操作redis时默认使用JdkSerializationRedisSerializer来进行序列化。

 

这里建议自定义redistemplatecachemanager中的value的序列化方式;

@Configuration
public class RedisConfig {

    @Bean
    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
        RedisTemplate<String,Object> template = new RedisTemplate<String,Object>();
        template.setConnectionFactory(redisConnectionFactory);
        //使用JSON格式的序列化,保存
        template.setKeySerializer(new StringRedisSerializer());
        template.setHashKeySerializer(new StringRedisSerializer());
        template.setValueSerializer(new GenericJackson2JsonRedisSerializer());
        template.setHashValueSerializer(new GenericJackson2JsonRedisSerializer());
        return template;

    }

    @Bean
    public CacheManager cacheManager(RedisConnectionFactory factory)
    {
        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);

        //配置序列化(解决乱码的问题)
        RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig()
                .entryTtl(Duration.ZERO)
                .serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(redisSerializer))
                .serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(jackson2JsonRedisSerializer))
                .disableCachingNullValues();

        RedisCacheManager cacheManager = RedisCacheManager.builder(factory)
                .cacheDefaults(config)
                .build();
        return cacheManager;
    }

}

 

2.使用CachePut注解,该方法每次都会执行,会清除对应的key值得缓存(或者更新),分为以下两种情况:

 

如果返回值null,此时会将该key值缓存更新为null

如果返回值不为null,此时会进行该key值缓存的更新,更新缓存值为返回的数据;

 

代码如下:

配置文件配置


spring.cache.type==redis

spring.redis.host=localhost
spring.redis.port=6379
spring.redis.database=10

程序入口增加注解:

@EnableCaching

 

简单定义几个接口,service,在service方法上面添加缓存注解。

@Override
@Cacheable(value = "user", key = "#name")
public User name(String name) {
    System.out.println("未走缓存");
    User user = new User();
    user.setName(name);
    try {
        Thread.sleep(3000);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
    return user;
}

@Override
@CachePut(value = "user", key = "#user.name")
public User save(User user) {
    System.out.println("保存用户"+user.toString());
    return user;
}

@Override
@CacheEvict(value = "user", key = "#name")
public void delUser(String name) {
    System.out.println("删除用户"+name);
}

 

47 对 “Springcloud +redis 实现缓存”的想法;

  1. Hc pigment Control Leke Kremi

    HC Pigment-Control’ün cilt lekelerine karşı hızlı ve güçlü etkisi, Kuzey Kanada Bozkırları’na özgü bir tarla bitkisi
    olan Rumeks’ten (Tyrostat™), tabiatın yeniden canlandırma mucizesi olan Yeniden Diriliş
    Bitkisi’ne kadar birçok doğal ve saf aktif bileşene dayalıdır.
    Tüm bu aktif bileşenlerin, lekeler ve cilt
    yaşlanması üzerindeki etkileri in-vivo testler ve klinik laboratuvar çalışmalarıyla kanıtlanmıştır.
    Tüm cilt tiplerinde, leke problemlerini giderme
    ve önlemede, cilt tonu eşitsizliğinde, cilt aydınlatmasında,
    nem ihtiyacı olan ciltlerde güvenle kullanılabilir.

    Leke krEMi için hemen sitemizi
    ziyaret et

  2. Have you ever thought about including a little bit
    more than just your articles? I mean, what you say is valuable and everything.
    Nevertheless think of if you added some great images or
    videos to give your posts more, “pop”! Your content is excellent but with images
    and video clips, this website could definitely be one of the best in its niche.

    Good blog!

  3. Instagram Takipçi Satın Almanın Profiliniz için Önemi

    Popülerlik ya da ek gelir isteyen kişiler için önemli hale gelen uygulamada bu
    başarıyı yakalamanın yolu takipçi sayısına bağlı olur.
    Intagram’ da yüksek takipçi sayısına sahip olmak
    ile pek çok insanın dikkatini çekmek daha kolay olur.

    Instagram’ da doğal yollar ile takipçi elde etmek diğer sosyal medya uygulamalarına göre daha
    zor olması nedeni ile Instagram takipçi satın al işlemine başvurulur.
    Bu işlem, hesabın daha öne çıkmasını sağladığı gibi daha fazla etkileşim almasına da yarar.
    Etkileşim alan bir hesap da Instagram keşfet alanına çıkar böylelikle daha çok takipçi hesabı takip etmeye
    başlar.

    Takipçi SATIN AL

  4. Instagram Takipçi Satın Al İşleminin Hesaba Etkisi

    instaGram takipçi satın al , Instagram üzerinde popülerliği yakalamak isteyen hesapların kullandığı bir yöntemdir.

    Son zamanların gözde sosyal medya platformlarından olan Instagram, her geçen kendini yenileyip güncellemesi
    ile kullanıcı sayısını milyonlara ulaştırmıştır.

    Fotoğraf ve video paylaşma platformu olan zaman içinde firmaların e-ticaret alanına dönüşmüş ve insanlara ek gelir kapışı olmuştur.

  5. Instagram Takipçi Satın Almanın İşleminin Hesaba Etkisi

    Instagram takipçi satın al, Instagram üzerinde popülerliği yakalamak isteyen hesapların kullandığı bir
    yöntemdir. Son zamanların gözde sosyal medya platformlarından olan Instagram, her geçen kendini yenileyip güncellemesi
    ile kullanıcı sayısını milyonlara ulaştırmıştır.
    Fotoğraf ve video paylaşma platformu olan zaman içinde firmaların e-ticaret alanına
    dönüşmüş ve insanlara ek gelir kapışı olmuştur.

    Instagram Takipçi Satın Almanın Profiliniz için Önemi

    Popülerlik ya da ek gelir isteyen kişiler için önemli
    hale gelen uygulamada bu başarıyı yakalamanın yolu takipçi sayısına bağlı
    olur. Intagram’ da yüksek takipçi sayısına sahip olmak ile pek çok insanın dikkatini çekmek daha kolay olur.

    Instagram’ da doğal yollar ile takipçi elde etmek diğer sosyal
    medya uygulamalarına göre daha zor olması nedeni ile Instagram takipçi satın al işlemine başvurulur.

    Bu işlem, hesabın daha öne çıkmasını sağladığı gibi
    daha fazla etkileşim almasına da yarar. Etkileşim alan bir hesap da Instagram keşfet alanına çıkar böylelikle daha çok takipçi hesabı takip etmeye başlar.

    instagram takipçi satın al

  6. Instagram Takipçi Satın Almanın Gelecekte Size Faydaları
    Günümüzde milyonlarca sosyal medya meraklısının tercih ettiği Instagram’ da en değer verilen şey takipçi sayısı olur.
    Sosyal medya hesaplarını büyütmek amacı ile kullanılan Takipçi Satın Al
    yöntemi çok kullanılır. Bu yöntem ile hesap, önerilen sayfa haline gelip hızlıca yükselir.
    Bu yöntemin başlıca avantajları arasında beğeni ve
    yorumlar ile etkileşimin artması yer alır.
    Sosyal medya ’da aynı pozisyonda olan rakiplerin önüne geçilir böylelikle daha fazla izlenme, beğeni
    ya da ürün satışı yapılır. Takipçi sayısının fazlalığı ayrıca hesabın daha kaliteli ve güvenli
    görünmesini sağlar. Arama olduğunda daha fazla görünüm elde edildiği gibi ziyaret trafiği, paylaşım ve profil istatistikleri artar.

  7. [url=https://casino-online.pp.ua]пин ап казино[/url]

    продвигать лучшие онлайн-казино, воеже вы могли найти для себя лучшее онлайн-казино. Буде вы всего делаете первые шаги тож являетесь опытным игроком, наш список облегчит вам выбор. Там вы найдете информацию о текущих акциях, предлагаемых польскими онлайн-казино. Некоторые из них – бесплатные вращения и дополнительные средства быть регистрации. Стоит сравнить, что предлагают популярные казино, воеже выбрать наиболее завидный сайт. Нашим приоритетом является не исключительно достоверная информация, но и предоставление необходимой информации. На нашем сайте вы найдете статьи и новости, которые помогут вам испытывать, который нужно высматривать, чтобы успешно играть в онлайн-казино.
    пин ап казино

  8. İnstagram üzerinde takip edebileceğiniz pek çok sayfa var.
    Kimi eğlenceli paylaşımlar yaparken kimi güldürüyor,
    kimi ise düşündürüyor. Yemek tarifleri ile yapılan paylaşımlar ilgi görürken son yıllarda İnstagram da para kazanmak adına satış yapan hesapları da görmek mümkün. Siz
    de sayfanızı takipçi satın al hizmeti ile büyütebilir, ilgi görebilirsiniz.

    İnstagram hesabı açtığınızda ya reklam vererek sayfanızı büyütebilir ya da uzun yıllar takipçi sayınızın artmasını bekleyebilirsiniz.
    Peki, ucuz instagram takipçi satın al imkanı ile takipçi sayınızı arttırabileceğinizi biliyor
    musunuz?

    takipcisatinalin.org/

  9. Please let me know if you’re looking for a article writer for your
    site. You have some really great articles and I feel I would be a good
    asset. If you ever want to take some of the load off, I’d absolutely love to write some content for your blog in exchange for a link back to mine.
    Please shoot me an e-mail if interested. Many thanks!

  10. I was wondering if you ever thought of changing the layout of your website?
    Its very well written; I love what youve got to say.
    But maybe you could a little more in the way of content so people could connect with
    it better. Youve got an awful lot of text for only having one
    or 2 images. Maybe you could space it out better?

  11. Instagram takipçi satın almaya karar verdiniz fakat bir çok aklınızdaki sorulardan en zor olanı da takipçi alacağınız
    sitenin ucuz ve güvenilir olmasıdır.
    O halde size ssl sertifikalı güvenilir ödeme yapısı ile takip2018 i öneriyoruz siteye giderek hemen takipçi satın al

    Takipçi SATIN al

  12. Thanks for your personal marvelous posting! I actually enjoyed reading it, you are a great author.I will make certain to bookmark your blog and may come back down the road.
    I want to encourage you to definitely continue your great posts,
    have a nice weekend!

  13. Takipçi Satın Alma Hizmetleri

    İnstagram’da bir hesabın takipçi adedi, ve
    o hesabın takipçi sayısı sizi müşterilerinize daha iyi tanıtmış olmaktadır, ve
    bu prestije sahip olmak isteyen iş sahipleri
    ilk olarak takipçi satın almaktadır. Fazla takipçi adedi olan hesaplar, daha
    çok ilgi çeker ve daha çok şahsa ulaşırlar.

    Firma, müşterilerin değişik taleplerine yanıt sunabilcek adına değişik takipçi paketleriyle hizmet veriyor instagram takipçi satın al için herkesin bütçesine uyacak paketler sunuyor.

    En güvenilir şekilde ödemenizi gerçekleştirebiliyorsunuz.

  14. Sizler de instagram da ücretsiz takipçi kasmak için ayrıca bu takipçilerin türk olması ile birlikte fenomen olmak istemezmisiniz?

    Tabiki de istersiniz o halde hiç durmadan günlük 200
    kredi ile gerçek türk takipçilere ücretsiz şekilde sahip ol

    Takipçi Hilesi

  15. You could certainly see your expertise in the article you write.
    The sector hopes for even more passionate writers such as you who
    are not afraid to mention how they believe. Always follow your heart.

  16. Etkileşimi Arttırmak İçin Takipçi ve Beğeni Satın Almalısınız

    Özellikle yeni açılan sosyal medya hesaplarının en büyük sorunları arasında takipçi sayısının düşüklüğü ve paylaşımlarda
    etkileşim olmamasıdır. Beğeni ve yorumların gelmesi
    sosyal medya hesaplarının gelişimine katkı sağlamaktadır.

    Özellikle çok takipçisi bulunan ve paylaşımları
    beğenilerek yorum yapılan hesaplar ilgi çekmektedir.
    Takipçi Satın Al işlemleri sayesinde hızlı bir etkileşim sağlanabilmektedir.
    Ancak tüm hizmetlerde olduğu gibi bu hizmetlerinde farklı seçenekleri bulunmaktadır.

    https://rebrand.ly/takipci-satin-al

  17. Takipçi Satın Alarak İşini Büyüt!

    Instagram’da nasıl takipçi kazanacağınızı anlamaya başlamadan önce, en önemli
    adımlardan biri hesabınızın tamamen optimize edilmesidir.

    Markanızın Instagram biyografisini hesabınızın aynası olarak
    düşünebilirsiniz.
    Instagram takipçi satın almak isteyen kullanıcıları, öncelikle
    profillerinde ne kadar takipçi istediklerine yönelik karar
    vermeleri gerekmektedir.

    İnstagram hesaplarınızda güçlü bir
    etkiye sahip olmak istiyorsanız takipçi sayınızı en kaliteli yaani
    Türk takipçi satın al işlemi yaparak belirli
    bir düzeye getirmelisiniz.
    Türk takipçiler tamamen organik olarak site üzerinde satışa
    sunulmuştur : https://cutt.ly/takipcintrcom

  18. Howdy, i read your blog from time to time and i own a similar one and i was
    just curious if you get a lot of spam responses? If so how
    do you prevent it, any plugin or anything you can recommend?
    I get so much lately it’s driving me mad so any help is very much appreciated.

  19. Hey just wanted to give you a quick heads up. The text
    in your article seem to be running off the screen in Internet explorer.
    I’m not sure if this is a formatting issue or something to do with web browser compatibility but I thought I’d post to let you know.
    The design look great though! Hope you get the issue solved soon. Cheers

  20. İnstagram Takipçilerini Artırmanın Faydaları Nedir?

    Dünya çapında birkaç tuşla milyonlarca insana ulaşılabilen İnstagram kullanıcıları bu konuda daha
    fazla görünür olmak için artık takipçi satın almaya
    başladı.
    Çünkü takipçi sayısı fark edilmeniz
    için çok önemlidir.
    Az bir takipçisi olan kullanıcılar çok ciddiye alınmadığı gibi
    profilleri hiç ziyaret edilmez.
    Takipçi sayınız düştüğünde firma tarafından telafi edilmektedir.

    Olası aksilik durumlarında para iadesi garantisi mevcuttur.

    Güvenli ödeme yöntemleri ile içiniz rahat bir şekilde ödemenizi gerçekleştirebilirsiniz.

    https://rebrand.ly/takipci-satin-al-

发表评论

邮箱地址不会被公开。