JedisConnectionFactory切换redis数据库的配置

 

Redis切换数据库命令

      redis默认有db0~db15 16个数据库。

      redis有没有什么方法使不同的应用程序数据彼此分开同时又存储在相同的实例上呢?就相当于mysql数据库,不同的应用程序数据存储在不同的数据库下。

      redis下,数据库是由一个整数索引标识,而不是由一个数据库名称。默认情况下,一个客户端连接到数据库0。redis配置文件中下面的参数来控制数据库总数:

databases 16 

      Redis Select 命令用于切换到指定的数据库,数据库索引号 index 用数字值指定,以 0 作为起始索引值。可以通过下面的命令来切换到不同的数据库下

select 2

      随后,所有的命令将使用数据库3,直到你明确的切换到另一个数据库下。

      每个数据库都有属于自己的空间,不必担心不同数据库之间的key冲突。

      flushdb命令清除数据,只会清除当前的数据库下的数据,不会影响到其他数据库。 flushall命令会清除这个实例的数据。在执行这个命令前要格外小心。 

Spring的封装类RedisTemplate切换数据库

       JedisConnectionFactory类有以下两个方法设置redis连接的数据库

public int getDatabase()
Returns the index of the database.

public void setDatabase(int index)
Sets the index of the database used by this connection factory. Default is 0.
<!-- 配置数据源 redis -->
    <!-- 配置JedisPoolConfig实例 -->
    <bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig">
        <property name="maxIdle" value="${redis.maxIdle}" />
        <property name="maxTotal" value="${redis.maxActive}" />
        <property name="maxWaitMillis" value="${redis.maxWait}" />
        <property name="testOnBorrow" value="${redis.testOnBorrow}" />
    </bean>

    <!-- 配置JedisConnectionFactory -->
    <bean id="jedisConnectionFactory"
        class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">
        <property name="hostName" value="${redis.host}" />
        <property name="port" value="${redis.port}" />
        <property name="password" value="${redis.AUTH}" /> 
       <!--  <property name="database" value="${redis.dbIndex}" />-->
        <property name="timeout" value="${redis.timeout}"></property>
        <property name="poolConfig" ref="poolConfig" />
    </bean>
    <!--redis操作模版,使用该对象可以操作redis  -->  
    <bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate" >    
        <property name="connectionFactory" ref="jedisConnectionFactory" />    
        <!--如果不配置Serializer,那么存储的时候缺省使用String,如果用User类型存储,那么会提示错误User can't cast to String!!  -->    
        <property name="keySerializer" >    
            <bean class="org.springframework.data.redis.serializer.StringRedisSerializer" />    
        </property>    
        <property name="valueSerializer" >    
            <bean class="org.springframework.data.redis.serializer.StringRedisSerializer" />    
        </property>    
        <property name="hashKeySerializer">    
            <bean class="org.springframework.data.redis.serializer.StringRedisSerializer"/>    
        </property>    
        <property name="hashValueSerializer">    
            <bean class="org.springframework.data.redis.serializer.StringRedisSerializer"/>    
        </property>    
        <!--开启事务报错 资源不够  -->  
        <property name="enableTransactionSupport" value="false"></property>  
    </bean >

//然后在代码里调用setDatabase方法即可切换数据库。切换之后,在切换回常用数据库。否则以后的操作都是针对指定的数据库的。
@Autowired
JedisConnectionFactory jedisConnectionFactory;

jedisConnectionFactory.setDatabase(1);

      

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章