当前位置: 首页 > 工具软件 > credis for C > 使用案例 >

redis for hash操作简单总结

姜学海
2023-12-01

概述:

Redis是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。 作为Key-value型数据库,Redis也提供了键(Key)和键值(Value)的映射关系。但是,除了常规的数值或字符串,Redis的键值还可以是以下形式之一:
  ●Lists (列表)
  ●Sets (集合)
  ●Sorted sets (有序集合)
  ●Hashes (哈希表)
  
因为在最近的项目中用到的是Hashes,所以这里重点总结一下redis的hash操作。


  1. 命令简介
    redis for hash操作命令参考


    这里我们主要用到了HGET,HGETALL,HKEYS,HSET,HINCRBY。
    HEGT key filed 返回哈希表key中给定域filed的值
    ex:HGET counter:postViewNum 2:1 返回值20
    HGETALL key
    返回哈希表 key 中,所有的域和值。
    HKEYS key
    返回哈希表 key 中的所有域。
    HSET key field value
    将哈希表 key 中的域 field 的值设为 value 。
    HINCRBY key field increment
    为哈希表 key 中的域 field 的值加上增量 increment 。

  2. redis for java api
    因为我们的后台开发语言是java,所以我们需要使用redis提供的java api。
    而我们的后台框架使用的是springMVC所以又用到了spring-data-redis
    核心的spring-redis配置

 <bean
        id="jedisConnectionFactory"
        class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">
        <property name="hostName" value="${redis.hostname}"></property>
        <property name="port" value="${redis.port}"></property>
        <property name="password" value="${redis.password}"></property>
    </bean>

    <!-- redis template definition -->
    <bean
        id="redisTemplate"
        class="org.springframework.data.redis.core.RedisTemplate"
        p:connection-factory-ref="jedisConnectionFactory" >
        <property name="valueSerializer">
            <bean class="org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer" />
        </property>
        <!-- 1.注意这里 -->
        <property name="keySerializer">  
            <bean class="org.springframework.data.redis.serializer.StringRedisSerializer" />  
        </property> 
        </bean>

    <!-- declare Redis Cache Manager -->
    <bean
        id="cacheManager"
        class="org.springframework.data.redis.cache.RedisCacheManager">
        <constructor-arg name="redisOperations" ref="redisTemplate" /> 
   </bean>

使用redis哈希操作需要实例化Redistemplate,通过redistemplate.opsForHash()得到HashOperations

public <HK, HV> HashOperations<K, HK, HV> opsForHash() {
        return new DefaultHashOperations<K, HK, HV>(this);
    }

在这里我们用到的HashOperations接口中的三个方法:

Long increment(H key, HK hashKey, long delta);
为指定key中的field值加上增量delta,相当于hash命令HINCRBY
void put(H key, HK hashKey, HV value);
为指定key中的filed赋值为value,相当于hash命令HSET
Map<> entries(H key);
获取指定key中所有的field,value,相当于hash命令HGETALL

这里只是对于redis使用java语言进行hash操做了一个简单的总结。当然还有很多redis的其他知识并没有涉及到,作者也会不断研究,不断总结

 类似资料: