Java:查询列表使用redis缓存

今天学习了同事在程序中使用redis做缓存的代码,是将查询出来的列表放在缓存里,以便于下次查询更加速度。比较常用到,整理一下下。

 

一、在xml文件中配置

<beans profile="redis">
		<bean class="cn.com.jdls.foundation.cache2.plugcache.redis.RedisBean" >
			<property name="jedisConnectionFactory" ref="mhRedisConnectionFactory"></property>
		</bean>
		<bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
			<property name="maxTotal" value="${mh.redis.maxTotal}"></property>
			<property name="maxIdle" value="${mh.redis.maxIdle}"></property>
			<property name="maxWaitMillis" value="${mh.redis.maxWait}"></property>
			<property name="minEvictableIdleTimeMillis" value="300000"></property>
			<property name="numTestsPerEvictionRun" value="3"></property>
			<property name="timeBetweenEvictionRunsMillis" value="60000"></property>
		</bean>
		<bean id="mhRedisConnectionFactory"
			class="cn.com.jdls.foundation.cache2.plugcache.redis.JedisConnectionBeanFactory">
			<property name="redisMode" value="${mh.redis.model}"></property>
			<property name="hostname" value="${mh.redis.ip}"></property>
			<property name="port" value="${mh.redis.port}"></property>
			<property name="password" value="${mh.redis.password}"></property>
			<property name="poolConfig" ref="jedisPoolConfig"></property>
			<property name="mastername" value="${mh.redis.masterName}"></property>
			<property name="sentinelnodes" value="${mh.redis.sentinelnodes}"></property>
		</bean>

二、在程序中注入bean

	private RedisTemplate<String, DbcxBean> redisTemplate;

	@Autowired(required = false)
	private RedisTemplate<String, DbcxBean> getTemplate(JedisConnectionFactory jedisConnectionBeanFactory) {
		RedisTemplate<String, DbcxBean> redisTemplate = new RedisTemplate<String, DbcxBean>();
		redisTemplate.setConnectionFactory(jedisConnectionBeanFactory);
		redisTemplate.setKeySerializer(new StringRedisSerializer());
		redisTemplate.setValueSerializer(new JsonRedisSerializer<DbcxBean>());
		redisTemplate.afterPropertiesSet();
		this.redisTemplate = redisTemplate;
		return redisTemplate;
	}

三、使用redis

//设置key
	String key = "db-gw_:" + swry_dm + "-" + currentSwrysfdm;
	if (!redisTemplate.hasKey(key) || "true".equals(reload)) {
		// 清空数据
		redisTemplate.delete(key);
		List<DbcxBean> list = loadJsgwdb(swry_dm, currentSwrysfdm);
		int jsCount = list.size();
		List<DbcxBean> list2 = loadWsgwdb(sjswjgdm + "%");
		int wsCount = list2.size();
		list.addAll(list2);
		if (list.isEmpty()) {
			page.setTotalCount(0);
			page.setResult(list);
			return;
		}
		Collections.sort(list);
		page.setJsCount(jsCount);
		page.setWsCount(wsCount);
		//放到缓存里
		redisTemplate.opsForList().rightPushAll(key, list);
	}

	//从缓存中查出来
	ListOperations<String, DbcxBean> listOPs = redisTemplate.opsForList();
	page.setResult(listOPs.range(key, page.getStartRow() - 1, page.getEndRow() - 1));
	page.setTotalCount(listOPs.size(key));

 

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值