外卖开发(四)——redis入门以及 设置店铺营业状态

发布于:2024-12-07 ⋅ 阅读:(167) ⋅ 点赞:(0)

一、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来简化操作。

操作步骤:

  1. 导入Spring Data Redis 的maven坐标
  2. 配置Redis数据源
  3. 编写配置类,创建RedisTemplate对象
  4. 通过RedisTemplate对象操作Redis

pom.xml

<dependency> 
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

application.yml

spring: 
	redis: 
		host: localhost
		port: 6379
		password: 123456

添加配置类RedisConfiguration.java

@Configuration
@Slf4j
public class RedisConfiguration {
	@Bean
	public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory){
		log.info("开始创建redis模板类...")
		RedisTemplate redisTemplate = new RedisTemplate();
 		// 设置Key的序列化器,默认为JdkSerializationRedisSerializer
		redisTemplate.setKeySerializer(new StringRedisSerializer());
 		redisTemplate.setConnectionFactory(redisConnectionFactory);

		return redisTemplate;
   }
}

下面就可以使用RedisTemplate对象操作Redis了。

public class TestRedis {
    @Autowired
    private RedisTemplate redisTemplate;

    @Test
    public 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中的操作:

	/**
     * 操作字符串类型
     */
    @Test
    public 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类型数据
     */
    @Test
    public void testHash(){
        //hset hget hdel hkeys hvals
        HashOperations 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的key

        List values = hashOperations.values("100");  //获取所有key=100的所有hash的value

        hashOperations.delete("1000","age");//删除key=1000,hashKey=age的数据
    }

4、List列表操作命令

在这里插入图片描述
在这里插入图片描述

5、set集合操作命令

在这里插入图片描述
在这里插入图片描述

6、zset有序集合操作

在这里插入图片描述
在这里插入图片描述

7、通用命令

在这里插入图片描述

四、利用redis设置店铺状态

接口设计:(不涉及mysql数据库,所以只有controller层代码)

  1. 设置营业状态 (1表示正在营业,0表示打烊)
  2. 获取营业状态

设置营业状态

@Autowired
    private 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);
    }

网站公告

今日签到

点亮在社区的每一天
去签到