redis在实际开发中,使用Java哪个框架

redis在实际开发中,使用Java哪个框架,第1张

1、存储简单数据

try {

Jedis jedis = new Jedis();

jedisset("name", "JackGSmith");

} catch (Exception e) {

//如果缓存连不上,则不处理

Systemoutprintln("登录无法更新该用户缓存");

}

从redis缓存中获取key为“name”的值,使用jedisget("name"),用一个String变量接收即可。

2、存储对象、集合

存对象集合用序列化的方式存储,用反序列化的方式取值。存储的key和value都是转化成字节码的形式。

先定义一个抽象类:SerializeTranscoderjava,代码如下:

package cncomtaijisampleutils;

import javaioCloseable;

import javaioIOException;

public abstract class SerializeTranscoder {

public abstract byte[] serialize(Object value);

需要,Java开发的商城可以使用Redis。Redis是一个开源的键值存储数据库,可以在应用程序中访问经常使用的数据,以提高性能。它也可以用于异步任务队列、高性能缓存和消息队列,以帮助更好地管理复杂的网站或应用程序。

性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。

丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型 *** 作。

原子 – Redis的所有 *** 作都是原子性的,同时Redis还支持对几个 *** 作全并后的原子性执行。

丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性。

Java连接redis的使用示例

Redis是开源的key-value存储工具,redis通常用来存储结构化的数据,因为redis的key可以包含String、hash、listset和sorted list。

Redisclient支持多种语言,包括:c、C++、C#、php、java、python、go等语言,根据自己的开发语言,选择合适的redis client版本类型即可。我是使用java语言开发的,针对java语言,redis client也提供了多种客户端支持,按照推荐类型依次是:Jedis、Redisson、JRedis、JDBC-Redis、RJC、redis-protocol、aredis、lettuce。前两种类型是比较推荐的,我们采用了Redisson类型版本作为redisclient的使用。

Redisson版的redis可发工程搭建

1 新建maven工程

2 在pomxml文件的dependencies节点下增加如下内容:

<dependency>

<groupId>orgredisson</groupId>

<artifactId>redisson</artifactId>

<version>102</version>

</dependency>

<dependency>

<groupId>orgslf4j</groupId>

<artifactId>slf4j-log4j12</artifactId>

<version>177</version>

</dependency>

3 保存pomxml后,等eclispe工程构建完成后即可进行开发了

开发示例

下面是演示连接redis服务器、保存读取concurrentMap对象、保存读取set对象和保存读取Queue对象的示例代码,代码比较简单,这里就不再详细讲解了,代码如下:

[java] view plaincopy

package commytestredis;

import javautilQueue;

import javautilSet;

import javautilconcurrentConcurrentMap;

import orgredissonConfig;

import orgredissonRedisson;

public class RedisExample {

/

@param args

/

public static void main(String[] args) {

// 1初始化

Config config = new Config();

configsetConnectionPoolSize(10);

configaddAddress("127001:6379");

Redisson redisson = Redissoncreate(config);

Systemoutprintln("reids连接成功");

// 2测试concurrentMap,put方法的时候就会同步到redis中

ConcurrentMap<String, Object> map = redissongetMap("FirstMap");

mapput("wuguowei", "男");

mapput("zhangsan", "nan");

mapput("lisi", "女");

ConcurrentMap resultMap = redissongetMap("FirstMap");

Systemoutprintln("resultMap==" + resultMapkeySet());

// 2测试Set集合

Set mySet = redissongetSet("MySet");

mySetadd("wuguowei");

mySetadd("lisi");

Set resultSet = redissongetSet("MySet");

Systemoutprintln("resultSet===" + resultSetsize());

//3测试Queue队列

Queue myQueue = redissongetQueue("FirstQueue");

myQueueadd("wuguowei");

myQueueadd("lili");

myQueueadd("zhangsan");

myQueuepeek();

myQueuepoll();

Queue resultQueue=redissongetQueue("FirstQueue");

Systemoutprintln("resultQueue==="+resultQueue);

// 关闭连接

redissonshutdown();

}

}

redis应该算是本地缓存,而mysql的话是数据库,你的意思应该是:怎么用java代码同步数据库中的数据到redis。如果是这种情况的话:目前项目中会用一个定时任务定时去读取数据库中的数据,然后放到redis,或者在项目初始化读取数据库然后再放到redis

方法有很多

其中之一

实时获取mysql

binlog进行解析

然后修改redis

MySQL到Redis数据方案

无论MySQL还是Redis

自身都带有数据同步的机制,像比较常用的MySQL的Master/Slave模式,就是由Slave端分析Master的binlog来实现的,这样的数据其实还是一个异步过程,只不过当服务器都在同一内网时,异步的延迟几乎可以忽略

那么理论上我们也可以用同样方式,分析MySQL的binlog文件并将数据插入Redis。但是这需要对binlog文件以及MySQL有非常深入的理解,同时由于binlog存在Statement/Row/Mixedlevel多种形式,分析binlog实现同步的工作量是非常大的。

因此这里选择了一种开发成本更加低廉的方式,借用已经比较成熟的MySQL

UDF,将MySQL数据首先放入Gearman中,然后通过一个自己编写的PHP

Gearman

Worker,将数据同步到Redis

其实就相当于在应用程序和数据库之间开了一块内存区域,将一些高频访问的数据放在其中,避免每次都请求数据库。至于之所以用memcached和redis,而不是自己在程序里开个hashmap,是因为这块区域可以共享且容易管理,在集群环境下更方便使用。

有些做法是直接将数据序列化后存在redis的string或是memcached中,也有些其他做法是利用redis特有的数据结构存储一些关系,例如用sorted set存排行榜,string用来计数,set做一些倒排索引、用户好友关系之类的。我觉得这些都可以称之为缓存。

以上就是关于redis在实际开发中,使用Java哪个框架全部的内容,包括:redis在实际开发中,使用Java哪个框架、java开发商城需要用redis吗、java 为什么使用redis等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/sjk/9860004.html

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

发表评论

登录后才能评论

评论列表(0条)

保存