Redis

  • 框架集成了Jedis作为redis客户端,所以直接用即可
  • 不建议自行引用别的客户端,因为这关系到后面的分布式锁

在配置类 重写如下方法

@Override
public JedisConfig jedisConfig() {
    JedisConfig jedisConfig = new JedisConfig();
    // redis所在服务的ip,必填
    jedisConfig.setHost("127.0.0.1");
    // redis端口号,必填
    jedisConfig.setPort(6379);
    // 密码,看redis服务有无密码决定是否必填
    jedisConfig.setPassword(null);
    // 连接哪个库,默认0
    jedisConfig.setDatabase(5);
    // 是否开启ssl,默认false
    jedisConfig.setSsl(false);
    // 超时时间,默认5000
    jedisConfig.setTimeout(1000);
    // 用户,非必填
    jedisConfig.setUser(null);

    /**********以下是连接池配置,属于非必配属性,不配会自动采用默认值************/

    JedisPoolConfig config = new JedisPoolConfig();
    //连接耗尽时是否阻塞, false报异常,ture阻塞直到超时
    config.setBlockWhenExhausted(true);

    //设置的逐出策略类名
    config.setEvictionPolicyClassName("org.apache.commons.pool2.impl.DefaultEvictionPolicy");

    //是否启用pool的jmx管理功能
    config.setJmxEnabled(true);

    //MBean ObjectName = new ObjectName("org.apache.commons.pool2:type=GenericObjectPool,name=" + "pool" + i); 默 认为"pool", JMX不熟,具体不知道是干啥的...默认就好.
    config.setJmxNamePrefix("pool");

    //是否启用后进先出
    config.setLifo(true);

    //最大空闲连接数
    config.setMaxIdle(200);

    //最大连接数
    config.setMaxTotal(2048);

    //获取连接时的最大等待毫秒数(如果设置为阻塞时BlockWhenExhausted),如果超时就抛异常, 小于零:阻塞不确定的时间
    config.setMaxWaitMillis(10000);

    //逐出连接的最小空闲时间
    config.setMinEvictableIdleTimeMillis(-1);

    //最小空闲连接数
    config.setMinIdle(2);

    //每次逐出检查时 逐出的最大数目 如果为负数就是 : 1/abs(n)
    config.setNumTestsPerEvictionRun(2048);

    //对象空闲多久后逐出, 当空闲时间>该值 且 空闲连接>最大空闲数 时直接逐出,不再根据MinEvictableIdleTimeMillis判断 
    config.setSoftMinEvictableIdleTimeMillis(1800000);

    //在获取连接的时候检查有效性
    config.setTestOnBorrow(false);

    //在空闲时检查有效性
    config.setTestWhileIdle(false);

    //逐出扫描的时间间隔(毫秒) 如果为负数,则不运行逐出线程
    config.setTimeBetweenEvictionRunsMillis(-1);

    // 将连接池配置set进去
    jedisConfig.setJedisPoolConfig(config);


    // 这里返回你创建的jedisConfig对象即可
    return jedisConfig;
}

将MarsRedisTemplete注入到MarsBean里面

@MarsBean("testService")
public class TestService {

    @MarsWrite("marsRedisTemplate")
    private MarsRedisTemplate<K,V> marsRedisTemplate;

}
  • 泛型可以不设置,默认为Object,获取数据后需要拆箱

如何操作redis

1. 简单的set, get操作

// 插入一个值
marsRedisTemplate.values().setValue(key,value);

// 获取一个值
marsRedisTemplatee.values().getValue(key);

// 删除一个值
marsRedisTemplate.del(key)
  • key和value不限类型,支持任意可序列化的数据

2. hash操作

// 插入一个数据
marsRedisTemplate.hash().setHash(group,key,value);

// 删除一个数据
marsRedisTemplate.hash().delHash(group,key);

// 获取一个所有此group下的数据
marsRedisTemplate.hash().getAllHash(group);

// 获取一个数据
marsRedisTemplate.hash().getHash(group,key);
  • group必须为String类型
  • key和value不限类型,支持任意可序列化的数据

results matching ""

    No results matching ""