这里有件事情比较尴尬。因为跨了一个服务平台,所以得通过消息通知来实现功能(其实高耦合我查表也能解决,但是被否决了)
废话不多说:在这次是通过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.选一个最好的方法详细说明。
@网易云蜀黍 嗯。感谢指教呀,可能写的时候也没多想其他的事情,就一股脑往下做了,其实还是有不少麻烦的。