redis关于List类型以及使用场景(抢购秒杀) redis之路(四)

15 篇文章 0 订阅

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继续丰富功能

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: Redis有五种常用类型:字符串(string)、哈希(hash)、列表(list)、集合(set)和有序集合(zset)。其中,字符串类型用于存储字符串或者二进制的数据,哈希类型用于存储键值对,列表类型可以实现队列或栈的功能,集合类型可以实现无序集合的功能,有序集合类型可以实现排序的功能。Redis的特点包括高速读写、支持丰富的数据类型、支持数据持久化、支持快照和AOF两种持久化方式、支持主从复制和哨兵模式、支持Lua脚本等。Redis使用场景包括缓存、分布式锁、计数器、消息队列、实时排行榜等。 ### 回答2: Redis是一种基于内存的高性能键值存储系统,它支持多种数据类型,并具有以下特点和使用场景。 1. 数据类型Redis支持五种主要的数据类型:字符串(string)、哈希(hash)、列表(list)、集合(set)和有序集合(sorted set)。这些数据类型可以满足各种不同的业务需求。 2. 特点: - 高性能:Redis是基于内存的数据库,相比传统的基于磁盘的数据库,具有更快的读写速度。同时,它还支持数据持久化到磁盘,以保证数据的安全性。 - 数据结构丰富:Redis支持多种数据结构,能够满足不同的应用场景,例如哈希可以用于存储和查询用户信息,有序集合可用于排行榜等。 - 发布/订阅模式:Redis支持发布和订阅功能,可以实现消息的实时推送,应用于聊天室、实时数据更新等场景。 - 分布式缓存:Redis可以将数据存储在内存中,减少数据库访问的次数,提高系统性能。同时,Redis还支持数据分片和主从复制,以实现分布式缓存。 - 事务支持:Redis支持事务,可以保证多个操作按顺序执行,同时提供了乐观锁和悲观锁的机制,确保数据的一致性。 3. 使用场景: - 缓存:Redis可以作为缓存系统,减少数据库的访问压力,提高响应速度。 - 计数器和排行榜:Redis的有序集合可以实现快速的计数和排名功能,适用于实时排行榜、热门话题等场景。 - 发布/订阅:Redis的发布/订阅模式可用于消息中间件、实时推送等场景。 - 地理位置应用:Redis的地理位置数据结构可以存储和处理地理坐标,适合于位置服务、附近的人等应用。 - 分布式锁:Redis的分布式锁可以保证多个节点之间对共享资源的互斥访问。 总之,Redis是一种功能强大、性能高效的存储系统,适用于各种不同的数据存储和处理需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值