项目中数据的有序存储同时要求效率高的情况下可以使用队列来处理数据,队列满足先进先出,此处提供的是使用redis缓存来实现消息队列
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">
</span>
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">下面会提供命令和基于Java的方式来操作</span>
命令行:
向队列TT中插入5个值1到5
LPUSH TT 1
LPUSH TT 2
LPUSH TT 3
LPUSH TT 4
LPUSH TT 5
从队列中依次取出,满足现金先出 ,队列操作从左边插入:LPUSH,从右边取出 RPOP来取 ,
Redis Rpop 命令用于移除并返回列表的最后一个元素
127.0.0.1:6379> rpop TT
"1"
127.0.0.1:6379> rpop TT
"2"
127.0.0.1:6379> rpop TT
"3"
127.0.0.1:6379> rpop TT
"4"
127.0.0.1:6379> rpop TT
"5"
127.0.0.1:6379>
下面是Java的方法
插入队列数据
ListOperations<K, V> listOperation = redisTemplateFactory.getRedisTemplate(server).opsForList();
if (null != dataList) {
int size = dataList.size();
for (int i = 0; i < size; i++) {
listOperation.rightPush(key, dataList.get(i)); 此方法是从右边插入
}
}
return listOperation;
取出队列数据
List<V> dataList = new ArrayList<V>();
ListOperations<K, V> listOperation = redisTemplateFactory.getRedisTemplate(server).opsForList();
Long size = listOperation.size(key);
for (int i = 0; i < size; i++) {
dataList.add((V) listOperation.leftPop(key)); 从左边来取出数据
}
return dataList;
解读redis操作队列的命令
LPUSH:从左边插入队列 LPUSH KEY VALUE //LPUSH AA 1
RPUSH:从右边插入队列 RPUSH KEY VALUE //RPUSH AA 1
LPOP :从左边移除并返回列表的最后一个元素
RPOP:从左边一处并返回最后一个元素