java spring 缓存redis_java:springboot自带缓存和redis缓存

springboot自带缓存(不支持配置失效时间):

6c7243e3c87c4cbf1eedb8d7767478a4.png258667972843e1e7b4f22a1f9cbcfe39.png

5c53e98ec7c33c13b8c8f8ce06b2eba5.png

redis缓存:

708b26aca6e01ac087a00b2e85a3799d.png

dc36df1c5200a1da299e9d7df318275c.png

使用到的工具类:

package com.huayong.bi.web.util;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.data.redis.core.*;

import org.springframework.stereotype.Service;

import java.io.Serializable;

import java.util.List;

import java.util.Map;

import java.util.Set;

import java.util.concurrent.TimeUnit;

/**

* Created by Administrator on 2017/12/1.

*/

@Service

public class RedisService {

@Autowired

private RedisTemplate redisTemplate;

/**

* 写入缓存

* @param key

* @param value

* @return

*/

public boolean set(final String key, Object value) {

boolean result = false;

try {

ValueOperationsoperations = redisTemplate.opsForValue();

operations.set(key, value);

result = true;

} catch (Exception e) {

e.printStackTrace();

}

return result;

}

/**

* 写入缓存设置时效时间

* @param key

* @param value

* @return

*/

public boolean set(String key, Object value, Long expireTime) {

boolean result = false;

try {

ValueOperationsoperations = redisTemplate.opsForValue();

operations.set(key, value);

redisTemplate.expire(key, expireTime, TimeUnit.SECONDS);

result = true;

} catch (Exception e) {

e.printStackTrace();

}

return result;

}

/**

* 批量删除对应的value

* @param keys

*/

public void remove(final String... keys) {

for (String key : keys) {

remove(key);

}

}

/**

* 批量删除key

* @param pattern

*/

public void removePattern(final String pattern) {

Setkeys = redisTemplate.keys(pattern);

if (keys.size() > 0)

redisTemplate.delete(keys);

}

/**

* 删除对应的value

* @param key

*/

public void remove(final String key) {

if (exists(key)) {

redisTemplate.delete(key);

}

}

/**

* 判断缓存中是否有对应的value

* @param key

* @return

*/

public boolean exists(final String key) {

return redisTemplate.hasKey(key);

}

/**

* 读取缓存

* @param key

* @return

*/

public Object get(final String key) {

Object result = null;

ValueOperationsoperations = redisTemplate.opsForValue();

result = operations.get(key);

return result;

}

/**

* 哈希获取数据

* @param key

* @param hashKey

* @return

*/

public MaphmGet(String key){

MapresultMap= redisTemplate.opsForHash().entries(key);

return resultMap ;

}

/**

* 哈希 添加

* @param key

* @param hashKey

* @param value

*/

public void hmSet(String key, Object hashKey, Object value){

HashOperationshash = redisTemplate.opsForHash();

hash.put(key,hashKey,value);

}

/**

* 哈希获取数据

* @param key

* @param hashKey

* @return

*/

public Object hmGet(String key, Object hashKey){

HashOperationshash = redisTemplate.opsForHash();

return hash.get(key,hashKey);

}

/**

* 列表添加

* @param k

* @param v

*/

public void lPush(String k,Object v){

ListOperationslist = redisTemplate.opsForList();

list.rightPush(k,v);

}

/**

* 列表获取

* @param k

* @param l

* @param l1

* @return

*/

public ListlRange(String k, long l, long l1){

ListOperationslist = redisTemplate.opsForList();

return list.range(k,l,l1);

}

/**

* 栈/队列长

* @param key

* @return

*/

public Long length(String key) {

return redisTemplate.opsForList().size(key);

}

/**

* 集合添加

* @param key

* @param value

*/

public void add(String key,Object value){

SetOperationsset = redisTemplate.opsForSet();

set.add(key,value);

}

/**

* 集合获取

* @param key

* @return

*/

public SetsetMembers(String key){

SetOperationsset = redisTemplate.opsForSet();

return set.members(key);

}

/**

* 有序集合添加

* @param key

* @param value

* @param scoure

*/

public void zAdd(String key,Object value,double scoure){

ZSetOperationszset = redisTemplate.opsForZSet();

zset.add(key,value,scoure);

}

/**

* 有序集合获取

* @param key

* @param scoure

* @param scoure1

* @return

*/

public SetrangeByScore(String key,double scoure,double scoure1){

ZSetOperationszset = redisTemplate.opsForZSet();

return zset.rangeByScore(key, scoure, scoure1);

}

}

