項目中數據的有序存儲同時要求效率高的情況下可以使用隊列來處理數據,隊列滿足先進先出,此處提供的是使用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:從左邊一處並返回最後一個元素