redisTemplate 操作及相关配置

发布时间:2024-11-25 09:12

烘干机的电源开关应该设置在易触及的位置,便于操作。 #生活常识# #烘干机#

最新推荐文章于 2024-10-16 16:32:35 发布

那些年的代码 于 2020-01-04 08:48:06 发布

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

redisDao封装类-其他dao集成他

 

package com.ffcs.wlan.dao.common;

import javax.annotation.Resource;

import org.springframework.data.redis.core.StringRedisTemplate;

 

/**

* AbstractBaseRedisDao

* @author hugsh

* @version <b>1.0</b>

*/

public abstract class AbstractBaseRedisDao<K, V> {

 

@Resource

protected StringRedisTemplate redisTemplate;

 

public void setRedisTemplate(StringRedisTemplate redisTemplate) {

this.redisTemplate = redisTemplate;

}

}

 批量插入(不关注返回值)

 

@Repository

public class RedisInitDao extends AbstractBaseRedisDao<String, Object> {

 

Logger logger=Logger.getLogger(RedisInitDao.class);

 

/**

* 批量向redis中插入H码:key(tableName:hcode) value(pcode)

* 如果键已存在则返回false,不更新,防止覆盖。使用pipeline批处理方式(不关注返回值)

* @param list 一个map代表一行记录,2个key:hcode & pcode。

* @param tableName redis中key的值为tableName:hcode 对应value值为pcode。

* @return

*/

public boolean addHcode(final List<Map<String, Object>> list,final String tableName) {

boolean result = redisTemplate.execute(new RedisCallback<Boolean>() {

public Boolean doInRedis(RedisConnection connection)

throws DataAccessException {

RedisSerializer<String> serializer = redisTemplate.getStringSerializer();

for (Map<String, Object> map : list) {

byte[] key = serializer.serialize(tableName+":"+map.get("hcode").toString());

byte[] name = serializer.serialize(map.get("pcode").toString());

connection.setNX(key, name);

}

return true;

}

}, false, true);

return result;

}

批量获取(有返回值)

 

/**

* 从redis中获取(获取密码日志) rPop从链表尾部弹出(最早的日志)

* 多线程并发读取日志长度的时候,比如都得到结果是1000条。

* 当多线程每个都 循环1000次 pop弹出 日志的时候,

* 由于是多线程一起pop,所以每个线程获得的数组中都会包含 null 甚至有的全是null

* @return

*/

public List<String> getLogFromRedis() {

 

final RedisSerializer<String> serializer = redisTemplate.getStringSerializer();

//密码日志的长度

final Long pwdLogSize=redisTemplate.opsForList().size("getpwdList");

 

List<Object> pwdLogList=redisTemplate.executePipelined(new RedisCallback<String>() {

@Override

public String doInRedis(RedisConnection conn)

throws DataAccessException {

for (int i=0 ;i<pwdLogSize ;i++) {

byte[] listName = serializer.serialize("getpwdList");

conn.rPop(listName);

}

return null;

}

}, serializer);

 

// 去除结果中的null

ArrayList<String> newList=new ArrayList<String>();

for (Object o : pwdLogList) {

if(o!=null)

newList.add(String.valueOf(o));

}

return newList;

}

基础数据类型工具类(opsForList)

 

/**

* 向redis中插入获取密码日志:leftPush 从链表头部压入

* @param pwdLog 获取密码的日志

* @return

*/

public void addLogIntoRedis(final String pwdLog) {

log.info("insert getpwd log into redis:"+pwdLog);

try {

redisTemplate.opsForList().leftPush("getpwdList", pwdLog);

} catch (Exception e) {

log.error(e.getMessage());

}

}

配置文件

 

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:p="http://www.springframework.org/schema/p"

xmlns:context="http://www.springframework.org/schema/context"

xmlns:tx="http://www.springframework.org/schema/tx"

xmlns:aop="http://www.springframework.org/schema/aop"

xsi:schemaLocation="

http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd

http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

  

<bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig">

<property name="maxTotal" value="${redis.maxTotal}"></property>

<property name="maxIdle" value="${redis.maxIdle}" />

<property name="maxWaitMillis" value="${redis.maxWait}" />

<property name="testOnBorrow" value="${redis.testOnBorrow}" />

</bean>

  

<bean id="connectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory"

p:host-name="${redis.host}" p:port="${redis.port}" p:pool-config-ref="poolConfig"/>

 

<bean id="redisTemplate" class="org.springframework.data.redis.core.StringRedisTemplate">

<property name="connectionFactory" ref="connectionFactory" />

</bean>

 

</beans>

 

<!-- 引入项目配置文件 -->

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">

<property name="locations">

<list>

<value>classpath:redis.properties</value><!-- 引入redis配置文件 -->

<value>classpath:jdbc.properties</value><!-- 定义spring-jdbc配置信息路径 -->

</list>

</property>

</bean>

  

<!-- 自动扫描model,dao和service包(自动注入) -->

<context:component-scan base-package="com.ffcs.wlan.model,com.ffcs.wlan.dao,com.ffcs.wlan.service" />

属性文件

 

# Redis settings

redis.host=192.168.11.100

redis.port=6379

#redis.pass=hugsh

redis.maxIdle=25

redis.maxTotal=250

#redis.maxActive=600 invalid in2.4

redis.maxWait=1000

 

网址:redisTemplate 操作及相关配置 https://www.yuejiaxmz.com/news/view/255356

相关内容

生活垃圾焚烧设施应急处置肺炎疫情医疗废物工作相关问题及解答
厨房安全操作及消防知识.docx
华为公司申请设备控制方法、相关装置及通信系统专利,简化了用户批量控制家居设备的用户操作
化学化工学院关于实验室废弃物处置的操作细则(试行)
家用电器及其操作方法
地板打蜡的常规操作及保养细节
防爆手机使用指南:操作、维护及故障排除
配置基础信息配置设备面板
如何进行配置配网引导
省力装置及清洁工具的制作方法

随便看看