spring-data-redis 怎么监听消息队列有消息来了
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring-data-redis 怎么监听消息队列有消息来了相关的知识,希望对你有一定的参考价值。
pom.xml中添加如下配置添加版本配置
<properties>
<jedis.version>2.8.1</jedis.version>
<spring-data-redis.version>1.7.2.RELEASE</spring-data-redis.version>
<commons-pool2.version>2.2</commons-pool2.version>
</properties>
<!-- jedis -->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>$jedis.version</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
<version>$commons-pool2.version</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.data/spring-data-redis -->
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-redis</artifactId>
<version>$spring-data-redis.version</version>
</dependency>
properties文件中添加如下配置
#redis配置
redis.host=192.168.1.150
redis.port=6379
redis.password=redis
redis.timeout=2000
redis.max_total=100
redis.max_idle=20
redis.min_idle=5
redis.test_on_borrow=true
redis.test_on_return=true
applicationContext.xml中添加如下配置:
<!-- Jedis 连接池配置-->
<bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
<property name="maxIdle" value="$redis.max_idle" />
<property name="maxTotal" value="$redis.max_total"/>
<property name="minIdle" value="$redis.min_idle"/>
<property name="testOnBorrow" value="$redis.test_on_borrow" />
<property name="testOnReturn" value="$redis.test_on_return"/>
</bean>
<!-- Jedis ConnectionFactory 数据库连接配置,注意id名称必须为redisConnectionFactory-->
<bean id="redisConnectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">
<property name="hostName" value="$redis.host" />
<property name="port" value="$redis.port" />
<property name="password" value="$redis.password" />
<property name="poolConfig" ref="jedisPoolConfig" />
</bean>
定义消息发送者(生产者):
@Component
public class SendMessage
@Autowired
private RedisTemplate<String, Object> redisTemplate;
public void sendMessage(String channel, Serializable message)
redisTemplate.convertAndSend(channel, message);
定义消息处理者(消费者):
public class ListenMessage
public void handleMessage(Serializable message)
System.out.println(message);
调用:/queue/redis
@Controller
@RequestMapping(value = "/queue")
public class QueueController
@Autowired
SendMessage sendMessage;
@RequestMapping(value="/redis")
public void redis()
for (int i = 0; i <1000; i++)
sendMessage.sendMessage("java",i);
参考技术A 1. redis中保存的是数组(序列化),绝对不要保存SQL,保存SQL的方法很蛋疼 保存数组是为了数据库安全(万一sql语句有错误,任务就直接失败了),灵活度和兼容性2. 服务器后台作一个shell脚本,死循环,不断从队列中取数据,进行处理.如次反复,如果没有数据,也立即尝试取数据---不要担心性能问题,后台单并发请求,不会造成性能问题3. 因为队列中保存的是数组,不存在这个问题
spring-data-redis以List方式存储,怎么删除缓存数据
您好:先回答您最重要的问题:组RAID是必须要把硬盘格式化的,现在没有一种方式可以不删除数据的情况下组建RAID,所以必须备份您的数据。然后下面是建议:1,RAID1没有任何硬盘性能的提高,只能提高数据安全性,因为是镜像,每一块硬盘都有一份数据,所以两块硬盘只有一块的容量。2,你这样只能组RAID0,因为两块硬盘只能做RAID0和1。RAID0能提高读和写的效率,但是数据安全性不高。所以给您的建议是 备份数据,组RAID0.只有这一种方法能提高。希望我的回答对您有帮助! 参考技术A @Overridepublic boolean removeListAll(final K key)
return redisTemplate.execute(new RedisCallback<Boolean>()
public Boolean doInRedis(RedisConnection connection) throws DataAccessException
long res = redisTemplate.opsForList().remove(key, -1, null);
return res >= 0 ? true : false;
);
此方法里就是
redisTemplate.opsForList().remove(key, -1, null);
这句不能实现功能.
在ListOperations接口里,都是pop相关的方法,但是也没看到执行批量操作的方法本回答被提问者采纳 参考技术B 使用remove来试试
以上是关于spring-data-redis 怎么监听消息队列有消息来了的主要内容,如果未能解决你的问题,请参考以下文章
Spring Boot + spring-data-redis
kafka专栏如何做以消息队列为核心的应用程序开发(含视频)