这里有件事情比较尴尬。因为跨了一个服务平台,所以得通过消息通知来实现功能(其实高耦合我查表也能解决,但是被否决了)
废话不多说:在这次是通过Redis 在Java当中的使用来实现。
在老早以前我安装了Redis本地,尝试了这种Map式的存储特点,听说其I/O效率高,但是也没有做测试,百度说:
- 性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。
- 丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。
- 原子 – Redis的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多个操作也支持事务,即原子性,通过MULTI和EXEC指令包起来。
- 丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性。
在本地使用Java的时候我们分为两个过程:
压栈:
public class TestCollect {
private static RedisTemplate<String, String> redisTemplate = RedisFactory
.createStringRedisTemplate("TestTracke");
@Test
public void TestIn(){
// redisTemplate.opsForList().leftPush("first", "{}");
// redisTemplate.opsForList().leftPush("second", "{}");
}
}
当然,在使用RedisFactory创建RedisTemplate的时候得选取名称空间,而在入栈的时候得设定key。(注意左右两个left/right)
出栈:
private static RedisTemplate<String, String> redisTemplate = RedisFactory
.createStringRedisTemplate("TestTracke");
String collectStr = redisTemplate.opsForList().leftPop("first", 1, TimeUnit.SECONDS);
String contentStr = redisTemplate.opsForList().leftPop("second", 1, TimeUnit.SECONDS);
以上便是来自Java Spring Redis的简单使用,如果是普通情况直接使用的话得导入
import redis.clients.jedis.Jedis;
而在使用方法上也有所不同:得先创建连接(把Redis理解为DB就很好接受了)
public class RedisJava {
public static void main(String[] args) {
//连接本地的 Redis 服务
Jedis jedis = new Jedis("localhost");
System.out.println("连接成功");
//查看服务是否运行
System.out.println("服务正在运行: "+jedis.ping());
}
}
public class RedisKeyJava {
public static void main(String[] args) {
//连接本地的 Redis 服务
Jedis jedis = new Jedis("localhost");
System.out.println("连接成功");
// 获取数据并输出
Set<String> keys = jedis.keys("*");
Iterator<String> it=keys.iterator() ;
while(it.hasNext()){
String key = it.next();
System.out.println(key);
}
}
}
1.遇到了什么问题,需要解决什么问题。2.有哪些方法可以解决这个问题,每个方法的优缺点对比。3.选一个最好的方法详细说明。
@网易云蜀黍 嗯。感谢指教呀,可能写的时候也没多想其他的事情,就一股脑往下做了,其实还是有不少麻烦的。