StringRedisSerializer是用来解决字符串的乱码问题的,首先贴出redis配置文件


<!-- 配置JedisPoolConfig相关参数 -->  
    <bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig">  
        <!-- <property name="maxActive" value="${spring.redis.pool.maxActive}"></property> -->  
        <property name="maxIdle" value="${spring.redis.pool.maxIdle}"></property>  
        <property name="minIdle" value="${spring.redis.pool.minIdle}"></property>  
        <property name="maxWaitMillis" value="${spring.redis.pool.maxWaitMillis}"></property>  
        <property name="testOnBorrow" value="${spring.redis.pool.testOnBorrow}"></property>  
        <property name="testOnReturn" value="${spring.redis.pool.testOnReturn}"></property>  
    </bean>  
      
    <bean id="stringRedisTemplate" class="org.springframework.data.redis.core.StringRedisTemplate">
    	<property name="connectionFactory" ref="redisConnectionFactory"></property>
    </bean>
  
    <!-- 配置RedisTemplate -->  
    <bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate">  
        <property name="connectionFactory" ref="redisConnectionFactory"></property>
        <property name="keySerializer">  
            <bean  
                class="org.springframework.data.redis.serializer.StringRedisSerializer"></bean>  
        </property>  
        <property name="valueSerializer">  
            <bean  
                class="org.springframework.data.redis.serializer.JdkSerializationRedisSerializer"></bean>  
        </property>  
  
        <property name="hashKeySerializer">  
            <bean  
                class="org.springframework.data.redis.serializer.StringRedisSerializer"></bean>  
        </property>
        <property name="hashValueSerializer">  
            <bean  class="org.springframework.data.redis.serializer.JacksonJsonRedisSerializer">  
                <constructor-arg type="java.lang.Class" value="java.lang.Object"></constructor-arg>  
            </bean>  
        </property>  
    </bean>  
  
    <!-- String序列化 -->
    <bean id="stringRedisSerializer" class="org.springframework.data.redis.serializer.StringRedisSerializer"/>
    <bean id="jdkSerializer" class="org.springframework.data.redis.serializer.JdkSerializationRedisSerializer"/>

    <!-- 将监听实现类注册到spring容器中 -->
    <bean id="dataSyncEventListener" class="com.jy.claim.commons.utils.redis.DataSyncEventListener"/>
    <!-- 注册监听器并引入监听实现类 -->
    <bean id="messageListener" class="org.springframework.data.redis.listener.adapter.MessageListenerAdapter">
        <property name="delegate" ref="dataSyncEventListener"/>
        <property name="serializer" ref="stringRedisSerializer"/>
        <!--<property name="serializer" ref="jdkSerializer" />-->
    </bean>

    <!-- 消息监听:其中可以通过method方法自定义—监听实现类中用来处理消息的方法 -->
    <redis:listener-container>
        <!--指定消息处理方法,序列化方式及主题名称-->
        <redis:listener ref="messageListener" method="onMessage" serializer="stringRedisSerializer" topic="channel1.0"/>
        <!--<redis:listener ref="messageListener" method="onMessage" serializer="jdkSerializer" topic="java"/>-->
    </redis:listener-container>

二、声明方式

在使用redisTemplate对redis进行操作是,如果是StringRedisSerializer的序列化方式则可以这样声明

//泛型设置为String,String
@Autowired
    private RedisTemplate<String,String> redisTemplate;

获取数据采用以下形式获取

String channel = stringRedisSerializer.deserialize(message.getChannel());
String messageToUser = stringRedisSerializer.deserialize(message.getBody());