如何从Spring RedisTemplate中获得Jedis实例

在Spring项目中,由于Spring RestTemplate在处理Redis操作时未提供设置超时时间的功能,而Jedis本身支持。通过查看源码,发现在分布式锁等场景下,检查设值成功与否至关重要。本文介绍了一种方法,即通过反射从RedisConnectionFactory获取Jedis实例,直接调用其方法,从而实现设置超时时间并判断操作是否成功。
摘要由CSDN通过智能技术生成

项目组同事提出一个问题,使用Spring RestTemplate不能在“不存在时设值”的同时,设置超时时间。我通过阅读源代码,发现Jedis是支持这一指令的,以下代码来自于 redis.clients.jedis.Jedis

  /**
   * Set the string value as value of the key. The string can't be longer than 1073741824 bytes (1 GB).
   * @param key
   * @param value
   * @param nxxx NX|XX, NX -- Only set the key if it does not already exist. XX -- Only set the key if it already exist.
   * @param expx EX|PX, expire time units: EX = seconds; PX = milliseconds
   * @param time expire time in the units of <code>expx</code>
   * @return Status code reply
   */
  public String 
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
RedisTemplateSpring Data Redis 提供的一个 Redis 客户端工具类,它封装了 Redis 的常见操作,方便开发人员对 Redis 数据存储进行操作。RedisTemplate 提供了对 Redis 的五种数据结构(字符串、哈希表、列表、集合、有序集合)的支持。通过 RedisTemplate,可以实现对 Redis 的基本操作,如 get、set、incr、decr、hget、hset、lpush、rpush、sadd、zadd 等操作,以及对 Redis 支持的事务、Lua 脚本等高级功能的调用。 使用 RedisTemplate,需要先配置 Redis 连接池和 RedisTemplate实例,然后通过注入 RedisTemplate 实例来操作 Redis 数据。下面是一个简单的 RedisTemplate 配置示例: ```java @Configuration public class RedisConfig { @Bean public JedisPool jedisPool() { JedisPoolConfig jedisPoolConfig = new JedisPoolConfig(); jedisPoolConfig.setMaxTotal(100); jedisPoolConfig.setMaxIdle(20); jedisPoolConfig.setMaxWaitMillis(10000); JedisPool jedisPool = new JedisPool(jedisPoolConfig, "127.0.0.1", 6379); return jedisPool; } @Bean public RedisTemplate<String, Object> redisTemplate(JedisConnectionFactory jedisConnectionFactory) { RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>(); redisTemplate.setConnectionFactory(jedisConnectionFactory); redisTemplate.setKeySerializer(new StringRedisSerializer()); redisTemplate.setValueSerializer(new Jackson2JsonRedisSerializer<>(Object.class)); redisTemplate.setHashKeySerializer(new StringRedisSerializer()); redisTemplate.setHashValueSerializer(new Jackson2JsonRedisSerializer<>(Object.class)); return redisTemplate; } } ``` 在上面的配置,我们通过 JedisPool 创建了 JedisConnectionFactory 实例,然后将其注入到 RedisTemplate ,并设置了序列化方式。这里我们使用了 Jackson2JsonRedisSerializer 作为序列化方式,可以将对象序列化为 JSON 格式存储到 Redis 。最后,我们将自定义的 RedisTemplate 注入到需要使用的类即可。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值