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等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)