sql >> データベース >  >> NoSQL >> Redis

RedisTemplateを使用してRedisから設定値を取得する

    要するに

    シリアライザーを構成する必要があります。

    説明

    Redisテンプレートは、キー、値、ハッシュキー/値にシリアライザーを使用します。シリアライザーは、Java入力をRedis内に格納されている表現に変換するために使用されます。何も構成しない場合、シリアライザーはデフォルトでJdkSerializationRedisSerializerになります。 。したがって、キーkeyを要求した場合 Javaコードでは、シリアライザーがそれを

    に変換します。
    "\xac\xed\x00\x05t\x00\x03key"
    

    Spring Data Redisは、これらのバイトをキーとしてRedisにクエリを実行します。

    Spring Data Redisでデータを追加し、redis-cliを使用してクエリを実行できます :

    template.boundSetOps("myKey").add(new Date());
    

    次に、redis-cli

    127.0.0.1:6379> keys *
    1) "\xac\xed\x00\x05t\x00\x05myKey"
    127.0.0.1:6379> SMEMBERS "\xac\xed\x00\x05t\x00\x05myKey"
    1) "\xac\xed\x00\x05sr\x00\x0ejava.util.Datehj\x81\x01KYt\x19\x03\x00\x00xpw\b\x00\x00\x01N\xcf#\x9cHx"
    

    ご覧のとおり、文字列と日付は、Javaでシリアル化されたオブジェクトを表すいくつかのクレイジーなバイトにシリアル化されています。

    あなたのコードは、文字列ベースのキーと値を保存したいことを示唆しています。 StringRedisSerializerを設定するだけです RedisTemplate

    Java構成

    redisTemplate.setKeySerializer(new StringRedisSerializer());
    redisTemplate.setValueSerializer(new StringRedisSerializer());
    

    XML構成

    <bean id="stringSerializer" class="org.springframework.data.redis.serializer.StringRedisSerializer"/>
    
    <bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate" 
        p:connection-factory-ref="jedisConnectionFactory">
        <property name="keySerializer" ref="stringSerializer"/>
        <property name="valueSerializer" ref="stringSerializer"/>
    </bean>
    
    <bean id="jedisConnectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory" 
        p:host-name="myhostname" p:port="6379"/>
    

    コードを実行した後の出力は次のようになります:

    value
    key
    [value]
    

    Spring Data Redisには、さまざまなシステム間でのメッセージ交換を可能にする興味深いシリアライザーがいくつかあります。組み込みのシリアライザーから選択できます

    • JacksonJsonRedisSerializer
    • Jackson2JsonRedisSerializer
    • JdkSerializationRedisSerializer(デフォルト)
    • OxmSerializer
    • GenericToStringSerializer

    または独自に作成します。

    Spring Data Redis1.5.1.RELEASEとjedis2.6.2を使用して、質問の結果を確認しました。 HTH、マーク

    さらに読む:

    • Spring Data Redis:シリアライザー
    • 例を含む要点


    1. mongodbサービスが起動していません

    2. mongodbで重複するドキュメントを削除する最速の方法

    3. nullを保存する場合とMongoDBにキーをまったく保存しない場合

    4. Mongoを起動できません