博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
springMVC整合jedis+redis
阅读量:5051 次
发布时间:2019-06-12

本文共 7486 字,大约阅读时间需要 24 分钟。

http://www.cnblogs.com/zhengbn/p/4140549.html 

前两天写过  的整合,我从这个基础上改造一下,把redis和springmvc整合到一起。

和memcached一样,redis也有java专用的客户端,官网推荐使用的是:jedis。

看了一部分资料,大家推荐使用 spring-data-redis (spring在jedis的基础上又包装了一层),但是实际中感觉写起来有点麻烦,不如原生态的jedis好用。

所以我利用spring的构造注入做了一个springmvc整合jedis的例子。

 先了解下redis吧,这些资料袋都是从网上看到的:

Redis使用c语言编写,面向“键/值”对类型数据的分布式NoSql数据库系统。 目前提供五中数据类型     string(字符串)     list(链表)     Hash(哈希)     set(集合)     zset(sorted set 有序集合),有2中编码类型:ziplist,skiplist,当zset中数据较多时,将会被重构为skiplist。     默认端口6379 先写一个Test类,测一下redis的基本数据类型和jedis的一些常用方法。以下的测试方法也都是从网上看到的,只不过为了验证是否准确以及jar包版本的问题,我自己亲自敲了一遍。
 
