redis List 介绍:
列表类型,可以存储一个有序的字符串列表,常用的操作是向列表两端添加元素,或者获得列表的某一个片段。
列表类型内部使用双向链表实现的,所以向列表两端添加元素的时间复杂度为0(1)获取越接近两端的元素速度就越快。这就意味着即使是一个有几千万个元素的列表,获取头部或尾部的10条记录也是极快的。
常见命令
左边推右边推,取出来
127.0.0.1:6380> LPUSH list1 123
(integer) 1
127.0.0.1:6380> LPUSH list1 123 2 3 5
(integer) 5
127.0.0.1:6380> RPUSH list1 7 8 9
(integer) 8
127.0.0.1:6380> LRANGE list1 0 -1
1) "5"
2) "3"
3) "2"
4) "123"
5) "123"
6) "7"
7) "8"
8) "9"
从左边弹出,从右边弹出
127.0.0.1:6380> lpop list1
"5"
127.0.0.1:6380> RPOP list1
"9"
获取元素个数
127.0.0.1:6380> LLEN list1
(integer) 6
获取列表片段(遍历)
127.0.0.1:6380> LPUSH list2 1 2 3 69 3
(integer) 5
127.0.0.1:6380> LRANGE list2 0 2
1) "3"
2) "69"
3) "3"
插入数据
127.0.0.1:6380> LINSERT list2 after 3 9
(integer) 5
抢购秒杀
@Test
public void testList(){
/**
* 假设有100件iphonex 免费送每人一台
* 指定商品ID,放到redis的队列当中,
* 假设iphonex商品ID为1011
*/
int count=100;
String key="kill:1011";
for(int i=1;i<=count;i++){
//把100个数字寸到该商品的抢购秒杀队列当中去
jedis.rpush(key, i+"");
}//该商品的队列数据已经做完了
}
/**
* 抢购秒杀特价商品
* @requestMapping("/kill.action")
*/
@Test
public void kill(){
String goodsId="1011";
String key="kill:"+goodsId;
System.out.println(jedis.llen(key));
if(jedis.llen(key)!=0){
String xuhao=jedis.lpop(key);
if(xuhao!=null){
System.out.println("抢购成功"+xuhao);
}else{
System.out.println("抢购失败");
}
}
}
这样写是有问题的,没有判断用户,下一篇set继续丰富功能