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);