springboot redis 秒杀完整案例
Posted tenc1239
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了springboot redis 秒杀完整案例相关的知识,希望对你有一定的参考价值。
p12 登录cookie session 页面跳转
p13 分布式session ->redis
p14 redis 安装
p16 springsession 实现分布式session
16.01 加依赖
<!--redis 依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<!--对象池 依赖-->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pools</artifactId>
</dependency>
<!--session 依赖-->
<dependency>
<groupId>org.springframework.session</groupId>
<artifactId>spring-session-data-redis</artifactId>
</dependency>
16.02 配置yml
p17 第二种方法实现分布式session
17.01 加依赖
<!--redis 依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<!--对象池 依赖-->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pools</artifactId>
</dependency>
17.02 配置yml
17.03 redis配置类 实现序列化
@Configuration
public class RedisConfig
@Bean
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactiry redisConnectionFactory)
RedisTemplate<> redisTemplate = new RedisTemplate<>();
// 配置reidsTemplate
// key 序列化
redisTemplate.setKeySerializer(new StringRedisSerializer());
// value 序列化
redisTemplate.setValueSerializer(new GenericJackson2JsonRedisRedisSerializer());
// hash类型 key 序列化
redisTemplate.setHashKeySerializer(new StringRedisSerializer());
// hash类型 value 序列化
redisTemplate.setHashValueSerializer(new GenericJackson2JsonRedisRedisSerializer());
// 注入连接工厂
redisTemplate.setConnectionFactory(redisConnectionFactory);
return redisTemplate;
17.04 使用
// 第一种方法的使用
// request.getSession().setAttribute(ticket, user);
// 序列化使用redistemplate set值
redisTemplate.opsForValue().set("user" + ticket, user);
// get值
// 创建方法 getUerByCookie
User user = (User)redisTemplate.opsForValue().get("user", + userTicket);
// 使用方法
User user = userService.getUerByCookie(ticket, request, reponse);
p18 优化登录 MVC配置类 @EnableWebMvc
Redis案例——商品秒杀,购物车
秒杀案例:
1 <?php 2 header("content-type:text/html;charset=utf-8"); 3 $redis = new redis(); 4 $result = $redis->connect(‘10.10.10.119‘, 6379); 5 $mywatchkey = $redis->get("mywatchkey"); 6 $rob_total = 100; //抢购数量 7 if($mywatchkey<$rob_total){ 8 $redis->watch("mywatchkey"); 9 $redis->multi(); 10 //设置延迟,方便测试效果。 11 sleep(5); 12 //插入抢购数据 13 $redis->hSet("mywatchlist","user_id_".mt_rand(1, 9999),time()); 14 $redis->set("mywatchkey",$mywatchkey+1); 15 $rob_result = $redis->exec(); 16 if($rob_result){ 17 $mywatchlist = $redis->hGetAll("mywatchlist"); 18 echo "抢购成功!<br/>"; 19 echo "剩余数量:".($rob_total-$mywatchkey-1)."<br/>"; 20 echo "用户列表:<pre>"; 21 var_dump($mywatchlist); 22 }else{ 23 echo "手气不好,再抢购!";exit; 24 } 25 }
以上是关于springboot redis 秒杀完整案例的主要内容,如果未能解决你的问题,请参考以下文章