key:

package com.huayong.bi.inter.constants;

/**

* redis Key 的前缀

*/

public enum EmumRedisKeyPre {

avg_year_curr_position("AVG_YEAR_CURR_POSITION_","Redis*******对应key的前缀");

private String keyPre ;

private String keyNmae ;

EmumRedisKeyPre(String keyPre, String keyNmae) {

this.keyPre = keyPre;

this.keyNmae = keyNmae;

}

public String getKeyPre() {

return keyPre;

}

public void setKeyPre(String keyPre) {

this.keyPre = keyPre;

}

public String getKeyNmae() {

return keyNmae;

}

public void setKeyNmae(String keyNmae) {

this.keyNmae = keyNmae;

}

}

查询过期时间:

连接linux,进入redis客户端连接 redis-cli

997d5acf99d5262dc6fbd56106f4e7a5.png

1.keys * 查询出你的key

2.调用一下接口,我这里设置的为36s失效

8400107e6369651b8db000a453848385.png

3.查询一下,可以看到失效时间倒计时的效果

e9076bf8660607379fb3d86f0d8c4d09.png

3. -2代表过期

f545f01c65dbfb3712267697091938dd.png

4.可以看到缓存中有的话,不会再查询数据库

b14717f73d7e344d9326751d26c254a5.png

get:

get "\xac\xed\x00\x05t\x00&AVG_YEAR_CURR_POSITION_2019-01-zhilian"

f96c68a56ddeeefa80748354f32cc836.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是Java中使用注解操作Redis的示例: 首先,我们需要在pom.xml文件中添加Redis的依赖: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> ``` 接下来,我们需要在Spring Boot的Application类上添加@EnableCaching注解来开启缓存: ```java @SpringBootApplication @EnableCaching public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } } ``` 然后,我们需要在Redis的配置文件application.properties中添加Redis的连接信息: ```properties spring.redis.host=localhost spring.redis.port=6379 spring.redis.password= ``` 接下来,我们就可以使用注解来操作Redis了。下面是一个使用注解操作Redis缓存的示例: ```java @Service public class UserService { @Autowired private UserRepository userRepository; @Cacheable(value = "userCache", key = "#id") public User getUserById(Long id) { System.out.println("从数据库中获取用户信息"); return userRepository.findById(id).orElse(null); } @CachePut(value = "userCache", key = "#user.id") public User saveUser(User user) { System.out.println("保存用户信息到数据库"); return userRepository.save(user); } @CacheEvict(value = "userCache", key = "#id") public void deleteUserById(Long id) { System.out.println("从数据库中删除用户信息"); userRepository.deleteById(id); } } ``` 上面的示例中,我们使用了三个注解来操作Redis缓存: - @Cacheable:表示方法的结果可以被缓存,如果缓存中有数据,则直接返回缓存数据,否则执行方法并将结果放入缓存中。 - @CachePut:表示方法的结果需要被缓存,每次都会执行方法,并将结果放入缓存中。 - @CacheEvict:表示方法会从缓存中删除数据。 在这个示例中,我们使用了value属性来指定缓存的名称,key属性来指定缓存的键,#id和#user.id是SpEL表达式,用于获取方法参数中的值。 以上就是一个使用注解操作Redis缓存的示例。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值