工作中需要用到固定大小的队列,用redis列表模拟一个:
key = "hw:" + str(sender_id) if RedisClient.llen(key) <60: RedisClient.lpush(key,msg_id) else: RedisClient.rpop(key) #删除末尾 RedisClient.lpush(key,msg_id) #队列头添加数据用LRANGE查看队列所有元素,-1表示列表的最后一个元素
127.0.0.1:6379> LRANGE hw:48821 0 -1
1) "150074"
2) "150065"
3) "150072"
4) "150076"
5) "150071"
6) "150048"
7) "150039"
还可以用LTRIM对队列进行裁剪:
127.0.0.1:6379> LTRIM hw:48821 0 5
OK
127.0.0.1:6379> LRANGE hw:48821 0 -1
1) "150074"
2) "150065"
3) "150072"
4) "150076"
5) "150071"
6) "150048"
127.0.0.1:6379> LINDEX hw:48821 5 #返回指定下标
"150048"
127.0.0.1:6379> LINSERT hw:48821 after 150048 150039 # 指定元素后面或者前面插入值
(integer) 7
127.0.0.1:6379> LRANGE hw:48821 0 -1
1) "150074"
2) "150065"
3) "150072"
4) "150076"
5) "150071"
6) "150048"
7) "150039"