外卖开发(四)——redis入门以及 设置店铺营业状态
- 一、Redis简介
- 1、Redis服务启动与停止
- 2、客户端连接
- 3、redis客户端图形工具
- 二、redis数据类型
- 三、redis常用命令、java操作redis
- 1、Redis的java客户端
- 2、字符串操作
- 3、Hash操作命令
- 4、List列表操作命令
- 5、set集合操作命令
- 6、zset有序集合操作
- 7、通用命令
- 四、利用redis设置店铺状态
一、Redis简介
1、Redis服务启动与停止
服务启动命令,redis默认服务端口号 6379
redis-service.exe redis.windows.conf
2、客户端连接
客户端连接命令
redis-cli.exe
3、redis客户端图形工具
二、redis数据类型
三、redis常用命令、java操作redis
1、Redis的java客户端
Spring Data Redis
是Spring的一部分,对 Redis底层开发包进行了高度封装。在Spring项目中,可以使用Spring Data Redis
来简化操作。
操作步骤:
- 导入Spring Data Redis 的maven坐标
- 配置Redis数据源
- 编写配置类,创建RedisTemplate对象
- 通过RedisTemplate对象操作Redis
pom.xml
<dependency> <groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
application.yml
spring: redis: host: localhostport: 6379password: 123456
添加配置类RedisConfiguration.java
@Configuration
@Slf4j
public class RedisConfiguration {@Beanpublic RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory){log.info("开始创建redis模板类...")RedisTemplate redisTemplate = new RedisTemplate();// 设置Key的序列化器,默认为JdkSerializationRedisSerializerredisTemplate.setKeySerializer(new StringRedisSerializer());redisTemplate.setConnectionFactory(redisConnectionFactory);return redisTemplate;}
}
下面就可以使用RedisTemplate对象
操作Redis
了。
public class TestRedis {@Autowiredprivate RedisTemplate redisTemplate;@Testpublic void testRedis(){System.out.println(redisTemplate);ValueOperations valueOperations = redisTemplate.opsForValue(); //字符串类型操作对象HashOperations hashOperations = redisTemplate.opsForHash(); //hash类型操作对象ListOperations listOperations = redisTemplate.opsForList(); //list类型操作对象SetOperations setOperations = redisTemplate.opsForSet(); //set类型操作对象ZSetOperations zSetOperations = redisTemplate.opsForZSet(); //有序set操作对象}
}
2、字符串操作
Redis在java中的操作:
/*** 操作字符串类型*/@Testpublic void testString(){//set get setex插入数据并设置过期时间 setnx数据不存在时才插入redisTemplate.opsForValue().set("name","lb");String name = (String) redisTemplate.opsForValue().get("name");System.out.println(name);redisTemplate.opsForValue().set("code","1234",3, TimeUnit.MINUTES); //设置过期时间,最后指定时间单位redisTemplate.opsForValue().setIfAbsent("lock","1"); //数据库中是否已存在,未存在时才插入}
3、Hash操作命令
Redis在java中的操作:
/*** 操作hash类型数据*/@Testpublic void testHash(){//hset hget hdel hkeys hvalsHashOperations hashOperations = redisTemplate.opsForHash();hashOperations.put("100","name","lb");hashOperations.put("100","age","23");String name = (String) hashOperations.get("100", "name");System.out.println(name);Set keys = hashOperations.keys("100"); //获取key=100的所有hash的keyList values = hashOperations.values("100"); //获取所有key=100的所有hash的valuehashOperations.delete("1000","age");//删除key=1000,hashKey=age的数据}
4、List列表操作命令
5、set集合操作命令
6、zset有序集合操作
7、通用命令
四、利用redis设置店铺状态
接口设计:(不涉及mysql数据库,所以只有controller层代码)
- 设置营业状态 (1表示正在营业,0表示打烊)
- 获取营业状态
设置营业状态
@Autowiredprivate RedisTemplate redisTemplate;/*** 设置店铺营业状态* @param status* @return*/@PutMapping("/{status}")@ApiOperation("设置店铺营业状态")public Result changeStatus(@PathVariable Integer status){log.info("设置店铺营业状态为:{}",status);redisTemplate.opsForValue().set("SHOP_STATUS",status);return Result.success();}
获取营业状态
/*** 获取店铺营业状态* @return*/@GetMapping("/status")@ApiOperation("获取店铺营业状态")public Result<Integer> getStatus(){Integer shop_status = (Integer) redisTemplate.opsForValue().get("SHOP_STATUS");log.info("获取店铺营业状态:{}",shop_status ==1 ? "营业中" :"打样中");return Result.success(shop_status);}