数据库存到redis缓存中.请问怎么把redi

数据库存到redis缓存中.请问怎么把redi,第1张

应用Redis实现数据的读写,同时利用队列处理器定时将数据写入mysql。同时要注意避免冲突,在redis启动时去mysql读取所有表键值存入redis中,往redis写数据时,对redis主键自增并进行读取,若mysql更新失败,则需要及时清除缓存及同步redis主键。这样处理,主要是实时读写redis,而mysql数据则通过队列异步处理,缓解mysql压力,不过这种方法应用场景主要基于高并发,而且redis的高可用集群架构相对更复杂,一般不是很推荐。

应用Redis实现数据的读写,同时利用队列处理器定时将数据写入mysql,此种情况存在的问题主要是如何保证mysql与redis的数据同步,二者数据同步的关键在于mysql数据库中主键,方案是在redis启动时去mysql读取所有表键值存入redis中,往redis写数据时,对redis主键自增并进行读取,若mysql更新失败,则需要及时清除缓存及同步redis主键。

String tbname = "login";

//获取mysql表主键值--redis启动时

long id = MySQLgetID(tbname);

//设置redis主键值--redis启动时

redisServiceset(tbname, StringvalueOf(id));

Systemoutprintln(id);

long l = redisServiceincr(tbname);

Systemoutprintln(l);

Login login = new Login;

loginsetId(l);

loginsetName("redis");

redisServicehmset(StringvalueOf(logingetId), login);

boolean b = MySQLinsert("insert into login(id,name) values(" + logingetId + ",'" + logingetName + "')");

/

队列处理器更新mysql失败:

清除缓存数据,同时主键值自减

/

if (!b){

redisServicedelKeyAndDecr(tbname, "Login:"+StringvalueOf(logingetId));

}

Systemoutprintln(redisServiceexists("Login:"+StringvalueOf(logingetId)));

Systemoutprintln(redisServiceget(tbname));

以上就是关于数据库存到redis缓存中.请问怎么把redi全部的内容,包括:数据库存到redis缓存中.请问怎么把redi、redis如何创建MYSQL数据库、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9739011.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-01
下一篇2023-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存