springMVC整合jedis+redis

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

前两天写过 springMVC+memcached 的整合,我从这个基础上改造一下,把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<String> 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<String> 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<String> 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<String> v = js.hmget("m", new String[]{"username","age"});//        List<String> 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<Object> 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<Object> 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<Object> l = pe.syncAndReturnAll();//        long e = System.currentTimeMillis();//        System.out.println((e-s)/1000.0+"秒");//        js3.disconnect();        

/**************************分布式直连同步调用**************************/        /**         * 分布式直连同步调用         * 线程不安全的,不建议在线程池中使用直连         *///        List<JedisShardInfo> 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("[email protected] SET: " + ((end - start)/1000.0) + " seconds");//        sharding.disconnect();        

/**************************分布式直连同步调用**************************/        /**         * 分布式直连异步调用         * 线程不安全的,不建议在线程池中使用直连         *///         List<JedisShardInfo> 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<Object> results = pipeline.syncAndReturnAll();//            long end = System.currentTimeMillis();//            System.out.println("[email protected] SET: " + ((end - start)/1000.0) + " seconds");//            sharding.disconnect();        

/**************************分布式连接池同步调用**************************/        /**         * 同步方式         *///            List<JedisShardInfo> 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("[email protected] SET: " + ((end - start)/1000.0) + " seconds");////            pool.destroy();        //        

/**************************分布式连接池异步调用**************************/        /**         * 异步方式         *///         List<JedisShardInfo> 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<Object> results = pipeline.syncAndReturnAll();//        long end = System.currentTimeMillis();//        pool.returnResource(one);//        System.out.println("[email protected] SET: " + ((end - start)/1000.0) + " seconds");//        pool.destroy();

/**************************其他**************************/

        /**         * 清空所有         *///        js.flushAll();

 /**         * 销毁链接         *///        js.disconnect();

 }

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

jar包下载:http://pan.baidu.com/s/1jGBVJds

时间: 2024-11-09 06:59:18

springMVC整合jedis+redis的相关文章

springMVC整合jedis+redis,以注解形式使用

前两天写过 springMVC+memcached 的整合,我从这个基础上改造一下,把redis和springmvc整合到一起. 和memcached一样,redis也有java专用的客户端,官网推荐使用的是:jedis. 看了一部分资料,大家推荐使用 spring-data-redis (spring在jedis的基础上又包装了一层),但是实际中感觉写起来有点麻烦,不如原生态的jedis好用. 所以我利用spring的构造注入做了一个springmvc整合jedis的例子. 先了解下redis

springmvc整合redis架构搭建实例

新换环境,又有新东西可以学习了,哈皮! 抽空学习之余看了一下redis,个人对Springmvc的爱是忠贞不渝,所以整理了一下Springmvc整合redis的环境搭建.分享学习. 第一步: 创建maven项目: 实例pom.xml内容如下 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns

Dubbo与Zookeeper、SpringMVC整合和使用(负载均衡、容错)【转】

互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,Dubbo是一个分布式服务框架,在这种情况下诞生的.现在核心业务抽取出来,作为独立的服务,使前端应用能更快速和稳定的响应. 第一:介绍Dubbo背景 大规模服务化之前,应用可能只是通过RMI或Hessian等工具,简单的暴露和引用远程服务,通过配置服务的URL地址进行调用,通过F5等硬件进行负载均衡. (1) 当服务越来越多时,服务URL配置管理变得非常困难,F5硬件负载均衡器的单点压力也

Dubbo与Zookeeper、SpringMVC整合和使用(负载均衡、容错)

互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,Dubbo是一个分布式服务框架,在这种情况下诞生的.现在核心业务抽取出来,作为独立的服务,使前端应用能更快速和稳定的响应. 第一:介绍Dubbo背景 大规模服务化之前,应用可能只是通过RMI或Hessian等工具,简单的暴露和引用远程服务,通过配置服务的URL地址进行调用,通过F5等硬件进行负载均衡. (1) 当服务越来越多时,服务URL配置管理变得非常困难,F5硬件负载均衡器的单点压力也

六:Dubbo与Zookeeper、SpringMvc整合和使用

DUBBO与ZOOKEEPER.SPRINGMVC整合和使用 互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,Dubbo是一个分布式服务框架,在这种情况下诞生的.现在核心业务抽取出来,作为独立的服务,使前端应用能更快速和稳定的响应. 第一:介绍Dubbo背景 Dubbo是一个分布式服务框架,解决了上面的所面对的问题,Dubbo的架构如图所示: 主要核心部件: Remoting: 网络通信框架,实现了 sync-over-async 和

springMVC+Spring+Mybatis+Redis

SPRINGMVC+MYBATIS+SPRING+REDIS 只作参考,以防忘记使用! mybatis的配置文件: <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd&

spring和springMVC整合注解版helloworld

整合的之前需要从官网上下载spring完整的jar包,我下载的是spring-framework-3.2.2.RELEASE.整合步骤如下: 1.在eclipse中新建一个web项目,将下载的spring的jar包拷入lib目录下,但是spring启动的时候依赖一个commons-logging-1.1.jar的jar包,你需要额外的下载. 2.编写web.xml,配置spring的分发器和spring配置文件的位置.具体内容如下: <servlet> <servlet-name>

Dubbo与Zookeeper、SpringMVC整合和使用(负载均衡、容错) 【转】

互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,Dubbo是一个分布式服务框架,在这种情况下诞生的.现在核心业务抽取出来,作为独立的服务,使前端应用能更快速和稳定的响应. 第一:介绍Dubbo背景 大规模服务化之前,应用可能只是通过RMI或Hessian等工具,简单的暴露和引用远程服务,通过配置服务的URL地址进行调用,通过F5等硬件进行负载均衡. (1) 当服务越来越多时,服务URL配置管理变得非常困难,F5硬件负载均衡器的单点压力也

Dubbo与Zookeeper、SpringMVC整合和使用(负载均衡、容错)(转)

互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,Dubbo是一个分布式服务框架,在这种情况下诞生的.现在核心业务抽取出来,作为独立的服务,使前端应用能更快速和稳定的响应. 第一:介绍Dubbo背景 大规模服务化之前,应用可能只是通过RMI或Hessian等工具,简单的暴露和引用远程服务,通过配置服务的URL地址进行调用,通过F5等硬件进行负载均衡. (1) 当服务越来越多时,服务URL配置管理变得非常困难,F5硬件负载均衡器的单点压力也