zoukankan      html  css  js  c++  java
  • 第17章 Redis概述

    17.2.1 在Windows下安装Redis

    https://github.com/ServiceStack/redis-windows/tree/master/downloads

     

    redis-server redis.windows.conf

    17.3.1 在Java程序中使用Redis

    http://mvnrepository.com/artifact/redis.clients/jedis/2.9.0

             Java连接Redis

    package com.ssm.chapter17.jedis;
    import redis.clients.jedis.Jedis;
    import redis.clients.jedis.JedisPool;
    import redis.clients.jedis.JedisPoolConfig;
    
    public class JedisTest {
       public void testJdedis(){
       Jedis jedis = testPool().getResource();
       
       //Jedis jedis = new Jedis("localhost", 6379);//连接Redis
       //jedis.auth("password");//如果需密码
        
       int i =0;//记录操作次数
       try{
       long start = System.currentTimeMillis();// 开始毫秒数
       while(true){
           long end = System.currentTimeMillis();
           if (end-start >= 1000) {// 当大于等于1000毫秒(相当于1秒)时,结束操作
               break;
               
           }
           i++;
           jedis.set("test" + i, i + "");
       }
       } finally{// 关闭连接
           jedis.close();
       }
       System.out.println("redis每秒操作:" + i + "次");//打印1秒内对Redis的操作次数
       
    }
    }

           使用Redis连接池

      private JedisPool testPool(){
        JedisPoolConfig poolCfg = new JedisPoolConfig();
        // 最大空闲数
        poolCfg.setMaxIdle(50);
        // 最大连接数
        poolCfg.setMaxTotal(100);
        // 最大等待毫秒数
        poolCfg.setMaxWaitMillis(20000);
        // 使用配置创建连接池
        JedisPool pool = new JedisPool(poolCfg, "localhost");
        
        // 从连接池中获取单个连接
        Jedis jedis = pool.getResource();
        // 如果需密码
        // jedis.auth("password")
          return pool;
          
      }
    package com.ssm.chapter17.main;
    
    import com.ssm.chapter17.jedis.JedisTest;
    
    public class Chapter17Main {
       public static void main(String[] args) {
           testJedis();
    }
       private static void testJedis() {
           JedisTest jedisTest = new JedisTest();
           jedisTest.testJdedis();
       }
    }

    17.3.2 在Spring中使用Redis

        使用Spring配置JedisPoolConfig对象

        <bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig">
            <!-- 最大空闲数 -->
            <property name="maxIdle" value="50"></property>
            <!-- 最大连接数 -->
            <property name="maxTotal" value="100"></property>
            <!-- 最大等待时间 -->
            <property name="maxWaitMillis" value="20000"></property>
        </bean>

        配置JedisConnectionFactory

        <bean id="connectionFactory" 
            class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">
            <property name="hostName" value="localhost"></property>
            <property name="port" value="6379"></property>
            <!-- <property name="password" ref="password"></property> -->
    
            <property name="poolConfig" ref="poolConfig"></property>
        </bean>

           配置Spring RedisTemplate

    <bean id="jdkSerializationRedisSerializer" 
            class="org.springframework.data.redis.serializer.JdkSerializationRedisSerializer"></bean>
        
        
        <bean id="stringRedisSerializer"
           class="org.springframework.data.redis.serializer.StringRedisSerializer"></bean>
        
        <bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate">
           <property name="connectionFactory" ref="connectionFactory"></property>
           <property name="keySerializer" ref="stringRedisSerializer"></property>
           <property name="valueSerializer" ref="jdkSerializationRedisSerializer"></property>
        </bean>

           使用Redis保存角色类对象

    package com.ssm.chapter17.pojo;
    
    import java.io.Serializable;
    /**
     * 注意,对象要可序列化,需要实现Serializable接口,往往要重写serialVersionUID
     * 
     * @author zhongzh
     *
     */
    public class Role implements Serializable{
    
        /**
         * 
         */
        private static final long serialVersionUID = 6977402643848374753L;
      
        private long id;
        
        private String roleName;
        
        private String note;
    
        public long getId() {
            return id;
        }
    
        public void setId(long id) {
            this.id = id;
        }
    
        public String getRoleName() {
            return roleName;
        }
    
        public void setRoleName(String roleName) {
            this.roleName = roleName;
        }
    
        public String getNote() {
            return note;
        }
    
        public void setNote(String note) {
            this.note = note;
        }
    
        
        
    }   

            使用RedisTemplate保存Role对象

       private static void testSpring() {
           ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
           RedisTemplate redisTemplate = applicationContext.getBean(RedisTemplate.class);
           Role role = new Role();
           role.setId(1L);
           role.setRoleName("role_name_1");
           role.setNote("role_note_1");
           redisTemplate.opsForValue().set("role_1", role);
           Role role1 = (Role) redisTemplate.opsForValue().get("role_1");
           System.out.println(role.getRoleName());
       }

             使用SessionCallback接口

       private static void testSessionCallback(){
           ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
           RedisTemplate redisTemplate = applicationContext.getBean(RedisTemplate.class);
           Role role = new Role();
           role.setId(1);
           role.setRoleName("role_name_1");
           role.setNote("role_note_1");
           SessionCallback<Role> sessionCallback = new SessionCallback<Role>() {
    
            public Role execute(RedisOperations ops)
                    throws DataAccessException {
                // TODO Auto-generated method stub
                ops.boundValueOps("role_1").set(role);
                return (Role) ops.boundValueOps("role_1").get();
            }
        };
        Role savedRole = (Role) redisTemplate.execute(sessionCallback);
        System.out.println(savedRole.getId());
       }

    应改为:

    private static void testSessionCallback(){
           ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
           RedisTemplate redisTemplate = applicationContext.getBean(RedisTemplate.class);
           final Role role = new Role();
           role.setId(1);
           role.setRoleName("role_name_1");
           role.setNote("role_note_1");
           SessionCallback<Role> sessionCallback = new SessionCallback<Role>() {
    
            public Role execute(RedisOperations ops)
                    throws DataAccessException {
                // TODO Auto-generated method stub
                ops.boundValueOps("role_1").set(role);
                return (Role) ops.boundValueOps("role_1").get();
            }
        };
        Role savedRole = (Role) redisTemplate.execute(sessionCallback);
        System.out.println(savedRole.getId());
       }
  • 相关阅读:
    【玩转微信公众平台之二】 账号注冊
    SharePoint 2010 Form Authentication (SQL) based on existing database
    淘宝API学习之道:淘宝API相关了解
    Java中Map的使用
    ROADS+dijkstra的灵活运用+POJ
    Jquery Ajax时 error处理 之 parsererror
    P1719 最大加权矩形
    回文串
    P1816 忠诚
    P1725 琪露诺
  • 原文地址:https://www.cnblogs.com/ZHONGZHENHUA/p/8099358.html
Copyright © 2011-2022 走看看