用redis对文件进行存取

问题背景:项目中没有文件服务器,项目结构是集群模式,由于负载均衡,导致文件写入和文件下载不在同一台服务器,会导致下载时找不到文件

文件存入,用base64将文件进行编码,然后将文件存入redis,适合文件不长期存储,代码如下

			File file = new File(path)
            String base64File = Base64.encode(file);

            if (StringUtils.isNotEmpty(base64File)) {
                this.redisTemplate.opsForValue().set(fileName, base64File);
                this.redisTemplate.expire(fileName,60, TimeUnit.SECONDS);
            }

文件提取, 从redis中取出base64编码,然后进行反编码,生成文件

        String arrsStr = (String) redisTemplate.opsForValue().get(url);
        if (StringUtils.isEmpty(arrsStr)) {
            throw new BusinessException("文件不存在");
        }
        File file = Base64.decodeToFile(arrsStr, destFile);

        Assert.isFalse(file.exists(),"文件不存在");
            }
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Java中使用Redis存取数据,你需要使用RedisJava客户端来与Redis服务器进行交互。以下是一个简单的示例代码: 1. 首先,你需要添加RedisJava客户端依赖。常用的Java Redis客户端有Jedis和Lettuce,你可以选择其中一个。 对于Jedis,可以在项目的pom.xml文件中添加以下依赖: ```xml <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>3.7.0</version> </dependency> ``` 对于Lettuce,可以在项目的pom.xml文件中添加以下依赖: ```xml <dependency> <groupId>io.lettuce</groupId> <artifactId>lettuce-core</artifactId> <version>6.2.5.RELEASE</version> </dependency> ``` 2. 创建Redis连接并进行数据存取操作。 使用Jedis客户端的示例代码如下: ```java import redis.clients.jedis.Jedis; public class RedisExample { public static void main(String[] args) { // 创建Redis连接 Jedis jedis = new Jedis("localhost", 6379); // 存储数据 jedis.set("key", "value"); // 获取数据 String value = jedis.get("key"); System.out.println(value); // 关闭连接 jedis.close(); } } ``` 使用Lettuce客户端的示例代码如下: ```java import io.lettuce.core.RedisClient; import io.lettuce.core.RedisURI; import io.lettuce.core.api.StatefulRedisConnection; import io.lettuce.core.api.sync.RedisCommands; public class RedisExample { public static void main(String[] args) { // 创建Redis连接 RedisURI uri = RedisURI.Builder.redis("localhost", 6379).build(); RedisClient client = RedisClient.create(uri); StatefulRedisConnection<String, String> connection = client.connect(); RedisCommands<String, String> commands = connection.sync(); // 存储数据 commands.set("key", "value"); // 获取数据 String value = commands.get("key"); System.out.println(value); // 关闭连接 connection.close(); client.shutdown(); } } ``` 这是一个简单的示例,你可以根据自己的需求进行更复杂的数据存取操作。记得在使用完毕后关闭连接以释放资源。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值