Redis的Java入门实践 .

来源:互联网 发布:微信附近人定位软件 编辑:程序博客网 时间:2024/04/29 21:16
  1. 1, Redis Hello World 的例子  
  2.   
  3. 这里用的包是Jedis。下载地址https://github.com/xetorthio/jedis/downloads  
  4.   
  5. 把jar包引入工程,打开redis的服务器(redis下载及安装见初步理解Redis及其安装配置)。开始打招呼的例子,如下  
  6.   
  7.    1:  Jedis jedis = new Jedis("localhost");  
  8.   
  9.    2:  jedis.set("key""Hello World!");  
  10.   
  11.    3:  String value = jedis.get("key");  
  12.   
  13.    4:  System.out.println(value);  
  14.   
  15. 分别测试下各种数据结构  
  16.   
  17.         System.out.println("==String==");  
  18.   
  19.         Jedis jedis = new Jedis("localhost");  
  20.   
  21.         //String   
  22.   
  23.         jedis.set("key""Hello World!");  
  24.   
  25.         String value = jedis.get("key");  
  26.   
  27.         System.out.println(value);  
  28.   
  29.           
  30.   
  31.         //List   
  32.   
  33.         System.out.println("==List==");  
  34.   
  35.         jedis.rpush("messages""Hello how are you?");  
  36.   
  37.         jedis.rpush("messages""Fine thanks. I'm having fun with redis.");  
  38.   
  39.         jedis.rpush("messages""I should look into this NOSQL thing ASAP");  
  40.   
  41.         List<String> values = jedis.lrange("messages"0, -1);  
  42.   
  43.         System.out.println(values);  
  44.   
  45.           
  46.   
  47.         //Set   
  48.   
  49.         System.out.println("==Set==");  
  50.   
  51.         jedis.sadd("myset""1");  
  52.   
  53.         jedis.sadd("myset""2");  
  54.   
  55.         jedis.sadd("myset""3");  
  56.   
  57.         jedis.sadd("myset""4");  
  58.   
  59.         Set<String> setValues = jedis.smembers("myset");  
  60.   
  61.         System.out.println(setValues);  
  62.   
  63.           
  64.   
  65.         //Sorted Set   
  66.   
  67.         jedis.zadd("hackers"1940"Alan Kay");  
  68.   
  69.         jedis.zadd("hackers"1953"Richard Stallman");  
  70.   
  71.         jedis.zadd("hackers"1965"Yukihiro Matsumoto");  
  72.   
  73.         jedis.zadd("hackers"1916"Claude Shannon");  
  74.   
  75.         jedis.zadd("hackers"1969"Linus Torvalds");  
  76.   
  77.         jedis.zadd("hackers"1912"Alan Turing");  
  78.   
  79.         setValues = jedis.zrange("hackers"0, -1);  
  80.   
  81.         System.out.println(setValues);  
  82.   
  83.           
  84.   
  85.         //Hash   
  86.   
  87.         System.out.println("==Hash==");  
  88.   
  89.         Map<String, String> pairs = new HashMap<String, String>();  
  90.   
  91.         pairs.put("name""Akshi");  
  92.   
  93.         pairs.put("age""2");  
  94.   
  95.         pairs.put("sex""Female");  
  96.   
  97.         jedis.hmset("kid", pairs);  
  98.   
  99.         values = jedis.hmget("kid"new String[]{"name""age""sex"});  
  100.   
  101.         System.out.println(values);  
  102.   
  103.           
  104.   
  105.         setValues = jedis.hkeys("kid");  
  106.   
  107.         System.out.println(setValues);  
  108.   
  109.         values = jedis.hvals("kid");  
  110.   
  111.         System.out.println(values);  
  112.   
  113.         pairs = jedis.hgetAll("kid");  
  114.   
  115.         System.out.println(pairs);  
  116.   
  117. 然后解决持久化的问题  
  118.   
  119. redis是把所有的数据都放在内存的一种机制,需要经常同步到磁盘保证数据的持久化。数据全放在内存里,真的很担心我的小机器啊~回头数据大了调台式机上把,再大了就。。。  
  120.   
  121. 这个题目比较大些,以后可以单独写几篇,现在急着用,入门么,解决问题先。主要是两种机制,快照(Snapshotting)和AOF(Append-only file)。AOF每次写操作都会写日志,服务器当机的时候从那些日志文件里恢复。不过日志文件会特别大,我的机器肯定承受不起。快照是默认的方式,默认是每小时更新一次,手动调用save, shutdown, slave这些命令也会写日志。测试下save。  
  122.   
  123. 先用客户端查询一下刚才代码插入的东西。  
  124.   
  125. image  
  126.   
  127. 东西还是在内存里的。然后把服务器关了。重新开启,还是有结果。  
  128.   
  129. image  
  130.   
  131. 验证是不是因为时间过太久了自动保存了,用java代码新插入一个值。继续关服务器和重启等操作。  
  132.   
  133. image  
  134.   
  135. 没有值。证明之前的值存在确实是因为自动保存了,接着重新插入(这个如果覆盖是个什么情况呢:貌似直接无情地覆盖了),然后执行下保存。之后关闭,重启。  
  136.   
  137. jedis.set("newkey""Hello New New World!");  
  138. String value = jedis.get("newkey");  
  139. System.out.println(value);  
  140. jedis.save();  
  141.   
  142. image  
  143.   
  144. 可以看到newkey的值了,而且是覆盖后的。save执行后会进行一次日志备份。够用了,先到这里吧。  
  145. 转载于http://blog.csdn.net/samtribiani/article/details/7609322