jfinal main方法里操作数据库+redis

最近项目中需要写一个小程序 将数据库的数据转存到redis 中,下面是简单的demo 用到了两个数据源 一个redis
package com.xc.main;

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

import com.jfinal.plugin.activerecord.ActiveRecordPlugin;
import com.jfinal.plugin.activerecord.Db;
import com.jfinal.plugin.activerecord.Record;
import com.jfinal.plugin.druid.DruidPlugin;
import com.jfinal.plugin.redis.Cache;
import com.jfinal.plugin.redis.Redis;
import com.jfinal.plugin.redis.RedisPlugin;

public class AppRedis {
static int m=0;//此变量是为了切换数据源
public static void main(String[] args) {
RedisPlugin rp = new RedisPlugin("lenglh_hal", "127.0.0.1");
rp.start();
Cache redis=Redis.use();
if(m==0){
String jdbcUrl = "jdbc:mysql://localhost:3306/xc-cool-app?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull";
DruidPlugin druidPlugin = new DruidPlugin(jdbcUrl,"root", "");
druidPlugin.start();
ActiveRecordPlugin arp = new ActiveRecordPlugin(druidPlugin);
arp.start();

List<Record> list=Db.find("select deviceId,status from xc_cool_device");
for(Record r:list){
redis.set(r.get("deviceId"), r.get("status"));
System.err.println(r.get("deviceId")+"===>"+ r.get("status"));
}

String sql="select r.id ,d.deviceId,r.channelId,r.compareType,r.threshold from xc_cool_alarm_rule r "
+" INNER JOIN xc_cool_device d on d.id=r.deviceId";
List<Record> rules=Db.find(sql);
for(Record r:rules){
Map<Object, Object> rule = new HashMap<Object,Object>(); 
rule.put("ruleId", r.get("id"));
rule.put("type", r.get("compareType"));
rule.put("threshold", r.get("threshold"));
rule.put("status", false);
rule.put("value", "-999");
redis.hset("R_"+r.getStr("deviceId")+"_"+r.getInt("channelId"), r.get("id"), rule);
System.err.println("R_"+r.getStr("deviceId")+"_"+r.getInt("channelId")+"---"+r.get("id")+"--"+rule);
}
arp.stop();
m=1;
}
   //切换数据源
if(m==1){
String jdbcUrlHal = "jdbc:mysql://localhost:3306/xc-cool-hal?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull";
DruidPlugin druidPluginhal = new DruidPlugin(jdbcUrlHal,"root", "");
druidPluginhal.start();
ActiveRecordPlugin arphal = new ActiveRecordPlugin(druidPluginhal);
arphal.start();

List<Record> channel=Db.find("select deviceId,channelId,status from xc_cool_rds_channel");
for(Record r:channel){
redis.set("C_"+r.getStr("deviceId")+"_"+r.getInt("channelId"), r.get("status"));
System.err.println("C_"+r.getStr("deviceId")+"_"+r.getInt("channelId")+"===>"+ r.get("status"));
}
m=3;
arphal.stop();
}
}
}

  666导航网    可以自由收藏管理个人常用网址的便捷上网工具 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要从前端获取数据并将其存储到Redis数据库中,您可以使用Java作为后端服务器来处理前端的请求,并使用Redis客户端库连接和操作Redis数据库。以下是一个基本的示例代码: ```java import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; import redis.clients.jedis.JedisPoolConfig; import java.util.Map; public class RedisDataStorage { private static final String REDIS_HOST = "localhost"; // Redis服务器主机 private static final int REDIS_PORT = 6379; // Redis服务器端口 private static final String REDIS_PASSWORD = "your_password"; // Redis密码(如果有的话) private static JedisPool jedisPool; public static void main(String[] args) { // 创建Redis连接池 JedisPoolConfig poolConfig = new JedisPoolConfig(); jedisPool = new JedisPool(poolConfig, REDIS_HOST, REDIS_PORT, 0, REDIS_PASSWORD); // 获取前端传递的数据 String key = "user"; Map<String, String> userData = getFrontendData(); // 存储数据到Redis中 try (Jedis jedis = jedisPool.getResource()) { jedis.hmset(key, userData); System.out.println("数据已存储到Redis中:" + userData); } catch (Exception e) { e.printStackTrace(); } // 关闭Redis连接池 jedisPool.close(); } private static Map<String, String> getFrontendData() { // 从前端获取数据的逻辑,此处省略 // 假设返回一个包含键值对的Map对象 // 示例:{ "name": "John", "email": "john@example.com" } // 实际情况下,您需要根据前端的具体数据结构进行处理 } } ``` 在上面的示例中,我们使用Jedis库来连接Redis服务器。首先,创建一个JedisPool对象来管理Redis连接池。然后,使用`getFrontendData`方法模拟从前端获取数据。接下来,使用`hmset`方法将数据存储到Redis的哈希表中。最后,关闭Redis连接池。 请注意,上述代码仅为示例,您需要根据实际情况进行修改和扩展,特别是获取前端数据的逻辑。此外,在生产环境中,建议使用连接池来管理Redis连接,以提高性能和资源利用率。 希望对您有所帮助!如有更多问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值