public class Test {
public static void main(String[] args) {
// Jedis js = new Jedis("127.0.0.1", 6379); // js.set("key001", "redis001"); // String val = js.get("key001"); // System.out.println(val); // js.del("key001"); /**************************测试Redis的数据类型**************************/ /** * list */ // js.rpush("list1", "aaaaaaaaaaaaaaaaaaaaaa"); // js.rpush("list1", "bbbbbbbbbbbbbbbbbbbbbb"); // js.rpush("list1", "ccccccccccccccccccccc"); // js.rpush("list1", "dddddddddddddd"); // List
vals = js.lrange("list1", 0, -1); // for (int i = 0; i < vals.size(); i++) {
// System.out.println(vals.get(i)); // } /** * set 无须唯一 */ // js.sadd("s1", "顺序3"); // js.sadd("s1", "a"); // js.sadd("s1", "b"); // js.sadd("s1", "1"); // js.sadd("s1", "蛤蛤蛤"); // js.sadd("s1", "2"); // js.sadd("s1", "so waht?"); // js.sadd("s1", "%^"); // js.sadd("s1", "顺序1"); // js.sadd("s1", "乱码吗?"); // js.sadd("s1", "顺序2"); // Set
s = js.smembers("s1"); // for (String string : s) {
// System.out.println(s); // } // js.srem("s1", "蛤蛤蛤"); /** * zset(sorted set 有序集合) * 有2中编码类型:ziplist,skiplist,当zset中数据较多时,将会被重构为skiplist */ // js.zadd("zs", 92, "张三1"); // js.zadd("zs", 93, "张三7"); // js.zadd("zs", 94, "张三5"); // js.zadd("zs", 87, "张三9"); // js.zadd("zs", 66, "张三"); // js.zadd("zs", 19, "张三0"); // Set
sets = js.zrange("zs", 0, -1); // for (String string : sets) {
// System.out.println(sets); // } /** * Hash */ // Map m = new HashMap(); // m.put("1", "t"); // m.put("2", "ttt"); // m.put("username", "老王"); // m.put("password", "123456"); // m.put("age", "79"); // m.put("sex", "man"); // js.hmset("m", m); // List
v = js.hmget("m", new String[]{"username","age"}); // List
v1 = js.hmget("m", "sex"); // System.out.println(v); // System.out.println(v1); // js.hdel("m", "username");//删除map中的某一个键的键值对 /**************************事务控制**************************/ /** * 事务方式(Transactions) * 他主要目的是保障,一个client发起的事务中的命令可以连续的执行,而中间不会插入其他client的命令。 * * 我们调用jedis.watch(…)方法来监控key,如果调用后key值发生变化,则整个事务会执行失败。 * 另外,事务中某个操作失败,并不会回滚其他操作。这一点需要注意。 * 还有,我们可以使用discard()方法来取消事务。 */ // Jedis js1 = new Jedis("127.0.0.1", 6379); // long s = System.currentTimeMillis(); // Transaction tx = js1.multi(); // for (int i = 0; i < 99999; i++) {
// tx.set("keyttt"+i, "valttt"+i); // } // List
res= tx.exec(); // long e = System.currentTimeMillis(); // System.out.println((e-s)/1000.0+"秒"); //System.out.println(res); // js1.disconnect(); /**************************管道**************************/ /** * 管道(Pipelining) * 有时,我们需要采用异步方式,一次发送多个指令,不同步等待其返回结果。 * 这样可以取得非常好的执行效率。这就是管道 */ // Jedis js2 = new Jedis("127.0.0.1", 6379); // long s = System.currentTimeMillis(); // Pipeline pe = js2.pipelined(); // for (int i = 0; i < 9999; i++) { // pe.set("keya"+i, "valuea"+i); // } // List l = pe.syncAndReturnAll(); // long e = System.currentTimeMillis(); // System.out.println((e-s)/1000.0+"秒"); // js2.disconnect(); /**************************管道中调用事务**************************/ /** * 管道中调用事务 * 在用法上看,管道中包含了事务 */ // Jedis js3 = new Jedis("127.0.0.1", 6379); // long s = System.currentTimeMillis(); // Pipeline pe = js3.pipelined(); // pe.multi(); // for (int i = 0; i < 9999; i++) { // pe.set("keybb"+i, "valuebb"+i); // } // pe.exec(); // List l = pe.syncAndReturnAll(); // long e = System.currentTimeMillis(); // System.out.println((e-s)/1000.0+"秒"); // js3.disconnect(); /**************************分布式直连同步调用**************************/ /** * 分布式直连同步调用 * 线程不安全的,不建议在线程池中使用直连 */ // List
shards = Arrays.asList( // new JedisShardInfo("localhost",6379), // new JedisShardInfo("localhost",6380)); // ShardedJedis sharding = new ShardedJedis(shards); // long start = System.currentTimeMillis(); // for (int i = 0; i < 100000; i++) { // String result = sharding.set("sn" + i, "n" + i); // } // long end = System.currentTimeMillis(); // System.out.println("Simple@Sharing SET: " + ((end - start)/1000.0) + " seconds"); // sharding.disconnect(); /**************************分布式直连同步调用**************************/ /** * 分布式直连异步调用 * 线程不安全的,不建议在线程池中使用直连 */ // List
shards = Arrays.asList( // new JedisShardInfo("localhost",6379), // new JedisShardInfo("localhost",6380)); // ShardedJedis sharding = new ShardedJedis(shards); // ShardedJedisPipeline pipeline = sharding.pipelined(); // long start = System.currentTimeMillis(); // for (int i = 0; i < 100000; i++) { // pipeline.set("sp" + i, "p" + i); // } // List
results = pipeline.syncAndReturnAll(); // long end = System.currentTimeMillis(); // System.out.println("Pipelined@Sharing SET: " + ((end - start)/1000.0) + " seconds"); // sharding.disconnect(); /**************************分布式连接池同步调用**************************/ /** * 同步方式 */ // List
shards = Arrays.asList( // new JedisShardInfo("localhost",6379), // new JedisShardInfo("localhost",6380)); // // ShardedJedisPool pool = new ShardedJedisPool(new JedisPoolConfig(), shards); // // ShardedJedis one = pool.getResource(); // // long start = System.currentTimeMillis(); // for (int i = 0; i < 100000; i++) { // String result = one.set("spn" + i, "n" + i); // } // long end = System.currentTimeMillis(); // pool.returnResource(one); // System.out.println("Simple@Pool SET: " + ((end - start)/1000.0) + " seconds"); // // pool.destroy(); // /**************************分布式连接池异步调用**************************/ /** * 异步方式 */ // List
shards = Arrays.asList( // new JedisShardInfo("localhost",6379), // new JedisShardInfo("localhost",6380)); // // ShardedJedisPool pool = new ShardedJedisPool(new JedisPoolConfig(), shards); // // ShardedJedis one = pool.getResource(); // // ShardedJedisPipeline pipeline = one.pipelined(); // // long start = System.currentTimeMillis(); // for (int i = 0; i < 100000; i++) { // pipeline.set("sppn" + i, "n" + i); // } // List
results = pipeline.syncAndReturnAll(); // long end = System.currentTimeMillis(); // pool.returnResource(one); // System.out.println("Pipelined@Pool SET: " + ((end - start)/1000.0) + " seconds"); // pool.destroy(); /**************************其他**************************/ /** * 清空所有 */ // js.flushAll(); /** * 销毁链接 */ // js.disconnect(); }

注意jedis是redis的一个客户端,是个jar包,不要搞混了……

 

 

 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/wangdaijun/p/5439425.html

你可能感兴趣的文章
RTSP流媒体数据传输的两种方式(TCP和UDP)
查看>>
大数n!
查看>>
LPC-LINK 2 LPC4370 简化线路图
查看>>
【模板】关于vector的lower_bound和upper_bound以及vector基本用法 STL
查看>>
linux c动态库编译好了,不能用。有些方法报(undefined reference)错误。
查看>>
在CentOS 6.5 中安装JDK 1.7 + Eclipse并配置opencv的java开发环境(二)
查看>>
docker 安装与卸载
查看>>
“搜狐微博零估值”用意何在
查看>>
如何区分 OpenStack Neutron Extension 和 Plugin
查看>>
简述人工智能发展的先决条件
查看>>
AWS API 2.0签名规范
查看>>
MVC3 系统列讲解
查看>>
很开心
查看>>
Codeforces 388 D. Fox and Perfect Sets
查看>>
货币计算程序
查看>>
在析构函数中关闭 SqlConnection 连接
查看>>
对于C#中的一些点滴你真的理解了吗?
查看>>
结对编程项目--电梯调度
查看>>
ACM International Collegiate Programming Contest World Finals 2013
查看>>
【PAT-一道看着很难的水题】L2-023. 图着色问题
查看>>